小编Cha*_* M.的帖子

Python中拟合检验的卡方优度:p值太低,但拟合函数正确

尽管搜索了两天的相关问题,但我尚未真正找到该问题的答案...

在下面的代码中,我生成了n个正态分布的随机变量,然后将其表示为直方图:

import numpy as np
import matplotlib.pyplot as plt

n = 10000                        # number of generated random variables 
x = np.random.normal(0,1,n)      # generate n random variables

# plot this in a non-normalized histogram:
plt.hist(x, bins='auto', normed=False)    

# get the arrays containing the bin counts and the bin edges:
histo, bin_edges = np.histogram(x, bins='auto', normed=False)
number_of_bins = len(bin_edges)-1
Run Code Online (Sandbox Code Playgroud)

之后,找到曲线拟合函数及其参数。它通常使用参数a1和b1进行分布,并使用scale_factor进行缩放,以满足样本未标准化的事实。它确实非常适合直方图:

import scipy as sp

a1, b1 = sp.stats.norm.fit(x)

scaling_factor = n*(x.max()-x.min())/number_of_bins

plt.plot(x_achse,scaling_factor*sp.stats.norm.pdf(x_achse,a1,b1),'b')
Run Code Online (Sandbox Code Playgroud)

这是带有拟合功能的红色直方图。

在那之后,我想使用卡方检验来测试此函数对直方图的拟合程度。该测试使用这些点的观测值和预期值。为了计算期望值,我首先计算每个bin中间的位置,此信息包含在数组x_middle中。然后,我在每个bin的中间点计算拟合函数的值,从而得到了Expected_value数组:

observed_values = histo

bin_width = bin_edges[1] - …
Run Code Online (Sandbox Code Playgroud)

python scipy chi-squared p-value goodness-of-fit

4
推荐指数
1
解决办法
1783
查看次数

标签 统计

chi-squared ×1

goodness-of-fit ×1

p-value ×1

python ×1

scipy ×1