Notas de caminhada aleatória (2)

(1) Matriz de transição de probabilidade

        O modelo de matriz de transição de probabilidade para caminhadas aleatórias é uma maneira de descrever caminhadas aleatórias discretas. Neste modelo, podemos usar uma matriz para representar as probabilidades de transição de um estado para outro. Suponha que temos N estados discretos, então a matriz de transição de probabilidade será uma matriz N×N onde o (i, j)ésimo elemento representa a probabilidade de transição do estado i para o estado j.

Vamos ilustrar o modelo de matriz de transição probabilística com um exemplo concreto. Considere um passeio aleatório discreto 1D simples, onde os objetos podem se mover para a esquerda ou para a direita uma unidade de distância por vez. Suponha que o estado inicial seja 0 e que, a cada passo, o objeto tenha uma probabilidade igual (0,5) de se mover para a esquerda ou para a direita.

Neste exemplo, a matriz de transição de probabilidade é a seguinte:

      | 0.5  0.5 |
P =   |         |
      | 0.5  0.5 |

Entre eles, P é a matriz de transição de probabilidade. A primeira linha indica a probabilidade de transição para os estados 0 e 1 na próxima etapa quando o estado atual é 0; a segunda linha indica a probabilidade de transição para os estados 0 e 1 na próxima passo quando o estado atual é 1.

Para entender o papel da matriz de transição de probabilidade, podemos usá-la para calcular a distribuição de estado de um passeio aleatório após um número arbitrário de etapas. Assumindo que o estado inicial é o estado 0, queremos saber a probabilidade de que o objeto esteja em cada estado após a n-ésima etapa.

Distribuição inicial do estado:

X_0 = [1, 0]

A distribuição do estado após a n-ésima etapa:

X_n = X_0 * P^n

Dentre eles, ^representa a operação de multiplicação da matriz. Por cálculo X_n, podemos obter a distribuição de probabilidade do objeto em cada estado após a n-ésima etapa.

Vale a pena notar que, em alguns casos, a exponenciação da matriz de transição de probabilidade pode se tornar muito complicada, especialmente no caso de um grande espaço de estados ou um grande número de passos. Em aplicações práticas, pode ser necessário usar métodos numéricos ou métodos aproximados para calcular a distribuição de estado. Ao mesmo tempo, para uma matriz de transição de probabilidade específica, o processamento matemático, como a decomposição de valores próprios, pode ser necessário para obter informações mais detalhadas.

Resumindo, o modelo de matriz de transição probabilística é um método simples e útil para descrever as probabilidades de transição de um passeio aleatório discreto, ajudando-nos a entender o comportamento de longo prazo e o estado estacionário do passeio aleatório.

(2) Regressão e acessibilidade infinita

Em passeios aleatórios unidimensionais, a regressão e a acessibilidade infinita são propriedades importantes. Regressão significa que, dado um número infinito de passos, o passeio aleatório quase certamente retornará à posição inicial. Alcançabilidade infinita significa que se o valor esperado do tamanho do passo for maior que 0 e a variância for finita, o passeio aleatório é infinitamente alcançável, ou seja, com um número infinito de passos, o passeio aleatório quase certamente atingirá qualquer posição.

Aqui está um exemplo de código de um passeio aleatório 1D simples, onde demonstramos as propriedades de regressão e acessibilidade infinita:

import numpy as np
import matplotlib.pyplot as plt

def random_walk(steps):
    position = 0
    position_list = [position]
    
    for _ in range(steps):
        # 生成随机步长,可以用不同的分布来表示不同的随机行走模型
        step = np.random.choice([-1, 1])
        
        # 更新位置
        position += step
        position_list.append(position)
    
    return position_list

def simulate_random_walk(num_walks, num_steps):
    final_positions = []
    
    for _ in range(num_walks):
        random_walk_path = random_walk(num_steps)
        final_positions.append(random_walk_path[-1])
    
    return final_positions

# 模拟1000次随机游走,每次1000步
num_walks = 1000
num_steps = 1000

final_positions = simulate_random_walk(num_walks, num_steps)

# 绘制随机游走的最终位置分布
plt.hist(final_positions, bins=30, density=True, alpha=0.7, color='blue', edgecolor='black')
plt.xlabel("最终位置")
plt.ylabel("频率")
plt.title("随机游走的最终位置分布")
plt.show()

# 计算回归性和无穷可达性
num_return_to_origin = np.sum(np.array(final_positions) == 0)
proportion_return_to_origin = num_return_to_origin / num_walks
print(f"回归性:在 {num_walks} 次随机游走中,回到原点的次数为 {num_return_to_origin},比例为 {proportion_return_to_origin:.3f}")

min_position = np.min(final_positions)
max_position = np.max(final_positions)
print(f"无穷可达性:随机游走最终位置范围从 {min_position} 到 {max_position}")

Neste código, simulamos 1.000 passeios aleatórios 1D, cada um com 1.000 passos. Em seguida, calculamos as propriedades de regressão e alcance infinito. A regressão refere-se ao número e proporção de retorno à origem em 1000 caminhadas aleatórias. Alcançabilidade infinita refere-se ao intervalo de posições finais, do mínimo ao máximo.

Depois de executar o código, você verá a distribuição das posições finais do passeio aleatório e exibirá os resultados da regressão e alcançabilidade infinita. Os resultados podem variar ligeiramente de execução para execução devido à aleatoriedade, mas a natureza da regressão e a acessibilidade infinita devem ser esperadas.

(3) Análise estatística

        A análise estatística de passeios aleatórios pode nos ajudar a entender as propriedades e características dos passeios aleatórios, como o cálculo da média, variância, função de autocorrelação, etc. O seguinte é um exemplo de código de análise estatística de passeio aleatório unidimensional simples:

import numpy as np
import matplotlib.pyplot as plt

def random_walk(steps):
    position = 0
    position_list = [position]
    
    for _ in range(steps):
        # 生成随机步长,可以用不同的分布来表示不同的随机行走模型
        step = np.random.choice([-1, 1])
        
        # 更新位置
        position += step
        position_list.append(position)
    
    return position_list

def simulate_random_walk(num_walks, num_steps):
    final_positions = []
    
    for _ in range(num_walks):
        random_walk_path = random_walk(num_steps)
        final_positions.append(random_walk_path[-1])
    
    return final_positions

# 模拟1000次随机游走,每次1000步
num_walks = 1000
num_steps = 1000

final_positions = simulate_random_walk(num_walks, num_steps)

# 统计分析
mean_position = np.mean(final_positions)
variance_position = np.var(final_positions)
autocorrelation = np.correlate(final_positions, final_positions, mode='full')

# 绘制随机游走的最终位置分布
plt.hist(final_positions, bins=30, density=True, alpha=0.7, color='blue', edgecolor='black')
plt.xlabel("最终位置")
plt.ylabel("频率")
plt.title("随机游走的最终位置分布")
plt.show()

print(f"平均位置:{mean_position:.3f}")
print(f"位置方差:{variance_position:.3f}")
print("自相关函数:", autocorrelation[num_steps-1:])

Neste código, simulamos 1.000 passeios aleatórios 1D, cada um com 1.000 passos. Em seguida, calculamos a média, a variância e a função de autocorrelação da posição final.

Depois de executar o código, você verá um gráfico da distribuição de localização final do passeio aleatório e exibirá os resultados da localização média, variação de localização e função de autocorrelação. Os resultados podem variar ligeiramente de execução para execução devido à aleatoriedade, mas as características estatísticas da posição média, variação da posição e função de autocorrelação devem ser as esperadas. A função de autocorrelação mostra a autocorrelação do passeio aleatório em diferentes etapas. À medida que o número de etapas aumenta, a autocorrelação enfraquece gradualmente.

(4) Passeio aleatório fracionário

        Passeios aleatórios de ordem fracionária estendem o conceito de passeios aleatórios para casos de ordens não inteiras. No passeio aleatório fracionário, o tamanho do passo não é mais um inteiro discreto, mas um número real contínuo e possui as características de ordem fracionária. Isso faz com que o passeio aleatório fracionário descreva melhor o processo de difusão em alguns meios complexos. A seguir está um código de exemplo para um passeio aleatório fracionário unidimensional simples:

import numpy as np
import matplotlib.pyplot as plt

def fractional_random_walk(steps, alpha):
    position = 0
    position_list = [position]
    
    for _ in range(steps):
        # 生成分数阶随机步长,这里采用标准Cauchy分布作为步长分布
        step = np.random.standard_cauchy()
        
        # 更新位置
        position += step
        position_list.append(position)
    
    return position_list

# 模拟分数阶随机游走,每次游走1000步,分数阶参数为0.8
num_steps = 1000
alpha = 0.8

fractional_random_walk_path = fractional_random_walk(num_steps, alpha)

# 绘制分数阶随机游走路径
plt.plot(fractional_random_walk_path)
plt.xlabel("步数")
plt.ylabel("位置")
plt.title("一维分数阶随机游走路径 (alpha=0.8)")
plt.show()

Neste código, definimos uma fractional_random_walk(steps, alpha)função para simular um caminho aleatório fracionário 1D. O tamanho do passo adota a distribuição de Cauchy padrão como a distribuição de tamanho de passo aleatório de ordem fracionária, onde o alphaparâmetro representa o parâmetro de ordem fracionária, que determina o peso da cauda e as características de cauda longa da distribuição do tamanho do passo.

Depois de executar o código, você verá o gráfico de caminho da caminhada aleatória fracionada, onde o eixo x representa o número de etapas e o eixo y representa a posição. Os caminhos dos passeios aleatórios fracionários são mais complexos e de cauda mais longa do que os passeios aleatórios comuns.

Acho que você gosta

Origin blog.csdn.net/Aresiii/article/details/131941017
Recomendado
Clasificación