问题描述
我有一组数据,除了找到每个组的平均列数之外,我还想找到一个 置信区间。示例数据如下所示:
list_ = [2,4,6]
def xy(x,y,z):
print(x,z)
xy(list_)
我要为每个结果组的长度参数计算平均值和置信区间0.95,所以我使用以下代码:
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")
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
为了计算每个组的置信区间,我使用了g <- data %>% select(length,result) %>% group_by(result) %>% summarise(Ave_length=mean(length,na.rm=TRUE))
包中的以下函数
gmodels
但是,我得到的是一条警告消息“警告消息: 在ci.numeric(data $ length [data $ result ==“ TRUE”],0.95)中: 没有课程或未知的课程。使用默认计算。”
您对我如何解决此问题有任何建议吗?还是可以使用其他任何函数来计算置信区间
解决方法
不用担心warning
消息。
methods('ci')
#[1] ci.binom ci.estimable* ci.lm* ci.lme* ci.numeric*
如果我们检查源代码,则它以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
个类vector
收到此警告
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,...)
{
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,2]
retval <- cbind(Estimate = est,`Std. Error` = coef(x)[,2],`p-value` = coef(x)[,4])
retval
}
可能的原因是ci
方法主要是检查lm
或lme
class
等,如果没有找到,则切换到默认模式ci
类中的numeric
和warning
在这方面有误导性