Оценка точки регрессионной модели - PullRequest
5 голосов
/ 20 марта 2019

Я хотел бы получить значения линии полиномиальной регрессии второго порядка на основе списка значений для параметра.

Вот модель:

fit <- lm(y ~ poly(age, 2) + height + age*height)

Я хотел бы использовать список значений для возраста и получить значение на линии регрессии, а также стандартное отклонение и стандартные ошибки. 'age' - это непрерывная переменная, но я хочу создать массив дискретных значений и вернуть прогнозные значения из линии регрессии.

Пример:

age <- c(10, 11, 12, 13, 14)

Ответы [ 2 ]

4 голосов
/ 20 марта 2019

Поскольку у вас есть термин взаимодействия, коэффициенты регрессии для линейного или квадратичного age члена (или обоих вместе) имеют смысл только тогда, когда вы одновременно указываете, какое значение height рассматривается. Таким образом, чтобы получить прогнозы, когда высота равна среднему значению, вы должны сделать это:

predict(fit, data.frame(age=c(10, 11, 12, 13, 14), height=mean(height) ) )

bouncyball поднимает хороший вопрос. Вы спрашивали о «стандартном отклонении и стандартных ошибках», но коэффициенты и прогнозы не имеют «стандартных отклонений», поскольку обычно используется термин, но «стандартные ошибки оценки» обычно сокращаются до стандартных ошибок.

predict(fit, data.frame(age=c(10, 11, 12, 13, 14), height=mean(height) ), se.fit=TRUE  )

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

2 голосов
/ 20 марта 2019

Ваши данные имеют 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...