3

我正在研究两个数据集,派生自 m 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

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

我知道这样t.test做,但如果我cats分成两个包含Bwt男性和女性的数据集,t.test() 会抱怨这两个数据集的长度不同,这是真的。中只有 47 名女性cats和 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))
    )
}
4

2 回答 2

7

您应该使用公式界面应用 t.test:

t.test(Bwt ~ Sex, data=cats, conf.level=.99)
于 2014-01-20T14:03:02.670 回答
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)
于 2021-06-15T06:42:43.000 回答