0

我有一个数据集

y x1 x2 x3
1 91 21 A1
0 54 87 A1
1 88 54 B1
1 67 42 B1
0 32 83 B1
.......

我首先想在 x2>50 的子集上执行 glm y~x1+x2 (我可以通过子集来做到这一点),

mdl1 <- glm(y~x1+x2, family=binomial, data=subset(df, x2>50))

然后我想做第二个 glm y~x1+x2+ y(从 x2>50 和 x3 是相同的)。

例如,第二行有 x2=87 和 x3=A1,那么它的 y=0 将对第一行的 y 建模产生影响,它在相同的 x3=A1 中,并且 x2<50。同样,第 3 行和第 5 行中的 y 将对第 4 行产生影响。

我不知道如何将其包含在模型中。

mdl2 <- glm(y~x1+x2+???, family=binomial, data=subset(df, x2<=50))

我怀疑当 x2<50 时 y 取决于相同 x3 的其他 y。

4

1 回答 1

0

我认为您可以使用组合 glm 来捕捉“当 x2<50 时的 y 取决于相同 x3 的其他 y”的想法:

mdl <- glm(y ~ x1 + x2 + x3:as.numeric(x2 < 50), family=binomial)

对于 x2 >= 50,as.numeric(x2 < 50)为零,因此模型只是 y ~ x1 + x2。对于 x2 < 50, as.numeric(x2 < 50)为 1,因此模型变为 y ~ x1 + x2 + x3。

使用这种方法,x1 和 x2 的系数基于所有数据,但 x3 的影响仅基于 x2 < 50 的数据。

于 2013-09-04T21:16:04.180 回答