#r #statistics #regression #lm
#r #Статистика #регрессия #lm
Вопрос:
Я хотел бы получить значения линии полиномиальной регрессии второго порядка на основе списка значений параметра.
Вот модель:
fit <- lm(y ~ poly(age, 2) height age*height)
Я хотел бы использовать список значений для age и получить значение в строке регрессии, а также стандартное отклонение и стандартные ошибки.
‘age’ — это непрерывная переменная, но я хочу создать массив дискретных значений и вернуть прогнозируемые значения из линии регрессии.
Пример:
age <- c(10, 11, 12, 13, 14)
Комментарии:
1. Вы имеете в виду, что хотите получить прогнозируемые значения с использованием вашей модели?
2. ДА. Но я хочу получить все значения на основе переменной ‘AGE’ в дискретных точках, даже если это непрерывная переменная.
3. Ваша модель имеет 2 переменные
age
иheight
. Чтобы получить прогнозы, вам необходимо предоставить какage
, так иheight
Ответ №1:
Поскольку у вас есть термин взаимодействия, коэффициенты регрессии для линейного или квадратичного age
термина (или обоих вместе) имеют значение только тогда, когда вы одновременно указываете, какое значение height
рассматривается. Итак, чтобы получить прогнозы, когда высота равна ее среднему значению, вы должны сделать это:
predict(fit, data.frame(age=c(10, 11, 12, 13, 14), height=mean(height) ) )
bouncyball
возникает хороший момент. Вы спрашивали о «стандартном отклонении и стандартных ошибках», но коэффициенты и прогнозы не имеют «стандартных отклонений» в том виде, в каком обычно используется этот термин, но ratehr «стандартные ошибки оценки» обычно сокращаются до просто стандартных ошибок.
predict(fit, data.frame(age=c(10, 11, 12, 13, 14), height=mean(height) ), se.fit=TRUE )
Я полагаю, если бы вы выполнили запуск начальной загрузки и рассмотрели стандартные отклонения отдельных коэффициентов как оценку стандартной ошибки коэффициентов, можно было бы утверждать, что это стандартное отклонение, но оно было бы в масштабе пространства параметров, а не в масштабе переменных.
Комментарии:
1. Да, и если вы исследуете
?predict.lm
, вы можете найти другие варианты получения доверительных интервалов / прогнозов, указания уровня интервала и т. Д
Ответ №2:
Ваши данные содержат 2 переменные, поэтому вам нужно указать как возраст, так и рост.
Например, с использованием смоделированных данных:
age = sample(10)
height = sort(rnorm(10, 6, 1))
y = sort(rnorm(10, 150, 30))
fit <- lm(y ~ age poly(age, 2) height age*height)
Для получения прогнозов укажите возраст и рост, а затем прогнозируйте:
# I'm using my own heights, you should choose the values you're interested in
new.data <- data.frame(age=c(10, 11, 12, 13, 14) ,
height=c(5.7, 6.3, 5.8, 5.9, 6.0) )
> predict(fit, new.data)
1 2 3 4 5
132.76675715 137.70712251 113.39494557 102.07262016 88.84240532
Чтобы получить доверительные интервалы для каждого прогноза
> predict(fit, new.data, interval="confidence")
fit lwr upr
1 132.76675715 96.0957812269 169.43773307
2 137.70712251 73.2174486246 202.19679641
3 113.39494557 39.5470153667 187.24287578
4 102.07262016 3.5466926099 200.59854771
5 88.84240532 -37.7404171712 215.42522781