5
我试图进行线性回归,像这样的模式:线性回归与系数的约束
Y = aX1 + bX2 + c
所以,Y ~ X1 + X2
假设我有以下响应向量:
set.seed(1)
Y <- runif(100, -1.0, 1.0)
以下矩阵的预测变量:
X1 <- runif(100, 0.4, 1.0)
X2 <- sample(rep(0:1,each=50))
X <- cbind(X1, X2)
我想使用系数以下限制:
a + c >= 0
c >= 0
因此,没有b上的约束。
我知道glmc包可以用来应用约束,但我无法确定如何将它应用于我的约束。例如,我也知道可以使用contr.sum,以便所有系数总和为0,但这不是我想要做的。 solve.QP()似乎是另一种可能性,其中可以使用设置meq=0
,以便所有系数> = 0(再次,这里不是我的目标)。
注意:溶液必须能够在响应向量Y来处理NA值,例如用:
Y <- runif(100, -1.0, 1.0)
Y[c(2,5,17,56,37,56,34,78)] <- NA
谢谢你的回答!为了确保我理解正确,因为我想要一个+ c> = 0且c> = 0,满足这些约束但a和c不等于0的情况应该不受限制,它们应该保留为是(标准线性回归的结果)。您的解决方案是否适用于系数可能符合约束条件的不同数据?如果使用标准线性回归来满足约束条件(以便我可以在大型数据集上使用它),我希望能够在不知道事先知道的情况下应用此功能。 – arielle
另外,在使用这种方法(我习惯于lm())时,如何处理响应中的潜在NAs,以及如何得到系数的标准误差或p值? – arielle
是的,如果约束在原始线性回归中不具约束力,那么您将返回这些结果。如果在标准线性回归中不满足约束条件,约束条件只会改变。我不知道你有关P值的问题的答案;您可能可以通过stats.stackexchange.com获得帮助。 – josliber