scipy mannwhitneyu与nan值

iszxjhcz  于 2023-11-19  发布在  其他
关注(0)|答案(1)|浏览(133)

使用scipy时,我注意到mannwhitneyu函数使用nan值来执行统计分析。
此外,此函数没有内置选项来省略这些值(R中的等效函数省略Na值)。
允许这样的行为有什么意义。
范例:

import scipy as sp
sp.stats.mannwhitneyu(x = [nan, nan, nan, nan],
                      y = [nan, nan, nan, 2],
                      alternative='two-sided')

字符串
该操作产生:

MannwhitneyuResult(statistic=4.0, pvalue=0.312321421676216)


要正确使用该函数,应该使用.dropna()
我是不是缺少了什么东西来维持这种行为?
谢谢

toiithl6

toiithl61#

自SciPy 1.8.0以来,mannwhitneyu一直支持nan_policy。默认行为是nan_policy='propagate'

from scipy import stats
from numpy import nan
x = [nan, 2, 4, nan]
y = [nan, 1, nan, 2]
stats.mannwhitneyu(x, y)
# MannwhitneyuResult(statistic=nan, pvalue=nan)

字符串
还支持'omit''raise'。“

stats.mannwhitneyu(x, y, nan_policy='omit')
# MannwhitneyuResult(statistic=3.5, pvalue=0.4142161782425252)

stats.mannwhitneyu(x, y, nan_policy='raise')
# ValueError: The input contains nan values

相关问题