python 如何判斷一組資料是否符合正態分佈
阿新 • • 發佈:2020-07-06
正態分佈:
若隨機變數x服從有個數學期望為μ,方差為σ2的正態分佈,記為N(μ,σ)
其中期望值決定密度函式的位置,標準差決定分佈的幅度,當υ=0,σ=0 時的正態分佈是標準正態分佈
判斷方法有畫圖/k-s檢驗
畫圖:
#匯入模組
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline #構造一組隨機資料
s = pd.DataFrame(np.random.randn(1000)+10,columns = ['value']) #畫散點圖和直方圖fig = plt.figure(figsize = (10,6))
ax1 = fig.add_subplot(2,1,1) # 建立子圖1
ax1.scatter(s.index, s.values)
plt.grid() ax2 = fig.add_subplot(2,1,2) # 建立子圖2
s.hist(bins=30,alpha = 0.5,ax = ax2)
s.plot(kind = 'kde', secondary_y=True,ax = ax2)
plt.grid()
結果如下:
使用ks檢驗:
#匯入scipy模組
from scipy import stats """kstest方法:KS檢驗,引數分別是:待檢驗的資料,檢驗方法(這裡設定成norm正態分佈),均值與標準差
結果返回兩個值:statistic → D值,pvalue → P值
p值大於0.05,為正態分佈
H0:樣本符合
H1:樣本不符合
如何p>0.05接受H0 ,反之
"""
u = s['value'].mean() # 計算均值
std = s['value'].std() # 計算標準差
stats.kstest(s['value'], 'norm', (u, std))
結果是KstestResult(statistic=0.01441344628501079, pvalue=0.9855029319675546),p值大於0.05為正太分佈