0

制限付き線形回帰モデルを推定しています

lm(TC~Q+PL+PK+PF)

線形制限の下では、 PL+PK+PF 和の係数は 1 になります。回帰係数と標準誤差の両方が必要です。Rでこれを達成するにはどうすればよいですか?

4

1 に答える 1

3

推定値の合計が1になる必要があるという唯一の制約がある場合は、モデルを書き直すことで、これをかなり簡単に構築できます。3つの予測子X1、X2、X3があり、モデルを近似するとします。

y = B0 + B1*X1 + B2*X2 + B3*X3 + error

次に、B1 + B2 + B3 = 1という制限がある場合、B3=1-B1-B2と書き換えることができることに注意してください。その場合、私たちのモデルは

y = B0 + B1*X1 + B2*X2 + (1 - B1 - B2)*X3 + error
  = B0 + B1*(X1 - X3) + B2*(X2 - X3) + X3 + error
  = B0 + B1*P1 + B2*P2 + X3 + error

ここで、2つの新しい変数P1=X1-X3およびP2=X2-X3を定義しました。

したがって、そのモデルに適合できる場合は、ビジネスを行っています。変数P1の推定パラメーターはB1の推定値になり、変数P2の推定パラメーターはB2の推定値になることに注意してください。B3の推定値を直接取得することはありませんが、B3はB1とB2の関数にすぎないため、問題ありません。

それでは、いくつかのデータを生成してモデルを適合させましょう...

# Generate fake data and fix some parameters
set.seed(123412)
n <- 100
x1 <- rnorm(n)
x2 <- rnorm(n)
x3 <- rnorm(n)
b0 <- 2
b1 <- .2
b2 <- .5
b3 <- 1 - b1 - b2 # so that b1 + b2 + b3 = 1
e <- rnorm(n)
y <- b0 + b1*x1 + b2*x2 + b3*x3 + e


p1 <- x1 - x3
p2 <- x2 - x3

o <- lm(y ~ offset(x3) + p1 + p2)

これで、パラメータの推定値を簡単に取得できます

b1hat <- coef(o)[2]
b2hat <- coef(o)[3]
b3hat <- 1 - b1hat - b2hat

標準誤差が必要な場合は、要約の出力から最初の2つのパラメーターのSEを取得できます(またはの出力の対角線の平方根を取得することによりvcov(o)

# Get standard errors for B1 and B2
summary(o)
sqrt(diag(vcov(o)))

# Get a standard error for B3 - which is just
# a linear combination of B1 and B2
D <- c(0, -1, -1)
b3hat.se <- sqrt( t(D) %*% vcov(o) %*% D)
于 2013-03-09T22:51:17.283 に答える