9

複数の従属変数と複数の独立変数を使用して回帰を実行しようとしています。基本的に、私はHouse Prices米国全体の郡レベルで持っています。これが私の IV です。次に、郡レベル ( GDPconstruction employment) にいくつかの他の変数があり、これらは従属変数を構成します。これらすべての回帰を同時に行う効率的な方法があるかどうかを知りたいです。私は取得しようとしています:

lm(IV1 ~ DV11 + DV21)
lm(IV2 ~ DV12 + DV22)

独立変数と従属変数ごとにこれを行いたいと思います。

編集: OPは私の回答に応じてこの情報を追加しましたが、現在は削除されており、質問を誤解していました。

この質問をうまく説明できなかったと思います。申し訳ありません。すべての従属変数には、固有の 2 つの独立変数が関連付けられています。したがって、500 個の従属変数がある場合、500 個の一意の独立変数 1 と 500 個の一意の独立変数 2 があります。

わかりました、もう一度やり直します。もう一度自分自身を説明できなかったら、あきらめるかもしれません (笑)。[これはメトリクスの回答を参照してmtcarsいます] [from R ] の意味がわからないので、この方法で試してみましょう。それぞれ約 500 行の 3 つのデータ ベクトルを用意します。データの各行から回帰を構築しようとしています。ベクトル 1 が従属変数 (予測しようとしている変数) であり、ベクトル 2 と 3 が独立変数を構成しているとします。したがって、最初の回帰は各ベクトルの行 1 の値で構成され、2 番目の回帰は各ベクトルの行 2 の値で構成されます。ありがとうございました。

4

1 に答える 1

3

mydataとしてデータフレームがあると仮定しています。

mydata<-mtcars #mtcars is the data in R

dep<-c("mpg~","cyl~","disp~") # list of unique dependent variables with ~ 
indep1<-c("hp","drat","wt")  # list of first unique independent variables 
indep2<-c("qsec","vs","am") # list of second unique independent variables 
> myvar<-cbind(dep,indep1,indep2) # matrix of variables
> myvar
     dep     indep1 indep2
[1,] "mpg~"  "hp"   "qsec"
[2,] "cyl~"  "drat" "vs"  
[3,] "disp~" "wt"   "am" 



for (i in 1:dim(myvar)[1]){
print(paste("This is", i, "regression", "with dependent var",gsub("~","",myvar[i,1])))
k[[i]]<-lm(as.formula(paste(myvar[i,1],paste(myvar[i,2:3],collapse="+"))),mydata)
print(k[[i]]
}



 [1] "This is 1 regression with dependent var mpg"

Call:
lm(formula = as.formula(paste(myvar[i, 1], paste(myvar[i, 2:3], 
    collapse = "+"))), data = mydata)

Coefficients:
(Intercept)           hp         qsec  
   48.32371     -0.08459     -0.88658  

[1] "This is 2 regression with dependent var cyl"

Call:
lm(formula = as.formula(paste(myvar[i, 1], paste(myvar[i, 2:3], 
    collapse = "+"))), data = mydata)

Coefficients:
(Intercept)         drat           vs  
     12.265       -1.421       -2.209  

[1] "This is 3 regression with dependent var disp"

Call:
lm(formula = as.formula(paste(myvar[i, 1], paste(myvar[i, 2:3], 
    collapse = "+"))), data = mydata)

Coefficients:
(Intercept)           wt           am  
    -148.59       116.47        11.31  

注:多数の変数に対して同じプロセスを使用できます。

代替アプローチ:

ここでのハドリーの答えに動機付けられて、関数を使用Mapして上記の問題を解決します。

dep<-list("mpg~","cyl~","disp~") # list of unique dependent variables with ~ 
indep1<-list("hp","drat","wt")  # list of first unique independent variables 
indep2<-list("qsec","vs","am") # list of second unique independent variables
Map(function(x,y,z) lm(as.formula(paste(x,paste(list(y,z),collapse="+"))),data=mtcars),dep,indep1,indep2)
[[1]]

Call:
lm(formula = as.formula(paste(x, paste(list(y, z), collapse = "+"))), 
    data = mtcars)

Coefficients:
(Intercept)           hp         qsec  
   48.32371     -0.08459     -0.88658  


[[2]]

Call:
lm(formula = as.formula(paste(x, paste(list(y, z), collapse = "+"))), 
    data = mtcars)

Coefficients:
(Intercept)         drat           vs  
     12.265       -1.421       -2.209  


[[3]]

Call:
lm(formula = as.formula(paste(x, paste(list(y, z), collapse = "+"))), 
    data = mtcars)

Coefficients:
(Intercept)           wt           am  
    -148.59       116.47        11.31  
于 2013-08-05T23:01:35.443 に答える