置信区间函数仅给出较低的CI

时间:2016-02-12 10:39:36

标签: r function

我写了一个简单的函数来计算置信区间

data<-seq(1,25)

ci<-function(x){
     df<-length(x)-1
     t<-qt(0.975,df=df)
     m<-mean(x)
     sd<-sd(x)
     n<-length(x)
     se<-sd/sqrt(n)
     (m+t*se)
     (m-t*se)
}

ci(data)

#9.962024

正如你所看到的,它只给了我一个值(m-t*se)而不是两个,而在函数中我也计算了(m+t*se)。我在这里缺少什么?

由于

3 个答案:

答案 0 :(得分:2)

正如Heroka所提到的,没有显式return语句的函数只会返回最终的evaluate元素。因此,您可以简单地添加return语句:

ci<-function(x){
    df<-length(x)-1
    t<-qt(0.975,df=df)
    m<-mean(x)
    sd<-sd(x)
    n<-length(x)
    se<-sd/sqrt(n)
    return(c((m+t*se),(m-t*se)))
}

答案 1 :(得分:2)

R函数将返回单个对象。您可以使用return函数专门定义该对象,也可以自动返回上次评估的调用。如果要返回多个值,则必须先将它们组合成一个对象。

对于您的示例,可以这样做:

ci<-function(x){
     df<-length(x)-1
     t<-qt(0.975,df=df)
     m<-mean(x)
     sd<-sd(x)
     n<-length(x)
     se<-sd/sqrt(n)
     c(upper = m+t*se, lower = m-t*se)
}

或者您可以明确地返回:

ci<-function(x){
     df<-length(x)-1
     t<-qt(0.975,df=df)
     m<-mean(x)
     sd<-sd(x)
     n<-length(x)
     se<-sd/sqrt(n)
     return(c(upper = m+t*se, lower = m-t*se))
}

答案 2 :(得分:1)

我最终做到了这一点并且有效。如果有人知道更优雅或简洁的东西,请告诉我。

 development {
        dataSource {
            dbCreate = "update"
            url = "jdbc:mysql://localhost/sampleappdb?autoreconnect=true"
        }
    }