[英]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之间存在线性关系。
现在这是我的问题:
如何找到(x1,x2)的最佳值,以使拟合模型在这对值处达到最大值?
现在假设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
因此,在此示例中,当X1
和X2
不受约束时, 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)
。
有几件事情要考虑:
最后,您应该知道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.