如何解决使用 python pandas 如何选择匹配对来执行匹配对学生的 t 检验?
我正在尝试执行配对学生的 t 检验 scipy.stats.ttest_rel
,但很难删除“非重复”值。
这是我能想到的最简单的例子:
df = pd.DataFrame({
'Sample': ['H1','H1','H2','H3'],'L/R': ['L','L','R','L'],'Region': ['Eq','Po','Eq','Po'],'MatchedPair': ['H1L','H1L','H1R','H2L','H3L'],'Value': [12.2,11.1,14.5,9.0,10.2,11.6]
})
打印出来时:
df
Out[236]:
Sample L/R Region MatchedPair Value
0 H1 L Eq H1L 12.2
1 H1 L Po H1L 11.1
2 H1 R Eq H1R 14.5
3 H2 L Po H2L 9.0
4 H2 L Eq H2L 10.2
5 H3 L Po H3L 11.6
我正在尝试比较匹配对(Region L & R by Sample),因为我没有 H2R 的数据点,所以我有不等长的数组。
目标是:
f,p = stats.ttest_rel(dfMP['Value'][df['Region'] == 'Eq'],dfMP['Value'][df['Region'] == 'Po'])
其中 dfMP
是包含匹配对并根据 Sample 列排除非匹配对的数据框,因此我可以比较区域(MatchedPair 列中的“Eq”与“Po”)。
现在我只能这样做:
f,p = stats.ttest_ind(df['Value'][df['Region'] == 'Eq'],df['Value'][df['Region'] == 'Po'])
解决方法
这是我在使用 pandas duplicated
函数后得出的结论:
dfMP = df[df.duplicated(['MatchedPair'],keep=False)]
f,p = stats.ttest_rel(dfMP['Value'][dfMP['Region'] == 'Eq'],dfMP['Value'][dfMP['Region'] == 'Po'])
print(f,p,"Matched Pairs Student's t-test")
f,p = stats.ttest_ind(dfMP['Value'][dfMP['Region'] == 'Eq'],"Student's t-test")
打印输出:
23.00000000000007 0.027661699133323864 Matched Pairs Student's t-test
0.7931034482758611 0.5108596784320201 Student's t-test
我相信这应该可行,但我不确定 duplicated
方法是否是正确的方法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。