2017-09-29 17 views
0

まず、私はかなりこれに私のメソッド/思考が間違っている可能性がありますので、私はRとRスタジオを使用してデータフレームにxlsxデータセットをインポートしました。単純な線形回帰を実行するために、列名をループして、すべての変数を正確に「」にすることができます。だからここに私のコードだ:Rループの変数名の線形回帰モデルを実行する

temp <- c() 
for(i in 1:length(col10)){ 
    temp = col10[[i]] 
    lm.test <- lm(Total_Transactions ~ temp[[i]], data = data) 
    print(temp) #actually prints out the right column names 
    i + 1 
} 

は、線形回帰モデルでこれらの変数を配置するループを実行することも可能です:ここで

indx <- grepl('_10_', colnames(data)) #list returns all of the true values in the data set 
col10 <- names(data[indx]) #this gives me the names of the columns I want 

はループのため私は、エラーを返す必要がありますか?私が得ているエラーは次のとおりです: "model.frame.defaultのエラー(数式= Total_Transactions〜temp [[i]]、変数の長さが違う(temp [[i]]") "誰かが私を指すことができる場合

+0

[this](https://stackoverflow.com/questions/25036007/linear-regression-loop-for-each-independent-variable-individually-against-depend)の質問をご覧ください。それでも助けが必要な場合は、そう言いなさい。 –

+0

@RuiBarradas私はそのコードを試しましたが、最終的に 'res.models [[" mpg〜disp "]]'のところでは、すべての変数名を追加したいと思います[[mpg〜disp + x2 + x3 + .... x18]。 – Stick

答えて

2

[OK]を、私は答えを投稿します。私は、EXAとしてデータセットmtcarsを使用します。 mple。私はそれがあなたのデータセットで動作すると信じています。
まず、店舗lm.test、クラスlistのオブジェクトを作成します。あなたのコードでは、ループのたびにlm(.)の出力を割り当てています。最後には最後のものしか持たないでしょう。他のものは全て新しいもので書き直されていました。
次に、ループ内で関数reformulateを使用して回帰式をまとめます。これを行う他の方法がありますが、これは簡単です。

# Use just some columns 
data <- mtcars[, c("mpg", "cyl", "disp", "hp", "drat", "wt")] 
col10 <- names(data)[-1] 

lm.test <- vector("list", length(col10)) 

for(i in seq_along(col10)){ 
    lm.test[[i]] <- lm(reformulate(col10[i], "mpg"), data = data) 
} 

lm.test 

ここでは、あらゆる種類の結果リストを使用できます。私はあなたのためにlapplyと友人を使用して開始することをお勧めします。要約を得るために

cfs <- lapply(lm.test, coef) 

:係数を抽出するために、例えば

smry <- lapply(lm.test, summary) 

あなたは*apply機能を理解してもらったことは非常に簡単になります。

+0

ありがとうございます!私はこれを私のコードに実装しました。私は私の最初の2行をあなたの代わりに使って、すべての列を取得しましたが、それでもまだ作業しました – Stick

+0

要約を結合することも可能でしょうか?もし心配しなければ – Stick

+1

@Stick 'do.call(rbind、lapply(smry、' [['、" coefficients "))'を試してください。 –

0

回帰で使用される列のみを選択する一時的なサブセットを作成することができます。この方法では、式に一時的な名前を挿入する必要はありませんあなたのコードにまでこだわっ。

、これはトリックを行う必要があります。

for(i in 1:length(col10)){ 
tempSubset <- data[,c("Total_Transactions", col10[i]] 
lm.test <- lm(Total_Transactions ~ ., data = tempSubset) 
i + 1 
} 
+0

これが作成するサブセットは「Total_Transactions」であり、最後の変数は「col10」 – Stick

関連する問題