【发布时间】:2012-01-04 07:39:25
【问题描述】:
我正在寻找一种方法来指定预测变量的值。当我使用当前数据运行 glm 时,我的一个变量的系数接近 1。我想将其设置为 0.8。
我知道这会给我一个较低的 R^2 值,但我先验地知道模型的预测能力会更大。
glm 的权重组件看起来很有希望,但我还没有弄清楚。
任何帮助将不胜感激。
【问题讨论】:
标签: r regression glm
我正在寻找一种方法来指定预测变量的值。当我使用当前数据运行 glm 时,我的一个变量的系数接近 1。我想将其设置为 0.8。
我知道这会给我一个较低的 R^2 值,但我先验地知道模型的预测能力会更大。
glm 的权重组件看起来很有希望,但我还没有弄清楚。
任何帮助将不胜感激。
【问题讨论】:
标签: r regression glm
我相信您正在寻找glm 中的offset 参数。因此,例如,您可能会执行以下操作:
glm(y ~ x1, offset = x2,...)
在这种情况下,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
请注意,最后两个具有相同的系数。
【讨论】:
family 而不是 gaussian(即您实际上是在运行 广义 线性模型而不是general 一个,这是 glm 通常用于...)是偏移量应用于线性预测器的比例,因此您可能必须使用(例如,如果您是使用日志链接)offset(log(0.8*x)) 而不是offset(0.8*x)。但我无法从你提供的细节中看出......