两个数据集均值差的置信区间

3

我正在处理两个数据集,这些数据集是从内置的 R 数据集 cats 导出的。

> 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)Bwt的平均数之间的差异的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
@Dason 我尝试过的代码只有t1 <- t.test( catsBwt_Female, catsBwt_Male, paired = TRUE ),但是出现了错误信息Error in complete.cases(x, y) : not all arguments have the same length。除此之外,我还计算了每个数据集均值的单独99%置信区间。我对统计学还很陌生。 - Dimitris Sfounis
当你不进行配对t检验时,为什么要指定paired = TRUE? - Dason
1
@Dason 这是一个谜。 - Dimitris Sfounis
2个回答

7
您应该使用公式接口应用t.test:
t.test(Bwt ~ Sex, data=cats, conf.level=.99)

看来我需要仔细阅读t.test的文档。感谢您快速而完整的回答。 - Dimitris Sfounis
2
请注意,您不必使用公式界面。主要问题是您在为数据指定成对t检验时并不合适。 - Dason

0

如果你真的只关心平均数之间的差异,可以使用以下方法之一,而不是使用 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)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接