更新时间:2022-02-07 06:16:58
这里有一个简单的例子来演示 1 种方法.在 lm 对象上使用 predict() 来创建您的函数.fxn() 有点乱,因为我没有你的确切数据,但你应该明白.
Here is a quick example to demonstrate 1 way. Use predict() on the lm object to create your function. fxn() is a little messy since I don't have your exact data, but you should get the idea.
#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