2017-11-22 13 views
1

ここで、n個のランダム変数を作成し、応答の各変数を回帰するn-1個のモデルを作成したいとします。私はこのようなことをすることができます:反復モデルR

x1 <- rnorm(1000, 0, 1) 
x2 <- rnorm(1000, 0, 1) 
x3 <- rnorm(1000, 0, 1) 
x4 <- rnorm(1000, 0, 1) 
x5 <- rnorm(1000, 0, 1) 
x6 <- rnorm(1000, 0, 1) 
x7 <- rnorm(1000, 0, 1) 
x8 <- rnorm(1000, 0, 1) 
y <- rnorm(1000, 0, 1) 

model1 <- lm(y ~ x1) 
model2 <- lm(y ~ x2) 
model3 <- lm(y ~ x3) 
model4 <- lm(y ~ x4) 
model5 <- lm(y ~ x5) 
model6 <- lm(y ~ x6) 
model7 <- lm(y ~ x7) 
model8 <- lm(y ~ x8) 

summary model1 

など。明らかにそれはclunkyであり、多くの簿記を必要とし、誤植から実質的な誤りまで幅広くドアを開く。

私はエラーの余地のないこれを行うもっと簡単な方法があると思いますか?

編集:コメントの解決明快さの欠如についてお詫び申し上げます。ここでの詳細とデータ生成プロセスは、私にとって特に重要ではありません。私はおもちゃのデータを入れました。なぜなら、人々は質問があるとおもちゃのデータを含むのが普通であることに気付きました。

私が実際に探しているのは、これを攻撃するプロセスです。の問題です。私の仕事の中では、大きなデータセットを持つことが一般的であり、異なる変数ペアを比較する多数のモデルを生成したいと考えています。私はすべてのモデルを手作業で書き出したり、Excelのコマンドをつなぎ合わせてカットペーストしたりする、上記のプロセスを使用してきました。実際に非効率的なコードを作成するだけです。にはがRでこれに近づくためのよりクリーンな方法であると考えられました。これは人々が頻繁にやるべきことのようです。

+2

期待される出力は?モデルサマリーが必要ですか?あなたはモデルが欲しいですか?ランダムなデータが必要ですか? 「ランダム変数」を生成するのにどれだけの柔軟性が必要ですか?この時点で、あなたの質問はかなり不明です – bouncyball

+0

回帰を使用して作成し実行するデータの量に依存し、比較的小さい場合はforループを使用できます。たとえば、変数を作成する場合: 'for(i in 1:8){ assign(paste0(" X "、i、sep =" ")、rnorm(1000、0、1)) } – lemonC

答えて

0

あなたは、これはあなたにすべての結果のリストを与える

result_list <- lapply(1:8,function(i){ 
    summary(lm(y ~ get(paste0("x",i)))) 
}) 

を行うことができます。

あなたは行列にそれらを置くことができ、単一の変数として入力する必要がない場合:

y <- rnorm(1000) 
x_mat <- sapply(1:8,rnorm, n = 1000) 
apply(x_mat,2,function(x){ 
    summary(lm(y ~ x)) 
}) 

これが再び描画するreplicateを使用した結果

+0

Oh wow 。それは素晴らしいことです。ありがとうございました! – St4096

+0

あなたは大歓迎です!これが役に立ちましたら[accept and upvote](https://stackoverflow.com/help/someone-answers)に気軽に –

+0

私は試みましたが、残念ながら私は(まだ)upvoteへの評判はありません。 – St4096

1

とリストになりますモデルを推定するために、各サンプル以上のサンプルとプレーンapply

X <- replicate(n = 99, expr = rnorm(1000)) 
y <- rnorm(1000) 
apply(X, 2, function(z) { lm(y~z) }) 
1

使用し

を複製します
y <- rnorm(1000, 0, 1) 

f = function(y){lm(y~rnorm(1000, 0, 1))} 

models = replicate(10, f(y), simplify = FALSE) 

summary(models[[1]])