我使用夏皮罗威尔克斯正态性检验得到此错误
UserWarning:scipy.stats.shapiro:对于 N > 5000,计算的 p 值可能不准确。当前 N 为 1048575。 stat, p = st.shapiro(householdPowerConspiration_analysis.Global_active_power
我正在寻找解决方案
如果必须执行 Shapiro-Wilk 检验,则可以使用
shapiro
生成的统计量,但使用 monte_carlo_test
估计 p 值。
import numpy as np
from scipy import stats
rng = np.random.default_rng()
x = rng.normal(size=1000)
def statistic(x):
return stats.shapiro(x).statistic
res = stats.monte_carlo_test(x, rng.normal, statistic,
alternative='less', batch=10)
ref = stats.shapiro(x)
res.pvalue, ref.pvalue
shapiro
的文档中进行了解释。像您这样大的样品需要一段时间。
skewtest
、kurtosistest
、normaltest
、jarque_bera
、anderson
。除了shapiro
之外,anderson
对于许多替代方案也具有良好的能力。 (当然,还可以使用其他几种更通用的拟合优度检验,但您也可以使用针对正态性量身定制的检验,因为可用的检验方法太多了。)