1

私の仕事は、ダミー変数でいくつかの調査を行うことです。Rコードは次のとおりです。

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

そして問題は、最後の行で次のようになることです。

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

koeficientai1問題はリストが大きいことだと思います。しかし、その後、変数を 5 つだけ使用して別の lm 回帰を試みています。コードは機能しており、単純なデータ フレームが得られます。

4

1 に答える 1

0

最後の行を次のように置き換えてみてください

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

koeficientai1はリストですが、data.frame としてアクセスしようとすると、エラー メッセージが表示されます。

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

于 2016-04-02T11:49:39.157 に答える