5

私はRほんの少ししか使用せず、データフレームを使用しないため、predictの正しい使用法を理解するのは困難です。私は自分のデータをデータフレームではなく単純な行列に入れてaおりb、それぞれN x pM x p行列であるとと呼んでいます。回帰を実行できますlm(a[,1] ~ a[,-1])lm結果のオブジェクトを使用してから予測b[,1]したいと思いますb[,-1]。私の素朴な推測はうまくいきpredict(lm(a[,1] ~ a[,-1]), b[,-1])ません。lm予測のベクトルを取得するためにを使用するための正しい構文は何ですか?

4

4 に答える 4

7

data.frame行列全体を:の1つの列に格納できます。

x <- a [, -1]
y <- a [,  1]
data <- data.frame (y = y, x = I (x))
str (data)
## 'data.frame':    10 obs. of  2 variables:
## $ y: num  0.818 0.767 -0.666 0.788 -0.489 ...
## $ x: AsIs [1:10, 1:9] 0.916274.... 0.386565.... 0.703230.... -2.64091.... 0.274617.... ...

model <- lm (y ~ x)
newdata <- data.frame (x = I (b [, -1]))
predict (model, newdata) 
##         1         2 
## -3.795722 -4.778784 

plsパッケージに関する論文(Mevik、B.-H. and Wehrens、R. pls Package:Principal Component and Partial Least Squares Regression in R Journal of Statistics Software、2007、18、1-24。)はこの手法を説明しています。 。

分光データセット(キニーネ蛍光)を使用した別の例は、vignette ("flu")私のパッケージhyperSpecにあります。

于 2013-03-07T15:18:32.257 に答える
2

行列から'sを作成data.framするには、次のようにします。

m = matrix(runif(100), 10, 10)
df = as.data.frame(m)

そして線形回帰を実行します:

lm_result = lm(V1 ~ V100, df)
predicted_values = predict(lm_result, b)

または重回帰の場合:

lm_result = lm(V1 ~ V2 + V3 + V4, df)
predicted_values = predict(lm_result, b)

V1列-V4がに存在すると仮定しますb

于 2013-03-07T14:53:11.857 に答える
1

予測を手動で計算できます。

> fit <- lm(a[,1] ~ a[,-1])
> fit$coefficients[1] + b[,-1] %*% fit$coefficients[-1]
     [,1]
[1,]    1
[2,]    2
[3,]    5

ここで、fit$coefficients[1]は切片であり、fit$coefficients[-1]は残差係数%*%です(そして行列の乗算です)。

于 2013-03-07T14:50:09.533 に答える
0

関数内でlmを使用して、さまざまな線形モデルを循環させてから、予測のために1つ抜きの交差検定を実行しています。@PaulHiemstraのsprintfがそのトリックを行いました。

于 2021-11-24T22:45:41.730 に答える