如何推导oddsratios和pvalues以查看差异是否显著?

2024-09-29 19:27:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两组不同的样本:样本1和样本2

此外,我有18个不同的元素,对于每个元素,分别使用样本1和样本2的所有样本获得相应的分数

例如:

score_samples1[0]指通过使用样本1的所有样本获得的第一个元素的分数

score_samples2[0]指通过使用样本2的所有样本获得的第一个元素的分数

现在,我想比较这两个样本组之间的差异,并找出这种差异是否具有统计学意义。 如下图所示,我应用了t检验来获得一个p值来评估显著性

我的问题如下: 是否有方法得出优势比和p值,以确定差异是否显著

from scipy import stats
import statistics

score_samples1=[1.430442073, 1.347975371, 1.175088823, 1.20141693, 1.152665995, 1.105591463, 1.343297357, 1.251526193, 1.107442697, 1.302090741, 1.312426241, 1.24880381, 1.46855296, 1.12369795, 1.344426189, 1.24276685, 1.216269219, 1.172317535]
score_samples2=[1.663793448, 1.506660754, 1.387285644, 1.440433062, 1.367680224, 1.340102236, 1.632881551, 1.522894543, 1.137437101,1.581845495, 1.540401185, 1.549114159, 1.558038893, 1.392571495, 1.532717551, 1.451731862, 1.277597967, 1.336609308]

stats.ttest_ind(score_samples1,score_samples2)

stats.ttest_ind(score_samples1,score_samples2, equal_var=False)
Ttest_indResult(statistic=-5.03264933189511, pvalue=1.7512132919948795e-05)

#Paired t-test
stats.ttest_rel(score_samples1,score_samples2)
Ttest_relResult(statistic=-11.148411105604898, pvalue=3.0763665473016024e-09)

假设我将分数分类如下:

scores_ge_cutoff_samples1=[1 if x>=1.30 else 0 for x in score_samples1] 
scores_ge_cutoff_samples2=[1 if x>=1.30 else 0 for x in score_samples2]

scores_ge_cutoff_samples1
[1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0]  
scores_ge_cutoff_samples2
[1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1]

oddsratio, pvalue = stats.fisher_exact([[16, 2], [7, 11]])
pvalue
0.004510832141532924
oddsratio
12.571428571428571

基于这一分析,我们可以得出结论,样本2的得分>=1.30比样本1得分的可能性高12.57倍>=1.30.

然而,我的目标是获得样本1和样本2得分之间差异的优势比


Tags: import元素stats差异分数cutoffscore样本
1条回答
网友
1楼 · 发布于 2024-09-29 19:27:15

你们需要阅读有关实验程序的内容。“这有意义吗”不是你在事后计算后决定的;这是你实验设计的一个关键参数。在你做实验之前,你决定你将接受多大程度的显著性来确认你所选择的假设

单尾t检验要求假设样本1大于样本2。 双尾t检验需要一个假设,即样本1和样本2来自不同的分布,而不是比另一个更大的分布,只是它们是不同的

既然您已经完成了这两个测试,那么您似乎根本没有设计好您的实验。为了科学的完整性,你现在必须重新开始,设计你的实验,并重新运行你的样本

另一方面,为了获得合理的结果,您的状态非常好。结论的典型阈值为0.95、0.98和0.99的p水平;它们分别接受5%、2%和1%的错误率

你的p-分数远远低于其中最严格的分数(e-5和e-2),因此你在这一部分不会有任何问题。代码非常简单,如下所示:

t_score, prob = stats.ttest_ind(score_samples1, score_samples2)
if prob <= 0.01:
    print("The hypothesis is confirmed")
else
    print("The hypothesis is not confirmed")

相关问题 更多 >

    热门问题