Вывести стандартную ошибку преобразованной переменной в линейной регрессии

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

Я использую функцию deltamethod из пакета msm, но не могу получить точные стандартные ошибки.

Например:

Моделирование данных:

set.seed(123)
nobs = 1000
data <- data.table(
  x1 = rnorm(nobs),
  x2 = rnorm(nobs),
  x3 = rnorm(nobs),
  x4 = rnorm(nobs),
  y = rnorm(nobs))

Линейная регрессия:

reg2 <- lm(y~x1+x2+x3+x4, data=data)

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

vcov_reg <- vcov(reg2)

coef_reg <- coef(reg2)
coef_reg <- na.omit(coef_reg) 
coef_reg <- as.numeric(coef_reg)

Deltamethod для переменной x1, деленной на x3 (это означает, что я должен использовать x2 и x4 в соответствии с пакетом msm):

deltamethod(~ x2/x4, coef_reg, vcov_reg)

Это дает мне стандартную ошибку преобразованной переменной (x1 / x3) 3,21, в то время как все стандартные ошибки этой регрессии составляют около 0,03.

Есть идеи, почему / что здесь не так? Также приветствуются другие предложения по его расчету.


person research111    schedule 26.04.2016    source источник
comment
Как вы думаете, какой должен быть ответ?   -  person MrFlick    schedule 26.04.2016


Ответы (1)


В результате нет ничего плохого. В вашем примере ваши данные сосредоточены на 0, поэтому не должно быть слишком удивительно, что при делении на данные вы получаете большую дисперсию / стандартную ошибку.

Обратите внимание, что ваш оценочный коэффициент для x3 равен -0,017408626, поэтому при стандартной ошибке около 0,03 CI для этого коэффициента пересекает 0. И это то, на что мы делим. Надеюсь, это даст вам некоторую интуицию относительно того, почему стандартная ошибка, кажется, взрывается. В качестве доказательства того, что это действительно часть проблемы, рассмотрите вместо этого x1 / x2.

> deltamethod(~ x2/x3, coef_reg, vcov_reg)
[1] 0.3752063

Что намного меньше, поскольку расчетный коэффициент для знаменателя в этом случае больше (0,09).

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

person Dason    schedule 26.04.2016