为啥 SciPy 在样本方差为 0 的 t 检验中返回“nan”?
Posted
技术标签:
【中文标题】为啥 SciPy 在样本方差为 0 的 t 检验中返回“nan”?【英文标题】:Why does SciPy return `nan` for a t-test with samples with 0 variance?为什么 SciPy 在样本方差为 0 的 t 检验中返回“nan”? 【发布时间】:2016-11-16 07:28:03 【问题描述】:我在 Python 中使用 SciPy 并且以下返回 nan
值,无论出于何种原因:
>>>stats.ttest_ind([1, 1], [1, 1])
Ttest_indResult(statistic=nan, pvalue=nan)
>>>stats.ttest_ind([1, 1], [1, 1, 1])
Ttest_indResult(statistic=nan, pvalue=nan).
但是每当我使用具有不同汇总统计的样本时,我实际上得到了一个合理的值:
stats.ttest_ind([1, 1], [1, 1, 1, 2])
Ttest_indResult(statistic=-0.66666666666666663, pvalue=0.54146973927558495).
将nan
的p 值解释为0
是否合理?统计数据是否有理由对具有相同汇总统计数据的样本进行 2 样本 t 检验没有意义?
【问题讨论】:
我认为问题在于测试包括除以标准差。我会改为检查标准偏差是否为 0,因为可能在其他情况下它会返回 nan(但不确定它们会是什么) 【参考方案1】:除以零将引发 NaN(= 不是数字)异常,或返回按照惯例匹配 NaN 的浮点表示。请特别注意除以 N 和除以 N 减一的标准差公式。
【讨论】:
该评论不应该是“小心除以 N 和除以 N-减号-一个 [...] “?以上是关于为啥 SciPy 在样本方差为 0 的 t 检验中返回“nan”?的主要内容,如果未能解决你的问题,请参考以下文章