R函数获得均值差的置信区间

时间:2019-11-06 23:05:12

标签: r statistics t-test

我正在尝试找到一个函数,该函数可以让我轻松获得两个均值之差的置信区间。

我很确定t.test具有此功能,但我无法使其正常工作。下面是到目前为止我尝试过的屏幕截图:

Image

这是我正在使用的数据集

   Indoor Outdoor
1    0.07    0.29
2    0.08    0.68
3    0.09    0.47
4    0.12    0.54
5    0.12    0.97
6    0.12    0.35
7    0.13    0.49
8    0.14    0.84
9    0.15    0.86
10   0.15    0.28
11   0.17    0.32
12   0.17    0.32
13   0.18    1.55
14   0.18    0.66
15   0.18    0.29
16   0.18    0.21
17   0.19    1.02
18   0.20    1.59
19   0.22    0.90
20   0.22    0.52
21   0.23    0.12
22   0.23    0.54
23   0.25    0.88
24   0.26    0.49
25   0.28    1.24
26   0.28    0.48
27   0.29    0.27
28   0.34    0.37
29   0.39    1.26
30   0.40    0.70
31   0.45    0.76
32   0.54    0.99
33   0.62    0.36

我一直在尝试使用从{p>安装的t.test功能

install.packages("ggpubr")

我对R很陌生,所以很抱歉,如果对此问题有一个简单的答案。我搜索了很多东西,却找不到我想要的东西。

注意:我要查找的输出在-1.224和0.376之间

编辑:

我要寻找的均值之差的CI是是否通过在“室内”列中选择一个随机值并在“室外”列中选择一个随机值并将其复制来向图表中添加第34个随机数据点。对于给定的样本量33,运行t.test将为均值差输出正确的CI。

我该如何假装样本大小为34?

2 个答案:

答案 0 :(得分:1)

标准库中可能有一些更方便的东西,但是它很容易计算。给定您的df变量,我们可以做到:

# calculate mean of difference
d_mu <- mean(df$Indoor) - mean(df$Outdoor)
# calculate SD of difference
d_sd <- sqrt(var(df$Indoor) + var(df$Outdoor))

# calculate 95% CI of this
d_mu + d_sd * qt(c(0.025, 0.975), nrow(df)*2)

给我:-1.2246 0.3767

主要用于@AkselA:我经常发现通过抽样更简单的分布来检查我的工作很有帮助,在这种情况下,我会做类似的事情:

a <- mean(df$Indoor) + sd(df$Indoor) * rt(1000000, nrow(df)-1)
b <- mean(df$Outdoor) + sd(df$Outdoor) * rt(1000000, nrow(df)-1)
quantile(a - b, c(0.025, 0.975))

这使我的答案更接近我在评论中给出的配置项

答案 1 :(得分:0)

尽管我总是找到手动计算结果的方法,如最有见地的@Sam Mason 所示,但仍有一些人想要捷径。有时候,偷懒也没关系:)

所以在计算 CI 的不同方法中,这是最舒服的:

DescTools::MeanDiffCI(Indoor, Outdoor)

这是一个reprex:

IV <- diamonds$price
DV <- rnorm(length(IV), mean = mean(IV), sd = sd(IV))
DescTools::MeanDiffCI(IV, DV)

给予

 meandiff    lwr.ci    upr.ci 
-18.94825 -66.51845  28.62195 

默认情况下,这是使用 999 个自举样本计算的。如果您想要 1000 或更多,您可以将其添加到参数 R:

DescTools::MeanDiffCI(IV, DV, R = 1000)