计算数据框 R 中多列的 95% 可信区间
Calculate 95 % credible interval for multiple columns in data frame R
我需要 get/calculate 我的数据的 95% 可信区间。我的数据包含十列和超过 5000 行。这是一些示例数据。
data <- data.frame(A = c(-7.595932, -6.451768, -4.682111, -8.781488, -4.251690),
B = c(0.8324450, 0.9451657, 0.8773759, 0.6044753, 0.6553995),
C = c(22.747480, 15.477470, 18.745407, 9.622865, 21.137619),
D = c(-11.684762, -13.474299, -9.783277, -7.747501, -12.352081))
我只是不确定要使用哪个函数,因为我每次都得到不同的结果,而且它一次只能处理一列。我尝试了以下功能:
ci(data$`A`, confidence = 0.95) ## R package gmodels
和
CI(data$`A`, confidence = 0.95) ##R package Rmisc
有没有其他人遇到过同样的问题?
不清楚这是否是您要查找的内容,但您可以打印出每个变量的平均值以及平均值的 95% 置信区间,如下所示:
lapply(data, function(x) {
paste0(round(mean(x), 2), " (95% CI: ",
paste(round(sort(mean(x) + c(1.96, -1.96) * sd(x)/sqrt(length(x))), 2),
collapse = " to "), ")")
} )
#> $A
#> [1] "-6.35 (95% CI: -8.03 to -4.67)"
#>
#> $B
#> [1] "0.78 (95% CI: 0.65 to 0.91)"
#>
#> $C
#> [1] "17.55 (95% CI: 12.98 to 22.11)"
#>
#> $D
#> [1] "-11.01 (95% CI: -12.99 to -9.03)"
这两个函数实际上给你同样的东西:
library(gmodels)
library(Rmisc)
CI(data$A)
upper mean lower
-3.975568 -6.352598 -8.729627
ci(data$A, confidence = 0.95)
Estimate CI lower CI upper Std. Error
-6.3525978 -8.7296274 -3.9755682 0.8561414
要将它应用于所有列,请使用 lapply
或 sapply
:
> sapply(data,CI)
A B C D
upper -3.975568 0.9648266 24.01143 -8.198957
mean -6.352598 0.7829723 17.54617 -11.008384
lower -8.729627 0.6011180 11.08091 -13.817811
如果你想要一个可信的区间(来自贝叶斯统计),这需要一些额外的调整,先验和可能性的选择。一些函数中已经有一些默认值,所以你可以不用它,但在盲目应用这些概念之前,你应该真正知道你在做什么。这是一个用于演示目的的示例。
library(bayestestR)
data <- data.frame(A = c(-7.595932, -6.451768, -4.682111, -8.781488, -4.251690),
B = c(0.8324450, 0.9451657, 0.8773759, 0.6044753, 0.6553995),
C = c(22.747480, 15.477470, 18.745407, 9.622865, 21.137619),
D = c(-11.684762, -13.474299, -9.783277, -7.747501, -12.352081))
sapply(data,ci,ci=0.95)
A B C D
CI 95 95 95 95
CI_low -8.662932 0.6095677 10.20833 -13.36208
CI_high -4.294732 0.9383867 22.58649 -7.951079
我需要 get/calculate 我的数据的 95% 可信区间。我的数据包含十列和超过 5000 行。这是一些示例数据。
data <- data.frame(A = c(-7.595932, -6.451768, -4.682111, -8.781488, -4.251690),
B = c(0.8324450, 0.9451657, 0.8773759, 0.6044753, 0.6553995),
C = c(22.747480, 15.477470, 18.745407, 9.622865, 21.137619),
D = c(-11.684762, -13.474299, -9.783277, -7.747501, -12.352081))
我只是不确定要使用哪个函数,因为我每次都得到不同的结果,而且它一次只能处理一列。我尝试了以下功能:
ci(data$`A`, confidence = 0.95) ## R package gmodels
和
CI(data$`A`, confidence = 0.95) ##R package Rmisc
有没有其他人遇到过同样的问题?
不清楚这是否是您要查找的内容,但您可以打印出每个变量的平均值以及平均值的 95% 置信区间,如下所示:
lapply(data, function(x) {
paste0(round(mean(x), 2), " (95% CI: ",
paste(round(sort(mean(x) + c(1.96, -1.96) * sd(x)/sqrt(length(x))), 2),
collapse = " to "), ")")
} )
#> $A
#> [1] "-6.35 (95% CI: -8.03 to -4.67)"
#>
#> $B
#> [1] "0.78 (95% CI: 0.65 to 0.91)"
#>
#> $C
#> [1] "17.55 (95% CI: 12.98 to 22.11)"
#>
#> $D
#> [1] "-11.01 (95% CI: -12.99 to -9.03)"
这两个函数实际上给你同样的东西:
library(gmodels)
library(Rmisc)
CI(data$A)
upper mean lower
-3.975568 -6.352598 -8.729627
ci(data$A, confidence = 0.95)
Estimate CI lower CI upper Std. Error
-6.3525978 -8.7296274 -3.9755682 0.8561414
要将它应用于所有列,请使用 lapply
或 sapply
:
> sapply(data,CI)
A B C D
upper -3.975568 0.9648266 24.01143 -8.198957
mean -6.352598 0.7829723 17.54617 -11.008384
lower -8.729627 0.6011180 11.08091 -13.817811
如果你想要一个可信的区间(来自贝叶斯统计),这需要一些额外的调整,先验和可能性的选择。一些函数中已经有一些默认值,所以你可以不用它,但在盲目应用这些概念之前,你应该真正知道你在做什么。这是一个用于演示目的的示例。
library(bayestestR)
data <- data.frame(A = c(-7.595932, -6.451768, -4.682111, -8.781488, -4.251690),
B = c(0.8324450, 0.9451657, 0.8773759, 0.6044753, 0.6553995),
C = c(22.747480, 15.477470, 18.745407, 9.622865, 21.137619),
D = c(-11.684762, -13.474299, -9.783277, -7.747501, -12.352081))
sapply(data,ci,ci=0.95)
A B C D
CI 95 95 95 95
CI_low -8.662932 0.6095677 10.20833 -13.36208
CI_high -4.294732 0.9383867 22.58649 -7.951079