r - 使用“ci”函数计算置信区间
问题描述
我有一组数据,除了找到每组的列的平均值之外,我还想找到一个置信区间。样本数据如下所示:
id <- c(1101:1108)
age <- c(12,15,14,12,3,1,2,5)
length <- c(52,62,63,58,79,45,65,25)
result <- c("TRUE","FALSE","TRUE","FALSE","TRUE","FALSE","TRUE","FALSE")
data<-data.frame(id, age, length, result)
id age length result
1 1101 12 52 TRUE
2 1102 15 62 FALSE
3 1103 14 63 TRUE
4 1104 12 58 FALSE
5 1105 3 79 TRUE
6 1106 1 45 FALSE
7 1107 2 65 TRUE
8 1108 5 25 FALSE
我想要做的是计算每组结果的长度参数的平均值和 0.95 置信区间,所以我使用了下面的代码:
g <- data %>% select(length,result) %>% group_by(result) %>% summarise(Ave_length=mean(length, na.rm=TRUE))
并计算每组的置信区间,我使用了gmodels
包中的以下函数
ci(data$length[data$result=="TRUE"], 0.95)
ci(data$length[data$result=="TRUE"], 0.95)
但是,我得到的是一条警告消息“警告消息:在 ci.numeric(data$length[data$result == "TRUE"], 0.95) 中:没有类或未知类。使用默认计算。”
你对我如何解决这个问题有什么建议吗?或者是否有任何其他函数可以用来计算置信区间
解决方案
没有什么可担心的warning
消息。
methods('ci')
#[1] ci.binom ci.estimable* ci.lm* ci.lme* ci.numeric*
如果我们检查源代码,它以 a 开头,warning
没有任何检查。
getAnywhere('ci.numeric')
function (x, confidence = 0.95, alpha = 1 - confidence, na.rm = FALSE,
...)
{
warning("No class or unkown class. Using default calcuation.") ####
est <- mean(x, na.rm = na.rm)
stderr <- sd(x, na.rm = na.rm)/sqrt(nobs(x))
ci.low <- est + qt(alpha/2, nobs(x) - 1) * stderr
ci.high <- est - qt(alpha/2, nobs(x) - 1) * stderr
retval <- c(Estimate = est, `CI lower` = ci.low, `CI upper` = ci.high,
`Std. Error` = stderr)
retval
}
开发人员将来可能会更改它。此外,还有一些错别字,unkown
而不是unknown
这意味着numeric
classvector
正在收到此警告
ci(rnorm(10))
# Estimate CI lower CI upper Std. Error
# 0.3754708 -0.2600370 1.0109787 0.2809300
#Warning message:
#In ci.numeric(rnorm(10)) :
# No class or unkown class. Using default calcuation.
这个问题似乎只在numeric
课堂上显示。如果我们ci
在lm
模型上应用 ( ci.lm
)
ci(lm(Sepal.Length ~ Species, iris))
# Estimate CI lower CI upper Std. Error p-value
#(Intercept) 5.006 4.8621258 5.149874 0.07280222 1.134286e-113
#Speciesversicolor 0.930 0.7265312 1.133469 0.10295789 8.770194e-16
#Speciesvirginica 1.582 1.3785312 1.785469 0.10295789 2.214821e-32
因为一开始ci.lm
没有warning
getAnywhere('ci.lm')
function (x, confidence = 0.95, alpha = 1 - confidence, ...)
{
x <- summary(x)
est <- coef(x)[, 1]
ci.low <- est + qt(alpha/2, x$df[2]) * coef(x)[, 2]
ci.high <- est - qt(alpha/2, x$df[2]) * coef(x)[, 2]
retval <- cbind(Estimate = est, `CI lower` = ci.low, `CI upper` = ci.high,
`Std. Error` = coef(x)[, 2], `p-value` = coef(x)[, 4])
retval
}
可能的原因是这些ci
方法主要是检查lm
orlme
class
等,如果没有找到它们,它会切换到ci
fornumeric
类的默认模式,这warning
在这方面有点误导
推荐阅读
- r - Spotifyr 错误:INVALID_CLIENT:重定向 URI 无效
- c# - 构建 C# 项目时无法找到 MSBuild 15,无法找到“Microsoft.Common.props”
- r - 转换日期格式
- php - 结帐字段在 Woocommerce 购物车页面中有 2 列
- angular6 - 延迟加载功能模块上的 Angular6 入口组件
- c++ - 如何使用 D2D 和 CD2DEllipse 类在 C++ MFC 上绘制 ELLIPSE
- r - 在 mac 上安装包“stringr”、“reshape2”、“ggplot2”和“rattle”时出错
- angular - mat-autocomplete 在输入焦点上自动隐藏占位符文本
- android - 如何在android中获取全球时间(不是系统特定时间)
- javascript - Jquery:如何在隐藏字段中保持复选框选中/取消选中状态