2013-02-17 2 views
9

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

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

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

сообщения d'Avis: В abline (ом (данные ~ фактора + I (коэффициент^2)) , Col = палитры [итерационный]): использование дез де премьеры дез 3 коэффициентов де регрессионный

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

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

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

Вот образец данных:

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

ответ

10

Вместо использования 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") 
4

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

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

enter image description here

+5

Осторожно, эта строка будет работать * только *, потому что фактор представляет собой последовательность последовательных возрастающих целых чисел, начиная с 1. –

3

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

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


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(lm.fit, newdata = data.frame(horsepower=xVals)) 

lines(xVals, yVals) 
0

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

Используйте

Использование предсказывают, основанные на dataframe объемлющего 'лошадиных сил'

yVals = (glm.fit предсказывают, NewData = data.frame (л.с. = xVals)

Использование прогнозирования на основе dataframe, содержащего '' лошадиных сил

yVals = предсказать (lm.fit, NewData = data.frame (лошадиных сил) = xVals

lm.fit является фу nction

Смежные вопросы