Добавить квадратичную кривую

Я пытаюсь добавить квадратную кривую к сюжету.

abline(lm(data~factor+I(factor^2)))

Отображаемая регрессия является линейной, а не квадратичной, и я получаю это сообщение:

Message d'avis: В abline (lm (коэффициент данных + я (коэффициент ^ 2)), col = палитра [итерация]): использование des deux premiers des 3 коэффициенты дегрессии

что означает:

Использование первых 2 из 3 коэффициентов регрессии

При запуске только функции lm() я не получаю никаких сообщений.

Вот пример данных:

factor <- 1:7
data <- c(0.1375000,0.2500000,0.3416667,0.4583333,0.7250000,0.9166667,1.0000000)

Ответ 1

Вместо abline используйте fitted, который дает вам вектор той же длины, что и ваш ввод прогнозов:

fitted(lm(data~factor+I(factor^2)))
#         1         2         3         4         5         6         7 
# 0.1248016 0.2395833 0.3699405 0.5158730 0.6773810 0.8544643 1.0471230 

Таким образом, что-то вроде:

plot(factor, fitted(lm(data~factor+I(factor^2))), type="l")

Ответ 2

Вы можете использовать predict для этого:

plot(factor,data)
lines(predict(lm(data~factor+I(factor^2))))

enter image description here

Ответ 3

До сих пор я не мог получить ответы, чтобы работать, так как у набора данных, который я использовал, есть значения x, которые не увеличиваются (как заявлено Дэвидом Робинсоном выше). Вот как я это решил...

require(ISLR)
plot(mpg~horsepower, data=Auto)

# fit the model
glm.fit = glm(mpg~poly(horsepower,2), data=Auto)

# create 100 x-values based on min/max of plotted values
minMax = range(Auto$horsepower)
xVals = seq(minMax[1], minMax[2], len = 100) 

# Use predict based on a dataframe containing 'horsepower'
yVals = predict(glm.fit, newdata = data.frame(horsepower = xVals))

lines(xVals, yVals)

Ответ 4

спасибо за все эти ценные ответы. Будь осторожен:

использование

Используйте прогнозирование на основе информационного кадра, содержащего "лошадиные силы"

yVals = predict(glm.fit, newdata = data.frame(horsepower=xVals)

Используйте прогнозирование на основе информационного кадра, содержащего "лошадиные силы"

yVals = predict(lm.fit, newdata = data.frame(horsepower=xVals)

lm.fit - это функция