微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

循环产生不正确的统计数据和 P 值

如何解决循环产生不正确的统计数据和 P 值

我正在尝试简化我做 t 测试的过程,并找到了一种基于过滤标志循环遍历每一列的方法。但是,当我执行循环功能时,结果是

  1. 所有相同的统计数据和 P 值
  2. 如果我单独做这件事就不同了。

1:错误

对于 df1.filter 中的 col(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'])

知道为什么循环不能正常工作,还有其他方法可以循环遍历大记录集吗?我不想每次都手动输入[col]。

解决方法

您的问题中没有可使用的数据框,但我可以指出问题的出处。首先,我将格式化您的代码,以便我们都在同一页面上查看我们正在查看的内容:

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'])

首先要注意的是,“正确”和“错误”代码片段中的关键行之间没有区别。这告诉我们问题在于循环的构造方式。查看循环,我们看到除了 col 语句外,print() 永远不会出现。循环产生所有相同的值这一事实证实循环没有在不同的列上循环。

如果没有数据框,我不知道您对哪些列感兴趣,而且我对您使用的 stats 函数也不太熟悉。但是你需要告诉你的程序感兴趣的列。如果这是应该更改的列,也许您将 'MH_IP_DELTA' 更改为 col。不确定这是否是感兴趣的变量,因为我看不到您的数据框中发生了什么,但这是我的猜测。

它是哪一列,您需要更改它的位置由您自己决定,但问题是您编写的代码只是运行同一段代码 X 次,其中 X 是数字列。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。