線形回帰から変換された変数の標準誤差を計算したいと思います。つまり、2 つの変数を除算し、この変数から標準誤差を取得します。
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)
変数 x1 を x3 で割った Deltamethod (つまり、msm パッケージに従って x2 と x4 を使用する必要があります):
deltamethod(~ x2/x4, coef_reg, vcov_reg)
これにより、変換された変数 (x1/x3) の標準誤差は 3.21 になりますが、この回帰によるすべての標準誤差は約 0.03 です。
ここでなぜ/何が間違っているのですか?それを計算するための他の提案も大歓迎です。