如何在回归中设置系数值; [R

Bur*_*ter 4 regression r glm

我正在寻找一种方法来指定预测变量的值.当我使用当前数据运行glm时,我的一个变量的系数接近于1.我想把它设置为.8.

我知道这会给我一个较低的R ^ 2值,但我先验地知道模型的预测能力会更大.

glm的权重部分看起来很有希望,但我还没想到它.

任何帮助将不胜感激.

jor*_*ran 8

我相信你正在寻找这个offset论点glm.例如,您可能会执行以下操作:

glm(y ~ x1, offset = x2,...)
Run Code Online (Sandbox Code Playgroud)

在这种情况下,系数x2将设置为1.在您的情况下,您可能希望将该列乘以0.8?

为了扩展,这里是?glm关于这个offset论点的说法:

这可以用于指定在拟合期间包括在线性预测器中的先验已知分量.这应该是NULL或长度等于个案数的数字向量.一个或多个偏移项可以包含在公式中,也可以包含在公式中,如果指定了多个偏移项,则使用它们的总和.请参见model.offset.

因此,您也可以使用该offset()函数在模型公式中添加偏移量.这是一个简单的例子说明它的用法:

set.seed(123)

d <- data.frame(y = factor(sample(0:1,size = 100,replace = TRUE)),x1 = runif(100),x2 = runif(100))

glm1 <- glm(y~x1+x2,data = d,family = binomial)
coef(glm1)

(Intercept)          x1          x2 
  0.4307718  -0.4128541  -0.6994810 

glm2 <- glm(y~x1,data = d,offset = x2,family = binomial)
coef(glm2)

(Intercept)          x1 
 -0.4963699  -0.2185571 

glm3 <- glm(y~x1+offset(x2),data = d,family = binomial)
coef(glm3)

(Intercept)          x1 
 -0.4963699  -0.2185571 
Run Code Online (Sandbox Code Playgroud)

注意,后两个具有相同的系数.

  • @BurtonGuster:如果你使用的是`family`而不是`gaussian`,那么要记住另一件事(即你真的运行*generalized*linear模型而不是*general*one,这就是`glm`是什么一般用于...)是偏移量应用于线性预测器的比例,因此您可能必须使用(例如,如果您使用的是日志链接)`offset(log(0.8*x))`而不是`偏移(0.8*X)`.但我不能从你提供的细节中说出来...... (4认同)