R函数获得均值差异的置信区间
R Function to get Confidence Interval of Difference Between Means
我正在尝试找到一个函数,让我可以轻松获得两个均值之间差异的置信区间。
我很确定 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
我一直在尝试使用从
安装的t.test
功能
install.packages("ggpubr")
我是 R 的新手,很抱歉如果这个问题有一个简单的答案。我四处搜索了很多,但没能找到我要找的任何东西。
注意:我要查找的输出在 -1.224 和 0.376 之间
编辑:
我正在寻找的方法之间的差异 CI 是,是否通过在室内列中选择一个随机值和在室外列中选择一个随机值并复制它来将随机的第 34 个数据点添加到图表中. 运行 t.test
将针对给定样本量 33 的均值差输出正确的 CI。
假设样本大小为 34,我该如何着手做这件事?
标准库中可能有一些更方便的东西,但它很容易计算。给定您的 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))
这让我的答案更接近我在评论中给出的 CI
尽管我总是找到手动计算结果的方法,正如@Sam Mason 所展示的那样,最有见地,但仍有一些人想要一个捷径。有时候,偷懒也是可以的:)
所以在计算 CI 的不同方法中,恕我直言,这是最舒服的:
DescTools::MeanDiffCI(Indoor, Outdoor)
这是一个代表:
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)
我正在尝试找到一个函数,让我可以轻松获得两个均值之间差异的置信区间。
我很确定 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
我一直在尝试使用从
安装的t.test
功能
install.packages("ggpubr")
我是 R 的新手,很抱歉如果这个问题有一个简单的答案。我四处搜索了很多,但没能找到我要找的任何东西。
注意:我要查找的输出在 -1.224 和 0.376 之间
编辑:
我正在寻找的方法之间的差异 CI 是,是否通过在室内列中选择一个随机值和在室外列中选择一个随机值并复制它来将随机的第 34 个数据点添加到图表中. 运行 t.test
将针对给定样本量 33 的均值差输出正确的 CI。
假设样本大小为 34,我该如何着手做这件事?
标准库中可能有一些更方便的东西,但它很容易计算。给定您的 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))
这让我的答案更接近我在评论中给出的 CI
尽管我总是找到手动计算结果的方法,正如@Sam Mason 所展示的那样,最有见地,但仍有一些人想要一个捷径。有时候,偷懒也是可以的:)
所以在计算 CI 的不同方法中,恕我直言,这是最舒服的:
DescTools::MeanDiffCI(Indoor, Outdoor)
这是一个代表:
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)