【问题标题】:Loop Produces Incorrect stats and P Value循环产生不正确的统计数据和 P 值
【发布时间】:2021-07-08 15:32:37
【问题描述】:
我正在尝试简化我进行 t 测试的流程,并找到了一种基于过滤标志循环遍历每一列的方法。但是,当我执行循环功能时,结果是
- 所有相同的统计数据和 P 值
- 如果我作为一个独立的人来做就不同了。
1:错误
对于 df1.filter(like='DELTA').columns 中的 col:
stats.mannwhitneyu(df1[df1['COHORT_FLAG']==1]['MH_IP_DELTA']
,df1[df1['COHORT_FLAG']==0]['MH_IP_DELTA'])
print(col + ': ' + 'Stats=%.3f, p=%.3f' % (stat, p))
2:右:
stats.mannwhitneyu(df1[df1['COHORT_FLAG']==1]['MH_IP_DELTA']
,df1[df1['COHORT_FLAG']==0]['MH_IP_DELTA'])
知道为什么循环不能正常工作,还有另一种方法可以遍历大型记录集吗?我不想每次都手动输入 [col]。
【问题讨论】:
标签:
python
pandas
scipy
statistics
【解决方案1】:
您的问题中没有可使用的数据框,但我可以指出问题可能来自哪里。首先,我将格式化您的代码,以便我们与正在查看的内容在同一页面上:
1(“右”):
for col in df1.filter(like='DELTA').columns:
stats.mannwhitneyu(df1[df1['COHORT_FLAG']==1]['MH_IP_DELTA'] ,df1[df1['COHORT_FLAG']==0]['MH_IP_DELTA'])
print(col + ': ' + 'Stats=%.3f, p=%.3f' % (stat, p))
2(“错误”):
stats.mannwhitneyu(df1[df1['COHORT_FLAG']==1]['MH_IP_DELTA'] ,df1[df1['COHORT_FLAG']==0]['MH_IP_DELTA'])
首先要注意的是,“正确”和“错误”代码 sn-ps 中的关键行之间没有区别。这告诉我们问题在于循环的构造方式。查看循环,我们看到 col 除了出现在 print() 语句中之外,从未出现过。循环产生所有相同的值这一事实证实了循环没有在不同的列上循环。
没有数据框,我不知道您对哪些列感兴趣,而且我对您使用的统计功能也不太熟悉。但是您需要告诉您的程序感兴趣的列。如果这是要更改的列,也许您将 'MH_IP_DELTA' 更改为 col。不确定这是否是感兴趣的变量,因为我看不到您的数据框中发生了什么,但这是我的猜测。
它是哪一列以及需要更改的位置由您自己决定,但问题是您的代码在编写时只是简单地运行同一段代码 X 次,其中 X 是数字列数。