首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >scipy.stats如何处理nans?

scipy.stats如何处理nans?
EN

Stack Overflow用户
提问于 2015-05-10 15:56:01
回答 1查看 2.8K关注 0票数 3

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

代码语言:javascript
复制
 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

我得到两个运行时警告:

代码语言:javascript
复制
C:\Python27\lib\site-packages\scipy\stats\morestats.py:1963: RuntimeWarning: invalid value encountered in greater
  r_plus = sum((d > 0) * r, axis=0

和两个Wilcoxon输出

代码语言:javascript
复制
(54.0, 0.018545881687477818)
(54.0, 0.056806600853965265)

正如你所看到的,我有两个相似的测试统计(W),和两个不同的P-值。哪一个是对的?

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-10 16:01:11

您不能在数学上执行基于nan的测试统计。除非你找到了对nan特殊待遇的证据/文件,否则你不能依赖这一点。

我的经验是,一般情况下,即使是矮人也不特别对待南,例如中位。相反,不管结果是什么,结果都是算法实现的结果。

例如,numpy.median()似乎将nan作为inf来处理,将nan置于中间值之上。这很可能只是a<b比较结果的副作用,对于nan总是错误的。在两个相同的测试统计值W之后,可能也有类似的效果。

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30153445

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档