我想從零開始編寫卡方擬合優度測試Beta版,而不使用任何外部函數。下面的代碼報告「1」表示適合,即使scstey中的kstest返回0也是如此。數據正常分配,所以我的函數也應該返回零。卡方測試使用頻率,箱,CDF,Python
import numpy as np
from scipy.stats import chi2
from scipy.stats import beta
from scipy.stats import kstest
from scipy.stats import norm
preds = norm.rvs(5,2,size=200)
preds.sort()
bin_size = 30
bins = np.linspace(0,10,bin_size)
counts = np.digitize(preds, bins)
mean = 5
var = 2
sum = 0
for i in range(len(bins)-1):
p = beta.cdf(bins[i+1], mean, var) - beta.cdf(bins[i], mean, var)
freq = len(counts[counts==i])/float(len(counts))
sum = sum + ((freq - p)**2)/p
dof = len(counts)-2
pval = 1 - chi2.cdf(sum, dof)
print pval
在代碼中,我創建基於倉箱,測量頻率,使用Beta分佈CDF計算預期頻率,並概括起來導致X^2檢驗統計量。
的kstest呼叫
print kstest(preds, 'beta', [mean, var])
我在做什麼錯在這裏?
謝謝,
什麼是當前輸出? – Wok 2010-10-24 20:19:14
對於我的功能,輸出爲'1',對於kstest調用,輸出爲(0.97653486524680988,0.0)。 – user423805 2010-10-24 20:42:20