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

Posted

技术标签:

【中文标题】如何在回归中设置系数值; R【英文标题】:How to set the Coefficient Value in Regression; R 【发布时间】:2012-01-04 07:39:25 【问题描述】:

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

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

glm 的权重组件看起来很有希望,但我还没有弄清楚。

任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

我相信您正在寻找glm 中的offset 参数。因此,例如,您可能会执行以下操作:

glm(y ~ x1, offset = x2,...)

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

为了展开,下面是?glmoffset 参数的看法:

这可用于指定要包含的先验已知组件 在拟合期间的线性预测器中。这应该是 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 

请注意,最后两个具有相同的系数。

【讨论】:

是的,你是对的。我需要使用偏移量。不过,我在实际使用它时遇到了一些麻烦。当我执行 glm(y~x1...., 并且 offset = x2*.8) 时,我的新系数约为 0.6,这似乎没有意义。此外,当我从新的 glm 变量绘制预测函数时,这条线与我没有偏移参数时完全相同。 另外,在 glm 的帮助部分。我看到一个他们使用偏移量的例子。但是他们只是在偏移函数中有要偏移的变量,但是我看不到他们在哪里指定了将变量偏移的数量... @BurtonGuster 如果没有能力实际坐在您的计算机前并查看您的数据到底是什么以及您正在拟合的模型,我不可能知道什么“有意义”或没有。如果两个模型之间的差异很小,那么肉眼可能很难看到拟合线的视觉差异。 哈哈哈,够公平的。我会尝试更清楚地拼写出来。相关变量的当前系数为 1.30。当我执行 offset = x2*.3 时,结果系数为 1.1。当我将 x2 乘以 0.8 时,系数为 0.6。也许它会减少原来的 80%,但这在数学上是行不通的。 @BurtonGuster:如果您使用 family 而不是 gaussian(即您实际上是在运行 广义 线性模型而不是general 一个,这是 glm 通常用于...)是偏移量应用于线性预测器的比例,因此您可能必须使用(例如,如果您是使用日志链接)offset(log(0.8*x)) 而不是offset(0.8*x)。但我无法从你提供的细节中看出......

以上是关于如何在回归中设置系数值; R的主要内容,如果未能解决你的问题,请参考以下文章

如何将系数值从逻辑回归中提取到 R 中的数据框中? [复制]

问下,spss回归分析得出的R方值、F值、t值各有何含义,数值大小有何含义?

如何在sklearn逻辑回归中设置样本权重?

Scikit Learn:如何在回归中设置 SVM 输出范围?

如何从回归随机森林中获得概率密度函数?

spss进行线性回归分析时,相关系数都符合,但是显著性不符合,如何调整