R lme循环困难与“尝试”和lme置信区间

时间:2012-10-10 10:14:54

标签: r for-loop append inheritance confidence-interval

R用户,我仍在搜索与我最初问题相关的点点滴滴,如此处所见,现在我已经陷入困境。

http://stackoverflow.com/questions/12270578/skipping-over-an-error-warning-in-an-lme-loop-in-r

以下是使用mtcars作为示例数据集的代码。我想保存每个响应变量的下部和上部置信区间,如下所示(但不是截距,尽管我仍然需要其他系数用于lme,但我已经有了它),一气呵成(我的真实)数据集非常大,我试图尽可能地自动化它)

library(log10)
library(nlme) 
library(lattice)

responseVariables = c("mpg",                                   
 "disp",             
 "hp")

carModels <- list()
carModelNames <- list()
coint<- list()  
coint2<- list()
coint$fixed <- list()
lower<- list() 
upper<- list() 
carCIlower <- list()
carCIupper <- list()


for (i in responseVariables){
    print("Doing: ")
    print(i)
    mtcars$tmp <- as.numeric(mtcars[,i])
    tmpLme <- lme( log10(tmp) ~ I(log10(wt)), random = ~1 | carb / gear / am, data=mtcars,na.action=na.omit ) 
    carModels <- append(carModels, list(tmpLme))
    carModelNames <- append(carModelNames,i) 


    coint <- try(intervals(tmpLme))   
        if (inherits(coint, "try-error")) {
        tmpLme <- lme(log10(tmp) ~ log10(wt), random = ~1 | carb / gear, data=mtcars, na.action=na.omit);
        coint <- try(intervals(tmpLme));

    } else if (inherits(coint, "try-error")) {
        tmpLme <- lme(log10(tmp) ~ log10(wt), random = ~1 | carb / gear, data=mtcars, na.action=na.omit, method="ML");
        coint <- try(intervals(tmpLme));

    } else if (inherits(coint, "try-error")) {
        tmpLme <- lme(log10(tmp) ~ log10(wt), random = ~1 | carb, data=mtcars, na.action=na.omit);
        coint <- try(intervals(tmpLme));
           #} 

    coint2<- append(coint, list(tmpLme))   
    lower <- dim(coint2$fixed)[1]   
    upper <- dim(coint2$fixed)[1]
    carCIlower <- append(carCIlower, coint2$fixed[2,1],lower) 
    carCIupper <- append(carCIupper, coint2$fixed[2,3],upper)  
    vs_wt <- cbind(carModelNames , carCIlower , carCIlower )
    }
        }

目前,如果我为每个响应变量运行命令,但是不能作为循环的一部分,我可以获取CI值。循环不会继续通过coint2语句。它确实如此,但它没有给我coint2及以后的答案。或者,如果我再次运行这些行,它只会给出循环中最后一项(i = hp)的值。另外我看到有一个不平衡的花括号(我已经注释了它向你展示),但如果我使用它,我会为所有resp变量的较低和较高CI的“disp”提供较低的CI。

有人可以指出缺少的东西吗?

0 个答案:

没有答案