2016-04-02 7 views
1

私の仕事はダミー変数でいくつかの研究をすることです。lm回帰と大きなリストの変数が多い

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)"]) 

そして、問題は最後の行に私が得ることである:ここでRコードがある

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

私は問題がkoeficientai1が大規模なリストであるということだと思います。しかし、私はただ5つの変数で別の1次元回帰を試みています。コードは機能しており、単純なデータフレームを取得しています。

答えて

0

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

koeficientai1で最後の行を交換してみてくださいはリストですが、それゆえdata.frame、エラーメッセージとしてそれにアクセスしよう。

sapplyは、koeficientai1(各リスト要素は名前付きベクトル)の各リスト要素から(Intercept)という要素を抽出し、結果を含むベクトルを返します。

関連する問題