繁体   English   中英

R中多元回归的最佳预测值

[英]optimal predictor value for multivariate regression in R

假设我有1个响应变量Y和2个预测变量X1和X2,如下所示

Y    X1   X2
2.3  1.1  1.2
2.5  1.24 1.17
......

假设我坚信以下模型效果很好

 fit <- lm(Y ~ poly(X1,2) + X2) 

换句话说,Y和X1之间存在二次关系,Y和X2之间存在线性关系。

现在这是我的问题:

  1. 如何找到(x1,x2)的最佳值,以使拟合模型在这对值处达到最大值?

  2. 现在假设X2必须固定为某个特定值,如何找到最佳x1以使拟合值最大化?

因此,这是一种执行此操作的经验方法:

# create some random data...
set.seed(1)
X1 <- 1:100
X2 <- sin(2*pi/100*(1:100))
df <- data.frame(Y=3 + 5*X1 -0.2 * X1^2 + 100*X2 + rnorm(100,0,5),X1,X2)
fit <- lm(Y ~ poly(X1,2,raw=T) + X2, data=df)
# X1 and X2 unconstrained
df$pred <- predict(fit)
result  <- with(df,df[pred==max(pred),])
result
#           Y X1        X2     pred
# 19 122.8838 19 0.9297765 119.2087

# max(Y|X2=0)
newdf       <- data.frame(Y=df$Y, X1=df$X1, X2=0)
newdf$pred2 <- predict(fit,newdata=newdf)
result2     <- with(newdf,newdf[pred2==max(pred2),])
result2
#           Y X1 X2    pred2
#12 104.6039 12  0 35.09141

因此,在此示例中,当X1X2不受约束时, Y = 119.2的最大值Y = 119.2并出现在(X1,X2) = (122.8,0.930) X2约束为0时, Y = 35.1的最大值Y = 35.1并出现在(X1,X2) = (104.6,0)

有几件事情要考虑:

  1. 这些是数据空间中的全局最大值。 换句话说,如果您的真实数据包含大量变量,则可能会存在局部最大值,您将无法通过这种方式找到它。
  2. 此方法的分辨率仅与数据集一样大。 因此,如果真正的最大值出现在数据点之间的某个点,则您将不会以这种方式找到它。
  3. 此技术仅限于数据集的范围。 因此,如果真正的最大值不在这些范围之内,那么您将找不到它。 另一方面,恕我直言,在数据范围之外使用模型是鲁ck的定义。

最后,您应该知道poly(...)会产生正交多项式 ,该多项式将产生拟合,但是系数将很难解释。 如果你真的想要一个二次拟合,如A + B×X + C××2,你最好做明确与Y~X1 +I(X1^2)+X2 ,或使用raw=T在调用poly(...)

归功于@sashkello

基本上,我必须从lm对象中提取系数,并与相应的项相乘以形成公式以继续进行。

我认为这不是很有效。 如果这是数百个预测变量的回归,该怎么办?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM