【问题标题】:How to derive odds-ratios and p-values to see if the difference is significant?如何得出优势比和 p 值以查看差异是否显着?
【发布时间】:2021-04-08 14:21:49
【问题描述】:

我有两组不同的样本:samples1 和 samples2。

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

例如:

score_samples1[0] 表示使用 samples1 的所有样本获得的第一个元素的分数。

score_samples2[0] 表示使用 samples2 的所有样本获得的第一个元素的分数。

现在,我想比较这两个样本组之间的差异,并了解这种差异是否具有统计显着性。 如下所示,我应用了 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 得分>=1.30 的 12.57 倍。

但是,我的目标是获取 samples1 和 samples2 分数之间差异的优势比。

【问题讨论】:

  • 我不知道你会如何使用回归来获得优势比:它是从分类结果中直接计算出来的。
  • @Prune 知道了。编辑了问题。
  • “差异的优势比......”是什么意思?
  • 在所有的 t 检验中我得到了一个 p 值,我还能得到一个优势比吗?
  • 或者有没有办法应用逻辑回归并通过逻辑回归获得优势比?

标签: python p-value continuous


【解决方案1】:

您需要阅读有关实验程序的信息。 “这很重要”不是您事后通过一些计算来决定的;它是您的实验设计的关键参数。您在进行实验之前决定,您将接受何种程度的显着性来确认您选择的假设。

单尾 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")

【讨论】:

  • 我对计算优势比更感兴趣,因为我已经得到了 p 值。我如何计算赔率比?回归可以成为一种方法吗?如果是,怎么做?
  • 优势比适用于分类示例,而不是连续分布(例如您介绍的)。如果您需要 OR 方面的帮助,您必须提供适用的案例。
  • 如果我执行以下操作会怎样: >>> score_ge_1_30_samples1=[1 if x>=1.30 else 0 for x in score_samples1] >>> scores_ge_1_30_samples2=[1 if x>=1.30 else 0 for x在 score_samples2] >>> score_ge_1_30_samples1 [1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0] >>> score_ge_1_30_samples2 [1 , 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1] 那么如何使用回归来提供优势比呢?
  • 请参阅发布指南。如果您对您的问题有重大修改,它属于该问题。注释不能很好地处理代码,并且无法准确地呈现 Python 代码。
猜你喜欢
  • 2018-06-20
  • 1970-01-01
  • 2022-07-06
  • 1970-01-01
  • 2011-06-15
  • 2013-06-29
  • 1970-01-01
  • 2011-03-23
  • 1970-01-01
相关资源
最近更新 更多