실험에서 제곱 분포를 확인하다

15507 단어 통계학

케제곱 분포


이것은 매우 이해하기 쉽다.
確率変数 X_1,X_2,\cdots,X_n
​
  が\\
互いに独立に標準正規分布 N(0,1)に従うとき,\\
X=X_1^2+X_2^2+\cdots +X_n^2
​
  は自由度 n のカイ二乗分布に従う

이번에는 n개의 정적 분포에 부합되는 변수를 준비하여 제곱과 직사각형을 제작한다.

절차.

import numpy as np
import matplotlib.pyplot as plt

from scipy.stats import norm
import matplotlib.pyplot as plt




n = 5
sample = 1000000


a = np.random.normal(
    loc   = 0,      # 平均
    scale = 1,      # 標準偏差
    size  = (sample ,n),# 出力配列のサイズ
)

b = np.power(a,2)     #要素二乗
b = np.sum(b,axis =1) #行で和を取る


plt.hist(b,bins=100)
plt.xlim(-3,20)


카이제곱 분포를 잘 그렸다.이것은 자유도 5의 제곱 분포다.

자유도 n의 멱 분포


1



2



3



4



5



10



위에서 말한 것을 종합하여 도표를 만들면

나는 네가 조금씩 오른쪽으로 돌고 있다는 것을 안다.
import numpy as np
import matplotlib.pyplot as plt

from scipy.stats import norm
import matplotlib.pyplot as plt



ans = []

for i in range(1,10,1):
    print(i)

    n = i
    sample = 1000000


    a = np.random.normal(
        loc   = 0,      # 平均
        scale = 1,      # 標準偏差
        size  = (sample ,n),# 出力配列のサイズ
    )

    """
    分散  平均0
    """
    b = a - 0
    b = np.power(b,2)     #要素二乗
    b = np.sum(b,axis =1) #行で和を取る
    ans.append(b)


fig, ax = plt.subplots()

for i in range(1,10,1):
    ax.hist(ans[i-1],bins=100,alpha = 0.5,label = str(i))

ax.legend()
ax.set_xlim(-3,20)

plt.show()

자유도


현재 표준 정태분포 N(0,1)에서 샘플(표본그룹)을 가져왔습니다.
전체적으로 표준정태분포 N(0,1)으로 판단한 것이다.
평균적으로 0으로 여겨지기 때문에 샘플의 분산
(x_1 - 0)^2 + \cdots (x_n - 0)^2 \\
=x_1^2 +\cdots +x_n^2
네.
여기에 가령 견본(표본그룹)이 전체적인 평균치를 모른다고 가정한다.
따라서 분산도를 계산하기 위해 샘플의 평균치를 사용하기로 했다.(이것은 n-1의 유래)
실제로 아까의 프로그램을 고쳐 보아라.

import numpy as np
import matplotlib.pyplot as plt

from scipy.stats import norm
import matplotlib.pyplot as plt




n = 3
sample = 1000000


a = np.random.normal(
    loc   = 0,      # 平均
    scale = 1,      # 標準偏差
    size  = (sample ,n),# 出力配列のサイズ
)

"""
分散  平均0
"""
b = a - 0
b = np.power(b,2)     #要素二乗
b = np.sum(b,axis =1) #行で和を取る


"""
サンプル分散 平均:サンプル平均
"""
average = np.mean(a,axis = 1,keepdims=True)  #サンプル平均を計算
b2 = a - average         #サンプル平均を引く

b2 = np.power(b2,2)     #要素二乗
b2 = np.sum(b2,axis =1) #行で和を取る



fig, ax = plt.subplots()

ax.hist(b,bins=100,alpha = 0.5,label = "population average")
ax.hist(b2,bins=100,alpha = 0.5,label = "sample average")

ax.legend()
ax.set_xlim(-3,20)

plt.show()

이렇게 된 느낌으로 분포에 변화가 생겼다는 것을 알 수 있다.

n=2(표본집별 원소수 2)



3



4



5



6



수치 실험에서 샘플의 평균치로 평균치를 대체하면 제곱화의 분포는 (n-1)자유도의 제곱분포가 된다!

좋은 웹페이지 즐겨찾기