2016-04-02 19 views
1

büyük bir değişken. Benim görevin kukla değişkenlerde bazı araştırmalar yapmaktır. İşte R kodudur:lm regresyon ve büyük liste

parameters_estimation2 <- function(n) 
{ 
    age <- sample(20:40, n, replace=TRUE) 
    male <- sample(0:1, n, replace=TRUE) 
    education <- sample(0:6, n, replace=TRUE) 

    experience <- floor(rexp(n, 0.2)) 
    for(i in 1:n) 
    {if(experience[i]>15) { 
    experience[i] <- floor(rexp(1, 0.2)) 
    if(experience[i]>15) { i <- i-1 } 
    }} 

    sqexperience <- experience*experience 
    e <- rnorm(n, 0, 4) 

    B0 <- -200; B1 <- 15; B2 <- 100; B3 <-10; B4 <- 5; B5 <-20; 
    wage <- B0 + B1*age + B2*male + B3*education+ B4*experience+ B5*sqexperience+e 

    #Dummy making 
    expe1 <- c(rep(0,n)); expe2 <- c(rep(0,n)); expe3 <- c(rep(0,n)); expe4 <- c(rep(0,n)); 
    expe5 <- c(rep(0,n)); expe6 <- c(rep(0,n)); expe7 <- c(rep(0,n)); expe8 <- c(rep(0,n)); 
    expe9 <- c(rep(0,n)); expe10 <- c(rep(0,n)); expe11 <- c(rep(0,n)); expe12 <- c(rep(0,n)); 
    expe13 <- c(rep(0,n)); expe14 <- c(rep(0,n)); expe15 <- c(rep(0,n)); 
    for(i in 1:n) 
    { 
     if(experience[i]==1) { expe1[i] <-1 
     } else if(experience[i]==2) { expe2[i] <-1 
     } else if(experience[i]==3) { expe3[i] <-1 
     } else if(experience[i]==4) { expe4[i] <-1 
     } else if(experience[i]==5) { expe5[i] <-1 
     } else if(experience[i]==6) { expe6[i] <-1 
     } else if(experience[i]==7) { expe7[i] <-1 
     } else if(experience[i]==8) { expe8[i] <-1 
     } else if(experience[i]==9) { expe9[i] <-1 
     } else if(experience[i]==10) { expe10[i] <-1 
     } else if(experience[i]==11) { expe11[i] <-1 
     } else if(experience[i]==12) { expe12[i] <-1 
     } else if(experience[i]==13) { expe13[i] <-1 
     } else if(experience[i]==14) { expe14[i] <-1 
     } else if(experience[i]==15) { expe15[i] <-1 
     }} 

    regression<-lm(wage~age+male+education+expe1+expe2+expe3+expe4+expe5+expe6+expe7+expe8+expe9+expe10+expe11+expe12+expe13+expe14+expe15) 
    return(summary(regression)$coefficients[,"Estimate"]) 
} 

times <- 1000 
size <- rep(200, times) 
koeficientai1 <-mapply(parameters_estimation2, size) 
blah <- as.data.table(koeficientai1) 
beta0sample200d <- mean(koeficientai1[,"(Intercept)"]) 

Ve sorun son satırında alıyorum olmasıdır:

Error in koeficientai1[, "(Intercept)"] : incorrect number of dimensions 

Sorun koeficientai1 büyük liste olduğunu düşünüyorum. Ama sonra sadece 5 değişken ile bir lm regresyonunu deniyorum, kod çalışıyor ve basit bir veri çerçevesi elde ediyorum.

cevap

0

listesidir

beta0sample200d <- mean(sapply(koeficientai1, function(x) x["(Intercept)"])) 

koeficientai1 son çizgiyi değiştirmeyi deneyin, ancak, bir data.frame olarak erişmek için dolayısıyla hata mesajı deneyin.

sapply

(sizin durumunuzda her liste elemanı adlandırılmış vektör) ve sonuçlarını içeren bir vektör döndürür koeficientai1 her liste öğesinden (Intercept) adlı elemanı ayıklar.