lines() 根本不显示我的非线性回归的线性预测
lines() simply doesn't show linear prediction of my non-linear regression
我在使用非线性回归绘制线条时遇到了问题,因为绘制变量的长度不同,因为回归忽略了一些观察结果。我使用 na.action=na.exclude 解决了这个问题。现在 "lengths differ" 警告不再显示,但 lines() 根本不显示我的非线性预测。
如果这有点含糊,我很抱歉,但我真的不知道发生了什么,因为没有错误消息。
这是我使用的代码:
data_lm <- read.csv('notaport.csv', sep=';', dec=',')
regs <- lm(notaport ~ tamturma, data=data_lm)
regm <- lm(notaport ~ tamturma + I(tamturma**2), data=data_lm, na.action = na.exclude)
plot(data_lm$tamturma, data_lm$notaport, xlab='Tamanho da Turma', ylab = 'Notas de Português', pch='.')
abline(regs, col='red')
linearpred_regm <- predict(regm)
plot(data_lm$tamturma, data_lm$notaport, xlab='Tamanho da Turma', ylab = 'Notas de Português', pch='.')
lines(linearpred_regm, data_lm$tamturma, col='red')
summary(data_lm)
summary(regs)
summary(regm)
我的数据可以在We Transfer中用这个link下载。
您正在将 y 轴变量传递给 x 轴,反之亦然。此外,您需要确保您的 x 变量的顺序正确:
plot(data_lm$tamturma, data_lm$notaport, xlab='Tamanho da Turma', ylab= 'Notas de Português', pch='.')
ord <- order(data_lm$tamturma)
lines(data_lm$tamturma[ord], linearpred_regm[ord], col='red')
有时曲线需要更平滑。也许在这种情况下不会,但在其他时候可能会。那么你可以使用这个方法:
newdata <- data.frame(tamturma=seq(6,65,0.1))
linearpred_regm <- predict(regm, newdata=newdata)
lines(newdata$tamturma, linearpred_regm, col='red')
我在使用非线性回归绘制线条时遇到了问题,因为绘制变量的长度不同,因为回归忽略了一些观察结果。我使用 na.action=na.exclude 解决了这个问题。现在 "lengths differ" 警告不再显示,但 lines() 根本不显示我的非线性预测。
如果这有点含糊,我很抱歉,但我真的不知道发生了什么,因为没有错误消息。
这是我使用的代码:
data_lm <- read.csv('notaport.csv', sep=';', dec=',')
regs <- lm(notaport ~ tamturma, data=data_lm)
regm <- lm(notaport ~ tamturma + I(tamturma**2), data=data_lm, na.action = na.exclude)
plot(data_lm$tamturma, data_lm$notaport, xlab='Tamanho da Turma', ylab = 'Notas de Português', pch='.')
abline(regs, col='red')
linearpred_regm <- predict(regm)
plot(data_lm$tamturma, data_lm$notaport, xlab='Tamanho da Turma', ylab = 'Notas de Português', pch='.')
lines(linearpred_regm, data_lm$tamturma, col='red')
summary(data_lm)
summary(regs)
summary(regm)
我的数据可以在We Transfer中用这个link下载。
您正在将 y 轴变量传递给 x 轴,反之亦然。此外,您需要确保您的 x 变量的顺序正确:
plot(data_lm$tamturma, data_lm$notaport, xlab='Tamanho da Turma', ylab= 'Notas de Português', pch='.')
ord <- order(data_lm$tamturma)
lines(data_lm$tamturma[ord], linearpred_regm[ord], col='red')
有时曲线需要更平滑。也许在这种情况下不会,但在其他时候可能会。那么你可以使用这个方法:
newdata <- data.frame(tamturma=seq(6,65,0.1))
linearpred_regm <- predict(regm, newdata=newdata)
lines(newdata$tamturma, linearpred_regm, col='red')