2016-07-07 15 views
1

私は時系列の行列Yを持っています。行数は観測数です。私はまた、予測子の行列Xを持っています。これらの列に固有の予測変数についてYの列を回帰したいと思います。 1と0の論理行列は、i番目の変数をj番目のプレディクタで回帰する必要があるかどうかを示します。例えばRの各変数に異なる予測変数を持つ多変量回帰

ここ
y1 <- c(1, 2, 3, 5, 7, 3, 2, 1) 
y2 <- c(5, 1, 3, 1, 3, 4, 5, 3) 
y3 <- c(1, 3, 4, 5, 1, 2, 1, 2) 
x1 <- c(2, 5, 4, 2, 1, 3, 6, 7) 
x2 <- c(1, 5, 1, 3, 4, 2, 1, 3) 

Y <- cbind(y1, y2, y3) 
X <- cbind(x1, x2) 

logical <- matrix(c(1,1,0,1,0,1), 3, 2) 
lm <- lm(Y ~ ??? - 1) 

y1x2x1x2y2のみx1上とy3に回帰されなければなりません。

lm機能でモデルを指定しようとしましたが、これを実行できませんでした。 $coefficientsの結果では、j番目のプレディクタで変数が回帰していないときに "0"を表示します。

重い汚れのないループで行うことはできますか?

+0

'reformulate'関数はこれを少し簡単にするかもしれません。 – lmo

+0

ああ、あまりにも悪い! ... – Petreius

+0

私は初心者ですから、私はまだlapply()で安心していません。上記のおもちゃのデータセットの例を教えてください。 – Petreius

答えて

1

残念ながら、1つの数式ではできません。このジョブを実行するには、ループforまたはlapply()を使用する必要があります。この上に行くを持っている:

y1 <- c(1, 2, 3, 5, 7, 3, 2, 1) 
y2 <- c(5, 1, 3, 1, 3, 4, 5, 3) 
y3 <- c(1, 3, 4, 5, 1, 2, 1, 2) 
x1 <- c(2, 5, 4, 2, 1, 3, 6, 7) 
x2 <- c(1, 5, 1, 3, 4, 2, 1, 3) 

flst <- c(y1 ~ x1 + x2, y2 ~ x1, y3 ~ x2) ## formula list 
lmlist <- lapply(flst, lm) ## linear model list 

あなたが最初にそれらを介してループにlapplyを使用して、リスト内のすべての式を集めます。最後に、lmlistに3つの線形モデルがあります。最初に抽出するにはlmlist[[1]]を使用します。

lmlist[[1]] 
#Call: 
#FUN(formula = X[[i]]) 

#Coefficients: 
#(Intercept)   x1   x2 
#  4.2972  -0.6521  0.4592 
関連する問題