Оценка точки модели регрессии

#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