2015-03-20 3 views
-1

Привет Я хочу выполнить несколько регрессий при разных условиях. Я сделал это успешно, но когда я получаю список со всеми коэффициентами, имена уровней отсутствуют, когда я использую более одного уровня. Однако, если я использую только одни имена факторов, оставшиеся.Множественная регрессия с петлей для петли [r]

Я хочу рассчитать все параметры в двух условиях и, очевидно, получить имена. Я хочу сделать это через цикл, потому что мои данные намного сложнее, чем это.

library(bear) 

model<-function(A,mu) { 
    A+mu*time 
} 

mod <- ln_rel.cc ~A+mu*time 
rep<- c("r1","r2","r3","r4","r5") 
Medium<-c("A","B") 
time<-c(seq(from=0, to=39,by=1)) 
ln_rel.cc<-model(A=1,mu=0.4) 
MedTest<-cbind(rep,Medium,time,ln_rel.cc) 
MedTest<-data.frame(MedTest) 
MedTest$time<-as.numeric(MedTest$time) 
MedTest$ln_rel.cc<-as.numeric(MedTest$ln_rel.cc) 
head(MedTest) 
values<-NULL 
##one factor regression 
for(M in levels(MedTest$Medium)){ 


    values[M]<-list((summary(lm(ln_rel.cc ~time, MedTest[ MedTest$Medium==M ,] 
    ))$coef)) 



} 
values 
values<-NULL 
##Two factors regression 

for(M in levels(MedTest$Medium)){ 

    for (R in levels(MedTest$rep)){ 

    values[M[R]]<-list((summary(lm(ln_rel.cc ~time, MedTest[MedTest$rep==R & MedTest$Medium==M ,] 
            ))$coef)) 


    } 
} 
values 

Спасибо за помощь

+1

Просьба [прочитать о том, как предоставить ** минимальный ** воспроизводимый пример] (ht ф: //stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example). Покажите нам конкретную проблему, возможно, путем исключения циклов for. Интуиция говорит мне, что процесс разбивки вашего кода на выявление проблемы, вероятно, покажет вам ответ. – Thomas

ответ

0

Я нашел способ ответить на эту проблему !!

Сформировать несколько пустых векторов

values<-NULL 
mutation<-NULL 
Inoc.size<-NULL 
rep<-NULL 

создать цикл с тремя уровнями и три независимых вектора, в котором магазин, что переменная используется в каждом цикле

library(grofit) 
for(M in levels(Datos$mutation)){ 

    for (I in levels(Datos$Inoc.size)){ 
    for(R in levels(Datos$rep)){ 
    x <- Datos%>% 
     select(ln_rel.cc,Inoc.size, mutation, rep, time)%>% 
     filter(mutation==M& 
      Inoc.size==I& 
      rep==R) 


    values[M[I]] <-list(summary(gcFitModel(time=x$time, data=x$ln_rel.cc))) 
    for (i in length(values)){ 
     mutation[i]<-c(M) 
     Inoc.size[i]<-c(I) 
     rep[i]<-c(R) 

    } 
    } 
} 
} 

Регистрация данных, создающих логику кадр данных