Создадим искусственный набор данных:
df <- data.frame(x=c(1,2,3,4,6), y=c(3,6,7,8,14))
plot(y ~ x, df)
Теперь попробуем провести прямую, которая проходит через эти точки.
fit <- lm(y ~ x, data=df)
summary(fit)
##
## Call:
## lm(formula = y ~ x, data = df)
##
## Residuals:
## 1 2 3 4 5
## -0.08108 0.86486 -0.18919 -1.24324 0.64865
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.0270 0.9053 1.134 0.33905
## x 2.0541 0.2492 8.243 0.00374 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.9586 on 3 degrees of freedom
## Multiple R-squared: 0.9577, Adjusted R-squared: 0.9436
## F-statistic: 67.95 on 1 and 3 DF, p-value: 0.003738
мы видим, что это прямая вида \(y=kx+b\) с коэффициентами \(b=1\) (Intercept) и \(k=2\) (коэффициент при переменной x). То есть с увеличением \(x\) yа 1 значение \(y\) увеличивается на 2.
df$y_predicted <- predict(fit)
plot(y ~ x, data=df)
abline(fit)
points(y_predicted ~ x, data=df, col='red')
Здесь
predict посчитало значение y для соответствующих значений x, как если бы точки действительно лежали на прямой, abline нарисовала прямую, а points(y_predicted ~ x, data=df, col='red') нарисовала «предсказанные» точки (красным).