簡體   English   中英

如何在R中獲得受限最小二乘回歸的標准誤差

[英]How to get the standard error of the restricted least square regression in R

我正在估計一個受限的線性回歸模型

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

在線性限制下, PL+PK+PF的系數總和為1。 我需要回歸系數和標准誤差。 如何在R中實現這一目標?

如果您唯一的限制是估算值必須加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

在這里我們定義了兩個新變量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

如果我們需要標准誤差,則可以從摘要輸出中獲得前兩個參數的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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM