【问题标题】:Confidence Interval of Difference of Means between two datasets两个数据集之间均值差的置信区间
【发布时间】:2014-01-20 13:52:59
【问题描述】:

我正在处理两个数据集,它们源自 cats,一个内置 R 数据集。

> cats
    Sex Bwt  Hwt
1     F 2.0  7.0
2     F 2.0  7.4
3     F 2.0  9.5
4     F 2.1  7.2
5     F 2.1  7.3
6     F 2.1  7.6
7     F 2.1  8.1
8     F 2.1  8.2
9     F 2.1  8.3
10    F 2.1  8.5
11    F 2.1  8.7
12    F 2.1  9.8
...
137   M 3.6 13.3
138   M 3.6 14.8
139   M 3.6 15.0
140   M 3.7 11.0
141   M 3.8 14.8
142   M 3.8 16.8
143   M 3.9 14.4
144   M 3.9 20.5

我想找到男性和女性样本体重(分别为性别 == M 和性别 == F)之间平均值差异的 99% 置信区间

我知道 t.test 会这样做,但如果我将 cats 分解为两个包含男性和女性 Bwt 的数据集,t.test() 会抱怨这两个数据集不是长度相同,这是真的。 cats 中只有 47 位女性和 87 位男性。

是否可以通过其他方式实现,或者我是否通过分解数据来误解数据?

编辑: 我有一个回答者在另一个问题上向我建议的函数,它可以在数据集上获取均值的 CI,可能会派上用场:

ci_func <- function(data, ALPHA){
  c(
    mean(data) - qnorm(1-ALPHA/2) * sd(data)/sqrt(length(data)),
    mean(data) + qnorm(1-ALPHA/2) * sd(data)/sqrt(length(data))
    )
}

【问题讨论】:

  • 你为什么不实际添加你尝试过的代码
  • @Dason t1 &lt;- t.test( catsBwt_Female, catsBwt_Male, paired = TRUE ) Error in complete.cases(x, y) : not all arguments have the same length 是我尝试过的代码的范围,除了计算每个数据集的平均值的单独 99% CI。总的来说,我是统计新手。
  • 不做配对t检验时,为什么要指定paired = TRUE?
  • @Dason 这是个谜。

标签: r dataset confidence-interval


【解决方案1】:

您应该使用公式接口应用 t.test:

t.test(Bwt ~ Sex, data=cats, conf.level=.99)

【讨论】:

  • 看来我需要仔细阅读t.test 的文档。感谢您快速而完整的回答。
  • 请注意,您不必使用公式界面。主要问题是您指定了配对 t 检验,而这对您的数据没有意义。
【解决方案2】:

或者t.test,如果你真的只对手段的差异感兴趣,你可以使用:

DescTools::MeanDiffCI(cats$Bwt, cats$Sex)

它给出了类似的东西

 meandiff    lwr.ci    upr.ci 
-23.71474 -71.30611  23.87662 

默认情况下,这是使用 999 个自举样本计算得出的。如果需要更多,可以在R 参数中指定:

DescTools::MeanDiffCI(cats$Bwt, cats$Sex, R = 1000)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-24
    • 1970-01-01
    • 2014-02-08
    • 1970-01-01
    • 1970-01-01
    • 2017-04-01
    • 1970-01-01
    • 2013-12-06
    相关资源
    最近更新 更多