Por que esperamos que o valor de $\chi^2$ seja próximo ao NGL ($\nu$)?

Dedução

Aqui vou apresentar a dedução formal de que o valor esperado $\langle\chi^2\rangle$ de uma variável aleatória com distribuição qui-quadrado é igual ao seu número de graus de liberdade, $\nu$.

1. Definição da Variável Aleatória Qui-Quadrado

Para começar, vamos definir o que é uma variável aleatória qui-quadrado. Vamos chamá-la de $X$. Assumimos que $X$ segue uma distribuição qui-quadrado com $\nu$ graus de liberdade, o que denotamos por $X \sim \chi^2(\nu)$. Por definição, constrói-se $X$ a partir da soma dos quadrados de $\nu$ variáveis aleatórias independentes, $Z_1, Z_2, \ldots, Z_\nu$, onde cada uma delas segue a distribuição normal padrão, $Z_i \sim N(0, 1)$.

A expressão matemática para $X$ é:

$$ X = \sum_{i=1}^{\nu} Z_i^2 $$

2. Cálculo do Valor Esperado

Agora, o objetivo é encontrar o valor esperado de $X$. Para isso, aplico o operador de valor esperado, que denoto por $\langle \cdot \rangle$. Uma propriedade fundamental é a \textbf{linearidade da esperança}, que me permite dizer que a esperança de uma soma é a soma das esperanças.

$$ \langle X \rangle = \left\langle\sum_{i=1}^{\nu} Z_i^2\right\rangle = \sum_{i=1}^{\nu} \langle Z_i^2 \rangle $$

Como podemos ver, o problema se resume a determinar o valor de $\langle Z_i^2 \rangle$.

3. Relação com a Variância

Para nos ajudar, vamos recorrer à definição de variância. Para qualquer variável aleatória $Y$, sabemos que a variância é:

$$ \text{Var}(Y) = \langle Y^2 \rangle - \langle Y \rangle^2 $$

Rearranjando esta equação, é possível isolar o termo que interessa, $\langle Y^2 \rangle$:

$$ \langle Y^2 \rangle = \text{Var}(Y) + \langle Y \rangle^2 $$

4. Propriedades da Distribuição Normal Padrão

Um ponto crucial da dedução são as propriedades das variáveis $Z_i$. Como definimos que elas seguem uma distribuição normal padrão ($Z_i \sim N(0, 1)$), conhecemos sua média e variância:

$$ \langle Z_i \rangle = 0 $$

$$ \text{Var}(Z_i) = 1 $$

5. Determinação de $\langle Z_i^2 \rangle$

Com isso em mãos, agora pode-se substituir os valores da média e da variância da $N(0,1)$ na equação que relacionamos com a variância:

$$ \langle Z_i^2 \rangle = \text{Var}(Z_i) + \langle Z_i \rangle^2 = 1 + (0)^2 = 1 $$

Este passo mostra que o valor esperado do quadrado de uma variável normal padrão é exatamente 1.

6. Conclusão da Dedução

Agora na etapa final. Substitui-se o resultado $\langle Z_i^2 \rangle=1$ de volta na expressão para $\langle X \rangle$:

$$ \langle X \rangle = \sum_{i=1}^{\nu} (1) = \underbrace{1 + 1 + \dots + 1}_{\nu \text{ vezes}} = \nu $$

E assim, chega-se no resultado esperado:

$$ \boxed{\langle\chi^2(\nu)\rangle = \nu} $$


Simulação para demonstração

O código que geramos é um exemplo clássico de uma simulação de Toy Monte Carlo, uma ferramenta indispensável na física e em muitas outras ciências. O objetivo principal deste script é verificar empiricamente as propriedades teóricas da distribuição qui-quadrado ($\chi^2$) que deduzimos matematicamente, especificamente que seu valor esperado (média) é ⟨χ2⟩=ν e sua variância é Var(χ2)=2ν.

Desta vez, além de confiarmos apenas na dedução abstrata, estamos simulando um grande número de "experimentos numéricos" para ver se os resultados convergem para o que a teoria prevê.

Resultados

Iniciando simulação para ν = 10 com 100000 experimentos...
Simulação concluída.

--- Comparação de Resultados ---
Média   (Teórica): 10.0000
Média (Simulada): 9.9973

Variância   (Teórica): 20.0000
Variância (Simulada): 20.0966
---------------------------------
Toy Monte Carlo

Vamos detalhar o funcionamento do código passo a passo.

1. Configuração dos Parâmetros

nu = 5
n_simulacoes = 100000
  • nu: Esta variável representa o número de graus de liberdade. É o parâmetro fundamental que define a forma e as propriedades da distribuição χ2. No nosso caso, estamos simulando uma distribuição χ2 com 5 graus de liberdade.

  • n_simulacoes: Este é o número de "experimentos" que vamos realizar. A base das simulações de Monte Carlo é a Lei dos Grandes Números: quanto mais experimentos realizarmos, mais próximos nossos resultados médios estarão dos valores teóricos verdadeiros. Um valor de 100.000 garante uma excelente precisão estatística.

2. O Processo de Simulação (O "Loop")

O coração do código é o laço for, que executa o mesmo procedimento n_simulacoes vezes. Cada iteração do laço simula a criação de uma única amostra de uma variável aleatória $\chi^2(\nu)$:

# 1. Gerar 'nu' amostras de uma distribuição normal padrão N(0, 1)
z = np.random.randn(nu)

# 2. Elevar ao quadrado cada amostra
z_quadrado = z**2

# 3. Somar os quadrados para obter uma amostra da distribuição chi-quadrado
chi2_amostra = np.sum(z_quadrado)

Este bloco de três linhas é a implementação direta da definição matemática da distribuição χ2:

  1. Primeiro, geramos ν (neste caso, 5) números aleatórios a partir de uma distribuição normal padrão (média 0, variância 1). Cada um desses números representa uma variável $Z_i$​.

  2. Em seguida, cada um desses números é elevado ao quadrado ($Z_i^2$​).

  3. Finalmente, eles são somados $\sum_{i=1}^\nu Z_i^2.$

O resultado, chi2_amostra, é um único número que pertence à distribuição $\chi^2$ com $\nu=5$. Este valor é então armazenado na lista chi2_valores.

3. Análise e Comparação

Após o término do laço, a lista chi2_valores contém 100.000 amostras que, coletivamente, representam a distribuição $\chi^2(10)$. O código então calcula:

media_simulada = np.mean(chi2_valores)
var_simulada = np.var(chi2_valores)
  • media_simulada: A média de todos os valores gerados. Esperamos que este número seja muito próximo de $\nu=10$.

  • var_simulada: A variância de todos os valores gerados. Esperamos que este número seja muito próximo de $2\nu=20$.

O script imprime esses valores ao lado dos valores teóricos para uma comparação direta e quantitativa.

4. Visualização dos Dados

A parte final do código usa a biblioteca matplotlib para criar uma representação visual dos nossos resultados:

  • Histograma: O comando ax.hist(...) plota um histograma dos 100.000 valores de $\chi^2$ que geramos. Ao normalizar a área do histograma (density=True), ele se torna uma aproximação visual da Função Densidade de Probabilidade (PDF) da distribuição $\chi^2(10)$. A forma do histograma (assimétrica, com uma cauda longa à direita) é característica desta distribuição para poucos graus de liberdade.

  • Linhas Verticais: As duas linhas verticais (ax.axvline(...)) são uma ajuda visual crucial. Elas marcam a posição da média teórica ($\nu$) e da média obtida na simulação. A sobreposição quase perfeita dessas duas linhas demonstra visualmente o sucesso da simulação em reproduzir o resultado teórico.

Em resumo, o código é uma ponte entre a teoria estatística e a prática computacional. Ele não "prova" a matemática, mas fornece uma evidência numérica esmagadora de que as deduções para a média e a variância da distribuição qui-quadrado estão corretas, visualizando a forma da distribuição no processo.


Código

#@title Simulação Chi-Quadrado com plot 10x
import numpy as np
import matplotlib.pyplot as plt

# --- Parâmetros da Simulação ---
nu = 10  # Número de graus de liberdade (ν)
n_simulacoes = 100000  # Número de experimentos a serem simulados

# Lista para armazenar os valores de chi-quadrado calculados
chi2_valores = []

print(f"Iniciando simulação para ν = {nu} com {n_simulacoes} experimentos...")

# --- Loop Principal da Simulação ---
for _ in range(n_simulacoes):
    # 1. Gerar 'nu' amostras de uma distribuição normal padrão N(0, 1)
    z = np.random.randn(nu)

    # 2. Elevar ao quadrado cada amostra
    z_quadrado = z**2

    # 3. Somar os quadrados para obter uma amostra da distribuição chi-quadrado
    chi2_amostra = np.sum(z_quadrado)

    # 4. Armazenar o resultado
    chi2_valores.append(chi2_amostra)

print("Simulação concluída.")

# Converter a lista para um array numpy para cálculos eficientes
chi2_valores = np.array(chi2_valores)

# --- Cálculo dos Resultados ---
# Média e variância a partir dos dados simulados
media_simulada = np.mean(chi2_valores)
var_simulada = np.var(chi2_valores)

# Valores teóricos esperados
media_teorica = nu
var_teorica = 2 * nu

# --- Apresentação dos Resultados ---
print("\n--- Comparação de Resultados ---")
print(f"Média   (Teórica): {media_teorica:.4f}")
print(f"Média (Simulada): {media_simulada:.4f}\n")
print(f"Variância   (Teórica): {var_teorica:.4f}")
print(f"Variância (Simulada): {var_simulada:.4f}")
print("---------------------------------")

# --- Visualização dos Dados ---
plt.style.use('seaborn-v0_8-whitegrid')
fig, ax = plt.subplots(figsize=(100, 60)) # Aumenta o tamanho do plot em 10x

# Histograma dos valores de chi-quadrado
ax.hist(chi2_valores, bins=50, density=True, alpha=0.7, label=r'Distribuição Simulada $\chi^2$')

# Linhas verticais para as médias
ax.axvline(media_teorica, color='red', linestyle='--', linewidth=20, label=rf'Média Teórica ($\nu={nu}$)') # Adiciona label
ax.axvline(media_simulada, color='black', linestyle=':', linewidth=20, label=rf'Média Simulada ({media_simulada:.2f})') # Adiciona label

# Configurações do gráfico
ax.set_title(rf'Distribuição $\chi^2$ Simulada com $\nu={nu}$ Graus de Liberdade', fontsize=16*10) # Aumenta o tamanho da fonte do título em 10x
ax.set_xlabel(r'Valor de $\chi^2$', fontsize=12*10) # Aumenta o tamanho da fonte do eixo x em 10x
ax.set_ylabel('Densidade de Probabilidade', fontsize=12*10) # Aumenta o tamanho da fonte do eixo y em 10x
ax.legend(fontsize=10*10, loc='upper right') # Aumenta o tamanho da fonte da legenda em 10x e coloca no canto superior direito
ax.grid(True, linewidth=10) # Aumenta a largura das linhas de grid em 10x


plt.tight_layout()
plt.show()
Anterior
Anterior

Inovando na Detecção de Luz IR: Meu Projeto de Mestrado com Fotodetectores em GaAs

Próximo
Próximo

MathJax no <footer> $\int x dx$