我想根据从 R 中的逻辑回归模型得出的预测概率生成一个 2x2 列联表。例如:
> library(dplyr)
> library(magrittr)
> set.seed(1001)
> df <- data.frame(x = rbinom(100, 1, .45) %>% factor,
+ y = rbinom(100, 1, .54) %>% factor,
+ cov = rnorm(100, 3, 1))
> head(df)
x y cov
1 1 1 3.078623
2 0 1 2.012913
3 0 1 1.824768
4 0 0 4.681409
5 0 1 3.756232
6 1 1 3.303097
> df %>%
+ select(., x, y) %>%
+ table
y
x 0 1
0 23 31
1 23 23
> df %>%
+ select(., x, y) %>%
+ table %>%
+ prop.table
y
x 0 1
0 0.23 0.31
1 0.23 0.23
>
这里我创建了一个数据集,其中包含我的二分结果 y、我的二分预测变量 x 和一个连续协变量 cov。根据我构建数据集的方式,任何一对案例 (x,y) 的可能性约为 25%,但并不完全如此。到目前为止,一切都很好。
现在,我想要做的是创建一个 2x2 列联表,它看起来就像 prop.table()
的输出,它反映了在考虑我的协变量后预测的单元格概率。所以,我有以下几点:
> mod <- glm(y ~ x + cov, df, family="binomial")
> summary(mod)
Call:
glm(formula = y ~ x + cov, family = "binomial", data = df)
Deviance Residuals:
Min 1Q Median 3Q Max
-1.6226 -1.2058 0.9378 1.1290 1.3873
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -0.6677 0.8191 -0.815 0.415
x1 -0.3013 0.4066 -0.741 0.459
cov 0.3230 0.2595 1.245 0.213
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 137.99 on 99 degrees of freedom
Residual deviance: 135.85 on 97 degrees of freedom
AIC: 141.85
Number of Fisher Scoring iterations: 4
> newdata <- with(df,
+ data.frame(cov = mean(cov),
+ x = c(0,1) %>% factor))
> newdata$predicted <- predict(mod, newdata, type="response")
> newdata
cov x predicted
1 3.006063 0 0.5752419
2 3.006063 1 0.5004846
在这里,我构建了逻辑回归模型,并推导出了 y=1 的预测概率(~50%),同时将 cov 作为平均值。再说一次,到目前为止,一切都很好——但是我应该怎么做才能在剩下的过程中根据我的模型生成新的预测概率表?