Как переписать этот код R в форме цикла (о случайном выборе переменных) - PullRequest
0 голосов
/ 08 марта 2019

все.Мне нужно использовать nlme для анализа данных.Пожалуйста, смотрите код ниже.Все остальные параметры одинаковы.Единственная разница в части random = list ().Здесь мы случайным образом выбираем параметры из a0,a1,a2,a3,b0,c0,c1,c2,c3 и объединяем их вместе.То есть random=list(SJ=(a0~1)),random=list(SJ=(a1~1)),...,random=list(SJ=(a0+a1~1)),...,random=list(SJ=(a0+a1+a2+a3+b0+c0+c1+c2+c3~1)). Как переписать его как велосипедную форму?Большое спасибо!

C1 <- nlme(YC~(a0+a1*ppc1+a2*ppc2+a3*ppc3)/(1+(b0)*exp(-(c0+c1*ppc1+c2*ppc2+c3*ppc3)*T)),data=list(YC=datajieximu$CZS,T=datajieximu$A,ppc1=datapastxin$pc1,ppc2=datapastxin$pc2,ppc3=datapastxin$pc3),fixed=a0+a1+a2+a3+b0+c0+c1+c2+c3~1,random=list(SJ=(a0~1)))
C2 <- nlme(YC~(a0+a1*ppc1+a2*ppc2+a3*ppc3)/(1+(b0)*exp(-(c0+c1*ppc1+c2*ppc2+c3*ppc3)*T)),data=list(YC=datajieximu$CZS,T=datajieximu$A,ppc1=datapastxin$pc1,ppc2=datapastxin$pc2,ppc3=datapastxin$pc3),fixed=a0+a1+a2+a3+b0+c0+c1+c2+c3~1,random=list(SJ=(a1~1)))
C3 <- nlme(YC~(a0+a1*ppc1+a2*ppc2+a3*ppc3)/(1+(b0)*exp(-(c0+c1*ppc1+c2*ppc2+c3*ppc3)*T)),data=list(YC=datajieximu$CZS,T=datajieximu$A,ppc1=datapastxin$pc1,ppc2=datapastxin$pc2,ppc3=datapastxin$pc3),fixed=a0+a1+a2+a3+b0+c0+c1+c2+c3~1,random=list(SJ=(a2~1)))
C4 <- nlme(YC~(a0+a1*ppc1+a2*ppc2+a3*ppc3)/(1+(b0)*exp(-(c0+c1*ppc1+c2*ppc2+c3*ppc3)*T)),data=list(YC=datajieximu$CZS,T=datajieximu$A,ppc1=datapastxin$pc1,ppc2=datapastxin$pc2,ppc3=datapastxin$pc3),fixed=a0+a1+a2+a3+b0+c0+c1+c2+c3~1,random=list(SJ=(a3~1)))
C5 <- nlme(YC~(a0+a1*ppc1+a2*ppc2+a3*ppc3)/(1+(b0)*exp(-(c0+c1*ppc1+c2*ppc2+c3*ppc3)*T)),data=list(YC=datajieximu$CZS,T=datajieximu$A,ppc1=datapastxin$pc1,ppc2=datapastxin$pc2,ppc3=datapastxin$pc3),fixed=a0+a1+a2+a3+b0+c0+c1+c2+c3~1,random=list(SJ=(b0~1)))
C6 <- nlme(YC~(a0+a1*ppc1+a2*ppc2+a3*ppc3)/(1+(b0)*exp(-(c0+c1*ppc1+c2*ppc2+c3*ppc3)*T)),data=list(YC=datajieximu$CZS,T=datajieximu$A,ppc1=datapastxin$pc1,ppc2=datapastxin$pc2,ppc3=datapastxin$pc3),fixed=a0+a1+a2+a3+b0+c0+c1+c2+c3~1,random=list(SJ=(c0~1)))
C7 <- nlme(YC~(a0+a1*ppc1+a2*ppc2+a3*ppc3)/(1+(b0)*exp(-(c0+c1*ppc1+c2*ppc2+c3*ppc3)*T)),data=list(YC=datajieximu$CZS,T=datajieximu$A,ppc1=datapastxin$pc1,ppc2=datapastxin$pc2,ppc3=datapastxin$pc3),fixed=a0+a1+a2+a3+b0+c0+c1+c2+c3~1,random=list(SJ=(c1~1)))
C8 <- nlme(YC~(a0+a1*ppc1+a2*ppc2+a3*ppc3)/(1+(b0)*exp(-(c0+c1*ppc1+c2*ppc2+c3*ppc3)*T)),data=list(YC=datajieximu$CZS,T=datajieximu$A,ppc1=datapastxin$pc1,ppc2=datapastxin$pc2,ppc3=datapastxin$pc3),fixed=a0+a1+a2+a3+b0+c0+c1+c2+c3~1,random=list(SJ=(c2~1)))
C9 <- nlme(YC~(a0+a1*ppc1+a2*ppc2+a3*ppc3)/(1+(b0)*exp(-(c0+c1*ppc1+c2*ppc2+c3*ppc3)*T)),data=list(YC=datajieximu$CZS,T=datajieximu$A,ppc1=datapastxin$pc1,ppc2=datapastxin$pc2,ppc3=datapastxin$pc3),fixed=a0+a1+a2+a3+b0+c0+c1+c2+c3~1,random=list(SJ=(c3~1)))
C10 <- nlme(YC~(a0+a1*ppc1+a2*ppc2+a3*ppc3)/(1+(b0)*exp(-(c0+c1*ppc1+c2*ppc2+c3*ppc3)*T)),data=list(YC=datajieximu$CZS,T=datajieximu$A,ppc1=datapastxin$pc1,ppc2=datapastxin$pc2,ppc3=datapastxin$pc3),fixed=a0+a1+a2+a3+b0+c0+c1+c2+c3~1,random=list(SJ=(a0+a1~1)))
C11 <- nlme(YC~(a0+a1*ppc1+a2*ppc2+a3*ppc3)/(1+(b0)*exp(-(c0+c1*ppc1+c2*ppc2+c3*ppc3)*T)),data=list(YC=datajieximu$CZS,T=datajieximu$A,ppc1=datapastxin$pc1,ppc2=datapastxin$pc2,ppc3=datapastxin$pc3),fixed=a0+a1+a2+a3+b0+c0+c1+c2+c3~1,random=list(SJ=(a0+a2~1)))
C12 <- nlme(YC~(a0+a1*ppc1+a2*ppc2+a3*ppc3)/(1+(b0)*exp(-(c0+c1*ppc1+c2*ppc2+c3*ppc3)*T)),data=list(YC=datajieximu$CZS,T=datajieximu$A,ppc1=datapastxin$pc1,ppc2=datapastxin$pc2,ppc3=datapastxin$pc3),fixed=a0+a1+a2+a3+b0+c0+c1+c2+c3~1,random=list(SJ=(a0+a3~1))
C13 <- nlme(YC~(a0+a1*ppc1+a2*ppc2+a3*ppc3)/(1+(b0)*exp(-(c0+c1*ppc1+c2*ppc2+c3*ppc3)*T)),data=list(YC=datajieximu$CZS,T=datajieximu$A,ppc1=datapastxin$pc1,ppc2=datapastxin$pc2,ppc3=datapastxin$pc3),fixed=a0+a1+a2+a3+b0+c0+c1+c2+c3~1,random=list(SJ=(a0+b0~1)))
C14 <- nlme(YC~(a0+a1*ppc1+a2*ppc2+a3*ppc3)/(1+(b0)*exp(-(c0+c1*ppc1+c2*ppc2+c3*ppc3)*T)),data=list(YC=datajieximu$CZS,T=datajieximu$A,ppc1=datapastxin$pc1,ppc2=datapastxin$pc2,ppc3=datapastxin$pc3),fixed=a0+a1+a2+a3+b0+c0+c1+c2+c3~1,random=list(SJ=(a0+c0~1)))
C15 <- nlme(YC~(a0+a1*ppc1+a2*ppc2+a3*ppc3)/(1+(b0)*exp(-(c0+c1*ppc1+c2*ppc2+c3*ppc3)*T)),data=list(YC=datajieximu$CZS,T=datajieximu$A,ppc1=datapastxin$pc1,ppc2=datapastxin$pc2,ppc3=datapastxin$pc3),fixed=a0+a1+a2+a3+b0+c0+c1+c2+c3~1,random=list(SJ=(a0+c1~1)))
C16 <- nlme(YC~(a0+a1*ppc1+a2*ppc2+a3*ppc3)/(1+(b0)*exp(-(c0+c1*ppc1+c2*ppc2+c3*ppc3)*T)),data=list(YC=datajieximu$CZS,T=datajieximu$A,ppc1=datapastxin$pc1,ppc2=datapastxin$pc2,ppc3=datapastxin$pc3),fixed=a0+a1+a2+a3+b0+c0+c1+c2+c3~1,random=list(SJ=(a0+c2~1)))
C17 <- nlme(YC~(a0+a1*ppc1+a2*ppc2+a3*ppc3)/(1+(b0)*exp(-(c0+c1*ppc1+c2*ppc2+c3*ppc3)*T)),data=list(YC=datajieximu$CZS,T=datajieximu$A,ppc1=datapastxin$pc1,ppc2=datapastxin$pc2,ppc3=datapastxin$pc3),fixed=a0+a1+a2+a3+b0+c0+c1+c2+c3~1,random=list(SJ=(a0+c3~1)))
C18 <- nlme(YC~(a0+a1*ppc1+a2*ppc2+a3*ppc3)/(1+(b0)*exp(-(c0+c1*ppc1+c2*ppc2+c3*ppc3)*T)),data=list(YC=datajieximu$CZS,T=datajieximu$A,ppc1=datapastxin$pc1,ppc2=datapastxin$pc2,ppc3=datapastxin$pc3),fixed=a0+a1+a2+a3+b0+c0+c1+c2+c3~1,random=list(SJ=(a1+a2~1)))
C19 <- nlme(YC~(a0+a1*ppc1+a2*ppc2+a3*ppc3)/(1+(b0)*exp(-(c0+c1*ppc1+c2*ppc2+c3*ppc3)*T)),data=list(YC=datajieximu$CZS,T=datajieximu$A,ppc1=datapastxin$pc1,ppc2=datapastxin$pc2,ppc3=datapastxin$pc3),fixed=a0+a1+a2+a3+b0+c0+c1+c2+c3~1,random=list(SJ=(a1+a3~1)))


C511 <- nlme(YC~(a0+a1*ppc1+a2*ppc2+a3*ppc3)/(1+(b0)*exp(-(c0+c1*ppc1+c2*ppc2+c3*ppc3)*T)),data=list(YC=datajieximu$CZS,T=datajieximu$A,ppc1=datapastxin$pc1,ppc2=datapastxin$pc2,ppc3=datapastxin$pc3),fixed=a0+a1+a2+a3+b0+c0+c1+c2+c3~1,random=list(SJ=(a0+a1+a2+a3+b0+c0+c1+c2+c3~1)),control = nlmeControl(maxIter=100))

1 Ответ

0 голосов
/ 08 марта 2019

Вы можете попробовать это:

#vector with the names of the variables
vars <- c("a0", "a1", "a2", "a3", "b0", "c0", "c1", "c2", "c3")
#we build the "power set" of vars:
ps <- unlist(lapply(seq_along(vars), combn, 
                    x=vars, simplify=FALSE) ,recursive=FALSE)
#For each element in ps we build a named list with the SJ element which is a formula
formulas <- lapply(ps, function(x) 
                        list(SJ=as.formula(paste(paste(x, collapse="+"), "~1"))))

Тогда вы можете зацикливаться на formulas и вызывать свою линию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...