2016-09-28 7 views
0

Я хочу построить простую линию регрессии в R. Я ввел данные, но линия регрессии кажется неправильной. Может кто-нибудь помочь?строка регрессии участка в R

x <- c(10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120) 
y <- c(10, 18, 25, 29, 30, 28, 25, 22, 18, 15, 11, 8) 
df <- data.frame(x,y) 
plot(y,x) 
abline(lm(y ~ x)) 

enter image description here

enter image description here

+0

В любом случае, ОП черчения параболы, эффективно. Жесткий, чтобы получить осмысленную линейную линию, которая наилучшим образом соответствует этому. – blacksite

+0

Справа. Я полагаю, что больше информации требуется от имени ОП, относительно того, какая линия наилучшего соответствия, которую они ищут, должна быть более параболической или относиться к опечатке, о которой вы упомянули ... Это еще предстоит выяснить! – blacksite

+0

Спасибо всем! Я приложил фотографию оригинальной проблемы. Я решил часть a и часть b. Но почему-то я чувствую, что это неправильно, потому что наклон, который я получаю, положительный. –

ответ

2

О, @ GBR24 имеет хорошие форматированные данные. Затем я немного поработаю на основе моего комментария.

fit <- lm(y ~ poly(x, 3)) ## polynomial of degree 3 
plot(x, y) ## scatter plot (colour: black) 

x0 <- seq(min(x), max(x), length = 20) ## prediction grid 
y0 <- predict.lm(fit, newdata = list(x = x0)) ## predicted values 
lines(x0, y0, col = 2) ## add regression curve (colour: red) 

enter image description here

2
x <- c(10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120) 
y <- c(10, 18, 25, 29, 30, 28, 25, 22, 18, 15, 11, 8) 

df <- data.frame(x,y) 

plot(y ~ x, df) 
model <- lm(y ~ x, df) 

enter image description here

Вы пытаетесь соответствовать линейной функции для параболических данных. Таким образом, вы не окажетесь в хорошей линии.

Нечто подобное может работать:

model <- lm(y ~ I(x^2), df) 

plot(y ~ x, df) 
lines(df$x, predict(model), col = 'blue') 

enter image description here

Хотя это не очень хорошо подходят, мы могли бы попробовать 3rd- или полиномиальные модели 4-го порядка:

model <- lm(y ~ I(x^3), df) 
lines(df$x, predict(model), col = 'red') 
model <- lm(y ~ I(x^4), df) 
lines(df$x, predict(model), col = 'green') 

enter image description here

Хотя это не тоже очень хорошо. Посмотрите на ответ Чжэюань для более подходящей функции.