3つの従属変数のセットと、6つの独立変数がグループ化変数によってタグ付けされたデータフレームがあるとします。この形式の例は、以下のサンプルコードで生成されます:私はの線に沿って何かを使用することができX6を通じてX1のセットにY1、Y2、Y3のそれぞれを退行したい場合最初にgroup_by()を実行し、列を使ってlm()を反復する方法は?
library(tidyverse)
library(broom)
n <- 15
df <- data.frame(groupingvar= sample(letters[1:2], size = n, replace = TRUE),
y1 = rnorm(n,10,1), y2=rnorm(n,100,10), y3=rnorm(n,1000,100),
x1= rnorm(n,10,1), x2=rnorm(n,10,1), x3=rnorm(n,10,1),
x4=rnorm(n,10,1), x5=rnorm(n,10,1), x6=rnorm(n,10,1))
df <- arrange(df,groupingvar)
:
(「応答が行列の場合、線形モデルは、行列の各列に最小二乗によって別々に嵌合されている。」ヘルプ)(LMから次の行を使用することによって)y <- as.matrix(select(df,y1:y3))
x <- as.matrix(select(df,x1:x6))
regs <-lm(y~x)
coeffs <- tidy(regs)
coeffs <- arrange(coeffs,response, term)
しかし、グループ化変数で最初にグループ化し、次にlm関数を適用する必要がある場合私はそれをどうやって行うのかについてはあまりよく分かりません。私は以下のことを試しましたが、両方のグループについて同じ係数セットを生成します。
regs2 <- df %>% group_by(groupingvar) %>%
do(fit2 = lm(as.matrix(select(df,y1:y3)) ~ as.matrix(select(df,x1:x6))))
coeffs2 <- tidy(regs2,fit2)
coeffs2 <- arrange(coeffs2,groupingvar, response)
"そしてlm関数" ' - >' Hあなたは 'lapply()'を使って試しましたか? – d8aninja
正しく使用する方法がわかりません。私は要素 "y1〜x1 + x2 + ... + x6"、 "y2〜x1 + x2 + ... + x6"、 "y3〜x1 + x2 + ... + x6"という数式リストを作成しようとしました。このリストをlm()に渡そうとしましたが、適切な構文を思いついたと思います。 – user1689945
apply、sapply、lapplyなどのファミリーは、あなたの理解に絶対に重要です。 HadleyのAdvanced R(オンラインで入手可能)または書籍ライブラリの多くの例を参照してください – d8aninja