R 为什么这个回归图只绘制了4个回归系数中的2个?

R 为什么这个回归图只绘制了4个回归系数中的2个?,r,regression,R,Regression,我有以下一组数据: 我试图绘制一个总重量与直径的回归曲线 数据散点图显然不是线性函数。(由于某种原因,我无法附加它。) 考虑一个二次回归模型。我是这样设置的: abalone <- read.csv("abalone.data") diameter <- abalone$Diameter diameter2 <- diameter^2 whole <- abalone$Whole.weight quadraticModel <- lm( whole ~ diame

我有以下一组数据:

我试图绘制一个总重量与直径的回归曲线

数据散点图显然不是线性函数。(由于某种原因,我无法附加它。)

考虑一个二次回归模型。我是这样设置的:

abalone <- read.csv("abalone.data")
diameter <- abalone$Diameter
diameter2 <- diameter^2
whole <- abalone$Whole.weight

quadraticModel <- lm( whole ~ diameter + diameter2)
但是,当我绘图时:

abline(quadraticModel)
我得到以下警告:

Warning message:
In abline(quadraticModel) :
  only using the first two of 3 regression coefficients

这意味着我得到的是一个直线图,这不是我的目标。有人能给我解释一下为什么会发生这种情况以及可能的解决办法吗?我对立方图等也有同样的问题(它们总是只绘制前两个系数)。

您不能使用
abline
绘制多项式回归拟合。试试这个:

x<-sort(diameter)
y<-quadraticModel$fitted.values[order(diameter)]
lines(x, y) 

x我不认为你产生的是二次拟合,而是使用直径和平方直径的线性拟合。请尝试以下方法:

library(stats)

df <- read.csv("abalone.data")
var_names <-
  c(
    "Sex",
    "Length",
    "Diameter",
    "Height",
    "Whole_weight",
    "Shucked_weight",
    "Viscera_weight",
    "Shell_weight",
    "Rings"
  )
colnames(df) <- var_names


fit <- lm(df$Whole_weight ~ poly(df$Diameter, 2))
summary(fit)

diameter <- df$Diameter
predicted_weight <- predict(fit, data.frame(x = diameter))

plot(diameter, predicted_weight)
库(stats)

df
abline
只画直线。您是否尝试过绘制(方形模型)
@AndrewGustar,它根据拟合值绘制残差,方法是在原子向量上不能使用$运算符,因此这会给出一个错误,因为quadraticModel是一个原子向量。我尝试了getElement(quadraticModel,fitted.values),但没有成功。是的,你可以,我已经修改了答案,请再次检查。@Joe,检查它!这是不对的:我不认为你用直径产生的二次拟合是线性拟合,平方直径是二次模型<代码>多边形(直径,2,原始=真)
应给出与
直径+I(直径^2)
library(stats)

df <- read.csv("abalone.data")
var_names <-
  c(
    "Sex",
    "Length",
    "Diameter",
    "Height",
    "Whole_weight",
    "Shucked_weight",
    "Viscera_weight",
    "Shell_weight",
    "Rings"
  )
colnames(df) <- var_names


fit <- lm(df$Whole_weight ~ poly(df$Diameter, 2))
summary(fit)

diameter <- df$Diameter
predicted_weight <- predict(fit, data.frame(x = diameter))

plot(diameter, predicted_weight)
> summary(fit)

Call:
lm(formula = df$Whole_weight ~ poly(df$Diameter, 2))

Residuals:
     Min       1Q   Median       3Q      Max 
-0.66800 -0.06579 -0.00611  0.04590  0.97396 

Coefficients:
                       Estimate Std. Error t value Pr(>|t|)    
(Intercept)            0.828818   0.002054  403.44   <2e-16 ***
poly(df$Diameter, 2)1 29.326043   0.132759  220.90   <2e-16 ***
poly(df$Diameter, 2)2  8.401508   0.132759   63.28   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.1328 on 4173 degrees of freedom
Multiple R-squared:  0.9268,    Adjusted R-squared:  0.9267 
F-statistic: 2.64e+04 on 2 and 4173 DF,  p-value: < 2.2e-16