如何解决将一部分响应转换为 R 中逻辑回归的二元响应变量
所以,我弹出了一个问题,要求我在基于某个结果和特定虚拟变量的比例数据的逻辑回归模型中生成一个响应变量(响应需要是二元的,带有简单的是或否)诸如性别之类的变量输入会给我 YES
发生的概率。
数据看起来有点像这样(这不是确切的数据,我只是根据原始数据的布局拼凑起来的):
是 | 否 | 总计 | dummy1(1,2) | dummy2(1,2) | dummy3(1,2,3) |
---|---|---|---|---|---|
5 | 30 | 35 | 1 | 2 | 3 |
6 | 7 | 13 | 1 | 1 | 1 |
4 | 20 | 24 | 2 | 2 | 3 |
25 | 129 | 154 | 2 | 1 | 2 |
13 | 42 | 65 | 1 | 1 | 2 |
我想知道如何从给定的比例中获得二元响应变量?我了解逻辑回归的概念 - 我不明白的更多是 R-code
,因为我们在课堂上没有将这样的比例转换为二元响应的相关示例...
类似于以下代码的内容是否会给我一个理想的方程来模拟YES
发生的概率?:
dat.glmL <- glm(cbind(Yes,No) ~ factor(dummy1(1,2))+factor(dummy2(1,2))+factor(dummy3(1,3)),data = data,family = "binomial")
为 weight
函数添加 glm()
参数是否重要?
(我知道 glm()
是模型的函数,我有很多示例通过 ANOVA
中的 R
进行充分性测试和重要性,这只是这个初始转换。 ..).
谢谢!
解决方法
#Preparing data:
df1 <- df %>%
pivot_longer(
cols= c(Yes,No),names_to = "response_name",values_to = "response_value"
) %>%
mutate(response_name = case_when(response_name == "Yes" ~ "1",response_name == "No" ~ "0"),response_name = as.numeric(response_name))
xtabs(response_value ~ .,df1)
fit <- glm(response_name ~ `dummy1(1,2)`,weights = response_value,data = df1,family = binomial)
summary(fit)
输出:
Call:
glm(formula = response_name ~ `dummy1(1,family = binomial,weights = response_value)
Deviance Residuals:
Min 1Q Median 3Q Max
-6.7736 -3.6590 0.9414 4.0899 9.5249
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -0.7461 0.5084 -1.468 0.142
`dummy1(1,2)` -0.4453 0.3091 -1.441 0.150
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 272.12 on 9 degrees of freedom
Residual deviance: 270.07 on 8 degrees of freedom
AIC: 274.07
Number of Fisher Scoring iterations: 5
数据:
df <- tibble::tribble(
~Yes,~No,~Total,~`dummy1(1,~`dummy2(1,~`dummy3(1,2,3)`,5L,30L,35L,1L,2L,3L,6L,7L,13L,4L,20L,24L,25L,129L,154L,42L,65L,2L
)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。