Чтобы расширить мой комментарий выше, вот пример, использующий набор данных mtcars
, где мы подгоняем линейную модель вида mpg = beta0 + beta1 * disp
.
fit <- lm(mpg ~ disp, data = mtcars)
summary(fit)
#
#Call:
#lm(formula = mpg ~ disp, data = mtcars)
#
#Residuals:
# Min 1Q Median 3Q Max
#-4.8922 -2.2022 -0.9631 1.6272 7.2305
#
#Coefficients:
# Estimate Std. Error t value Pr(>|t|)
#(Intercept) 29.599855 1.229720 24.070 < 2e-16 ***
#disp -0.041215 0.004712 -8.747 9.38e-10 ***
#---
#Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
#
#Residual standard error: 3.251 on 30 degrees of freedom
#Multiple R-squared: 0.7183, Adjusted R-squared: 0.709
#F-statistic: 76.51 on 1 and 30 DF, p-value: 9.38e-10
Мы генерируем некоторые новые данные для disp
и используем коэффициенты модели, чтобы предсказать ответ для mpg
.
df <- data.frame(disp = seq(1, 1000, length.out = 20))
df$mpg <- predict(fit, newdata = df)
Теперь мы адаптируем ту же модель к новым данным.
fit.new <- lm(mpg ~ disp, data = df)
#
#Call:
#lm(formula = mpg ~ disp, data = df)
#
#Residuals:
# Min 1Q Median 3Q Max
#-1.720e-14 -3.095e-15 1.302e-15 3.618e-15 5.719e-15
#
#Coefficients:
# Estimate Std. Error t value Pr(>|t|)
#(Intercept) 2.960e+01 2.235e-15 1.325e+16 <2e-16 ***
#disp -4.122e-02 3.819e-18 -1.079e+16 <2e-16 ***
#---
#Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
#
#Residual standard error: 5.178e-15 on 18 degrees of freedom
#Multiple R-squared: 1, Adjusted R-squared: 1
#F-statistic: 1.165e+32 on 1 and 18 DF, p-value: < 2.2e-16
#
#Warning message:
#In summary.lm(fit.new) : essentially perfect fit: summary may be unreliable
Обратите внимание, что оценки идентичны (но стандартные отклонения и t статистика не!). Также обратите внимание на предупреждение в нижней части подгонки второй модели.
Обновление
Если у вас есть коэффициенты beta0
и beta1
, просто рассчитайте ответ как
beta0 <- coef(fit)[1]
beta1 <- coef(fit)[2]
df <- data.frame(disp = seq(1, 1000, length.out = 20))
df$mpg <- beta0 + df$disp * beta1