1

lm()シリーズ(実際には93)の個別の線形回帰に適合させるためにRで使用したいと思います。lm()Rのヘルプマニュアルによると:

「応答が行列の場合、線形モデルは行列の各列に最小二乗法によって個別に適合されます。」

これは、Y 応答マトリックスに欠損データ ポイントがない限り、正常に機能します。欠落している点がある場合、各回帰を利用可能なデータに適合させる代わりに、いずれかの列に欠落しているデータ点があるすべての行が破棄されます。lm()Y のすべての列に個別に適合し、個々の列に欠落しているデータ ポイントがある行を破棄しない ように指定する方法はありますか?

4

1 に答える 1

4

との間でn回帰を実行しようとしている場合は、Rの適用関数を使用する必要があることを指定しません。Y1, Y2, ..., YnXlm()

# create the response matrix and set some random values to NA
values <- runif(50)
values[sample(1:length(values), 10)] <- NA
Y <- data.frame(matrix(values, ncol=5))
colnames(Y) <- paste0("Y", 1:5)
# single regression term
X <- runif(10)

# create regression between each column in Y and X
lms <- lapply(colnames(Y), function(y) {
  form <- paste0(y, " ~ X")
  lm(form, data=Y)
})

# lms is a list of lm objects, can access them via [[]] operator
# or work with it using apply functions once again
sapply(lms, function(x) {
  summary(x)$adj.r.squared
})
#[1] -0.06350560 -0.14319796  0.36319518 -0.16393125  0.04843368
于 2012-09-18T16:49:44.850 に答える