二次多项式回归预测的函数的最小值
minimum of a function predicted by 2nd-degree polynomial regression
我需要使用二阶多项式的线性模型将曲线拟合到我的数据中,例如:
data <- data.frame(x=c(0,1,2,3,4,5), y=c(0, 2, 5, 10, 17, 26))
lm1 <- lm(y~x+I(x^2), data=data)
plot(y~x, data=data)
points(predict(lm1)~data$x, type="l", col="blue", lwd=1)
然后我想找到模型预测的函数的最小值。我可以提取系数来写函数
a<-summary(lm1)$coef[,1][1]
b<-summary(lm1)$coef[,1][2]
c<-summary(lm1)$coef[,1][3]
但之后我不知道该怎么做,也没有在 Google 上找到答案。计算那个不是R中的函数吗?还是我应该计算导数的零?
你必须尝试类似的东西:
predict(lm1, interval="prediction")[, "lwr"]
设置数据和拟合模型:
dd <- data.frame(x=c(0,1,2,3,4,5),
y=c(0, 2, 5, 10, 17, 26))
lm1 <- lm(y~x+I(x^2), data=dd)
获取预测:
pp <- data.frame(x=seq(-3,5,length=51))
pp$y <- predict(lm1,newdata=pp)
函数到 return 最小 x/y 值:
getMin <- function(model) {
cc <- setNames(as.list(coef(model)),c("a","b","c"))
with(cc,
c(x=-b/(2*c),y=a-b^2/(4*c)))
}
mm <- getMin(lm1)
绘制结果:
plot(y~x,data=dd,xlim=c(-3,5))
with(pp,lines(x,y,col=4))
points(mm[1],mm[2],pch=16,col=2)
我需要使用二阶多项式的线性模型将曲线拟合到我的数据中,例如:
data <- data.frame(x=c(0,1,2,3,4,5), y=c(0, 2, 5, 10, 17, 26))
lm1 <- lm(y~x+I(x^2), data=data)
plot(y~x, data=data)
points(predict(lm1)~data$x, type="l", col="blue", lwd=1)
然后我想找到模型预测的函数的最小值。我可以提取系数来写函数
a<-summary(lm1)$coef[,1][1]
b<-summary(lm1)$coef[,1][2]
c<-summary(lm1)$coef[,1][3]
但之后我不知道该怎么做,也没有在 Google 上找到答案。计算那个不是R中的函数吗?还是我应该计算导数的零?
你必须尝试类似的东西:
predict(lm1, interval="prediction")[, "lwr"]
设置数据和拟合模型:
dd <- data.frame(x=c(0,1,2,3,4,5),
y=c(0, 2, 5, 10, 17, 26))
lm1 <- lm(y~x+I(x^2), data=dd)
获取预测:
pp <- data.frame(x=seq(-3,5,length=51))
pp$y <- predict(lm1,newdata=pp)
函数到 return 最小 x/y 值:
getMin <- function(model) {
cc <- setNames(as.list(coef(model)),c("a","b","c"))
with(cc,
c(x=-b/(2*c),y=a-b^2/(4*c)))
}
mm <- getMin(lm1)
绘制结果:
plot(y~x,data=dd,xlim=c(-3,5))
with(pp,lines(x,y,col=4))
points(mm[1],mm[2],pch=16,col=2)