R二项式回归

时间:2018-11-09 18:02:24

标签: r

我正在尝试在R中开发一个二项式模型。

我想使用一个看起来像这样的公式:VAL = X0 + b1 * X1 + b2 * X2

其中X0,X1和X2是我的数据帧中的变量,而b1和b2是我要开发的系数。如果此公式产生的VAL> 0,我希望目标值Y为TRUE / 1;如果产生的VAL <0,我希望目标值为Y为FALSE / 0。

将b1和b2设置为1的采样数据:
Target X0 X1 X2 VAL Result
1 86 -54 17 49 1
0 0 -54 17 -37 0
1 40 -15 23 48 1
0 50 -20 -25 5 1

我希望X0的值包含在预测中,但我不希望此变量具有系数(因为这是我无法更改的预定义公式)。

我在模型中需要X0的原因是,如果对于具有不同X0值的两个观测值(如前两个观测值),如果X1和X2相等,那么我想在我的公式中反映出来。一个观测值的X0可能导致VAL为负,另一观测值的X0可能导致VAL为正,但是,如果X0完全不在模型中,则不会反映出来。还要注意最后一次观察,我要么需要增大b1要么b2以便VAL为负,并且结果为0(模型没有看到X0就不会看到)。

我目前正在使用一个看起来像glm(“ Y〜X0 + X1 + X2”,family = binomial(link =“ logit”))的公式,但是此模型会产生X0的系数。我该如何开发一个模型,强迫X0不具有系数?

2 个答案:

答案 0 :(得分:1)

作为更新,我正在寻找offset()函数。在这种情况下,我将offset(X0)用作模型的附加预测变量。

答案 1 :(得分:0)

看起来您想要的是让X0的系数为零。如果您不能更改公式(忽略X0),则可以更改数据。这是一个示例:

n = 1000
df = data.frame('x1'=rnorm(n), 'x2'=rnorm(n))
df0 = df
df0[,2] = 0

y = 0.5 + 1.5*df[,1] - 1.0*df[,2] + rnorm(n, 0, 0.1)

mod1 = lm(y ~ x1, data = df)
mod2 = lm(y ~ x1 + x2, data = df)
mod3 = lm(y ~ x1 + x2, data = df0)

听起来mod1是您想要的,但是由于无法更改公式,因此您陷入了mod2mod3的困境。 mod2不起作用,因为这将对x2进行估算。 mod3mod1相同,除了x2的系数为NA,但截距和x1的系数相同。

x2的系数设为NA相当于将其设为零。 mod1mod3的预测将相同,但是mod3确实会发出警告。