如何为二次模型创建预测线 [英] How to create prediction line for Quadratic Model

查看:40
本文介绍了如何为二次模型创建预测线的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试为二次模型创建二次预测线.我正在使用 R 附带的 Auto 数据集.我可以轻松地为线性模型创建预测线.然而,二次模型会产生看起来很疯狂的线条.这是我的代码.

I am trying to create a quadratic prediction line for a quadratic model. I am using the Auto dataset that comes with R. I had no trouble creating the prediction line for a linear model. However, the quadratic model yields crazy looking lines. Here is my code.

# Linear Model
plot(Auto$horsepower, Auto$mpg,
     main = "MPG versus Horsepower",
     pch = 20)

lin_mod = lm(mpg ~ horsepower,
             data = Auto)
lin_pred = predict(lin_mod)


lines(
  Auto$horsepower, lin_pred,
  col = "blue", lwd = 2
)


# The Quadratic model
Auto$horsepower2 = Auto$horsepower^2
quad_model = lm(mpg ~ horsepower2,
                data = Auto)
quad_pred = predict(quad_model)

lines(
  Auto$horsepower,
  quad_pred,
  col = "red", lwd = 2
)

我 99% 确定问题出在预测函数上.为什么我不能产生一个整洁的二次预测曲线?我尝试的以下代码不起作用 - 可能相关吗?:

I am 99% sure that the issue is the prediction function. Why can't I produce a neat looking quadratic prediction curve? The following code I tried does not work—could it be related?:

quad_pred = predict(quad_model, data.frame(horsepower = Auto$horsepower))

谢谢!

推荐答案

问题在于 x 轴 值未排序.如果是线性模型并不重要,但如果它是多项式就很明显了.我创建了一个新的排序数据集,它工作正常:

The issue is that the x-axis values aren't sorted. It wouldn't matter if was a linear model but it would be noticeable if it was polynomial. I created a new sorted data set and it works fine:

library(ISLR) # To load data Auto

# Linear Model
plot(Auto$horsepower, Auto$mpg,
     main = "MPG versus Horsepower",
     pch = 20)

lin_mod = lm(mpg ~ horsepower,
             data = Auto)
lin_pred = predict(lin_mod)


lines(
  Auto$horsepower, lin_pred,
  col = "blue", lwd = 2
)


# The Quadratic model
Auto$horsepower2 = Auto$horsepower^2

# Sorting Auto by horsepower2
Auto2 <- Auto[order(Auto$horsepower2), ]
quad_model = lm(mpg ~ horsepower2,
                data = Auto2)


quad_pred = predict(quad_model)


lines(
  Auto2$horsepower,
  quad_pred,
  col = "red", lwd = 2
)

这篇关于如何为二次模型创建预测线的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆