繁体   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