R:rpart具有多个值预测

问题描述 投票:1回答:1

我在比较不同方法之间的预测,第一种方法是线性回归(lm),第二种方法是rpart

lm没关系,我发送2个变量,我得到2个变量。

但是对于rpart,我不会得到相同的,我只得到1个变量。

为什么不为y1获得2个结果,为y2获得另一个结果1

这是我的代码

######################################
##  S E T U P
######################################

x1 <- c(11,  21,  20,  36,  27,  15,  7,   19,  40,  5 )
x2 <- c(142, 175, 175, 180, 181, 160, 110, 170, 177, 92)
x3 <- c(44,  78,  79,  82,  92,  56,  31,  66,  91,  29)
y1 <- c(36,  41,  42,  44,  45,  40,  34,  41,  45,  32)
y2 <- c(7,   13,  13,  17,  19,  11,  6,   12,  19,  4)

TData <- data.frame(x1=x1[1:7], x2=x2[1:7], x3=x3[1:7], y1=y1[1:7], y2=y2[1:7])
PData <- data.frame(x1=x1[8:10], x2=x2[8:10], x3=x3[8:10], y1=y1[8:10], y2=y2[8:10])

######################################
## LINEAR REGRESSION
######################################

lm_Result <- lm(cbind(y1,y2)~., TData)

lm_pred <- predict(lm_Result, PData)

lr_pred[,"y1"]
lr_pred[,"y2"]


######################################
## RPART
######################################

library(rpart)

rpart_Result <- rpart(cbind(y1,y2)~., TData)

rpart_pred <- predict(rpart_Result, PData)
r prediction rpart
1个回答
1
投票

为什么不为y1获得2个结果,为y2获得另一个结果1

这是因为predict方法返回不同的类,具体取决于您传递的参数。

如果你试试:

?Predict

然后它说:

预测是来自各种模型拟合函数的结果的预测的通用函数。该函数调用依赖于第一个参数的类的特定方法。

它的价值是:

predict返回的值的形式取决于其参数的类。

因此,lm方法的响应是类lm的对象,同时rpart的返回值是类rpart的对象

因此,预测方法为您提供不同的答案。


你能做些什么来获得相同的结果?

你的lm方法建立了一个模型来估计y1y2的值。所以,你应该以一种方式运行rpart,它也可以获得y1y2的值。

要在你的rpart方法中定义method="class",但它失败了。因为它无法对2个功能进行分类。因此,最大的问题来自你的公式,你有cbind(y1,y2)~.

阅读Rpart document可以帮助你很多。

© www.soinside.com 2019 - 2024. All rights reserved.