怎样scipy.stats公司处理南斯?

2024-10-02 20:32:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用Python做一些统计。我有一些缺少值的数据,用np.nan填充,我不确定应该手动删除它,还是scipy可以处理它。所以我两个都试过了:

 import scipy.stats, numpy as np
a = [0.75, np.nan, 0.58337, 0.75, 0.75, 0.91663, 1.0, np.nan, 0.663, 0.837,     0.837, 1.0, 0.663, 1.0, 1.0, 0.91663, 0.75, 0.41669, 0.58337, 0.663, 0.75, 0.58337] 
b = [0.837, np.nan, 0.663, 0.58337, 0.75, 0.75, 0.58337, np.nan, 0.166, 0.5,     0.663, 1.0, 0.91663, 1.0, 0.663, 0.75, 0.75, 0.41669, 0.331, 0.25, 1.0, 0.91663]

d_1, d_2 = a,b
wilc1 =  scipy.stats.wilcoxon(d_1, d_2, zero_method = 'pratt')

d_1, d_2 = [], []
for d1, d2 in zip(a, b):
    if np.isnan(d1) or np.isnan(d2):
        pass
    else:
        d_1.append(d1)
        d_2.append(d2)

wilc2 =  scipy.stats.wilcoxon(d_1, d_2, zero_method = 'pratt')
print wilc1
print wilc2

我收到两个运行警告:

^{pr2}$

和两个威尔克森输出

(54.0, 0.018545881687477818)
(54.0, 0.056806600853965265)

如你所见,我有两个相似的测试统计量(W)和两个不同的p值。 哪个是正确的?在

我猜,Wilcoxon在测试统计计算过程中正确地处理了缺失值,但在p值计算过程中,它使用了所有数据的len(),而不仅仅是有效的情况。这算是臭虫吗?在


Tags: 数据statsnpscipynanmethodd2d1
1条回答
网友
1楼 · 发布于 2024-10-02 20:32:19

您不能在数学上基于nan执行测试统计。 除非你能找到nan特殊处理的证据/文件,否则你不能依赖。在

我的经验是,一般来说,即使是女仆也不会特别对待楠,比如中位数。取而代之的是,由于算法实现的结果,结果就是它们碰巧是什么。在

例如,中位数()似乎最终将nan视为inf,将nan置于中值之上。这可能只是a<b比较结果对nan总是错误的副作用。在你的两个相同的测试统计值W后面可能也有类似的影响

还要注意:numpy中有一些方法变体,比如http://docs.scipy.org/doc/numpy/reference/generated/numpy.nanmean.html

相关问题 更多 >