给定一个从函数调用reg = lm(...)
得到的线性模型,如何找到最大的回归函数的系数?
我知道函数optim(...)
,但它需要一个函数作为输入。我还没有想出如何从回归模型中提取这一点。
应该注意的是,我在回归分析中使用了非线性项(准确地说,是平方变量)。
换句话说,回归函数看起来就像
y_hat = kx_11*x_1+kx_12*x_1^2 + kx_21*x_2+kx_22*x_2^2 + ...
发布于 2017-01-03 18:18:51
这里有一个简单的示例来演示1种方法。使用lm对象上的预测()来创建函数。fxn()有点混乱,因为我没有您的确切数据,但是您应该了解这个概念。
#set up dummy data
x1 = -10:10
x2 = runif(21)
y = -x1^2 + x1 - 10*x2^2 + runif(21)*.1
data = data.frame(y= y, x1=x1, x2=x2)
#fit model
m = lm(data=data, y ~ x1 + I(x1^2) + I(x2^2))
#define function that returns predicted value
fxn = function(z){
z = as.data.frame( t(z) )
colnames(z) = colnames(data)[-1]
predict(m, newdata=z)
}
optim(c(0,0), fxn, control=list(fnscale=-1)) #maximizes fxn
$par
[1] 4.991601e-01 -3.337561e-06
$value
[1] 0.3153461
$counts
function gradient
65 NA
$convergence
[1] 0
$message
NULL
https://stackoverflow.com/questions/41454770
复制