我正在尝试在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不具有系数?
答案 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
是您想要的,但是由于无法更改公式,因此您陷入了mod2
或mod3
的困境。 mod2
不起作用,因为这将对x2
进行估算。 mod3
与mod1
相同,除了x2
的系数为NA
,但截距和x1
的系数相同。
将x2
的系数设为NA
相当于将其设为零。 mod1
和mod3
的预测将相同,但是mod3
确实会发出警告。