将一部分响应转换为二元响应变量以用于 R 中的逻辑回归
Turning a proportion of responses into binary response variable for logistic regression in R
所以,我弹出了一个问题,要求我在基于特定结果的比例数据的逻辑回归模型中生成一个响应变量(响应需要是二元的,简单的是或否)特定的虚拟变量输入(例如性别)会给我 YES
发生的概率。
数据看起来有点像这样(这不是确切的数据,我只是根据原始数据的布局拼凑而成):
Yes
No
Total
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
因为我们没有相关的例子将这样的比例转换为 class...[= 中的二元响应20=]
像下面的代码会给我一个理想的方程来模拟 YES
发生的概率吗?:
dat.glmL <- glm(cbind(Yes, No) ~ factor(dummy1(1,2))+factor(dummy2(1,2))+factor(dummy3(1,2,3)),
data = data, family = "binomial")
为 glm()
函数添加 weight
参数重要吗?
(我知道 glm()
是模型的函数,我有很多例子可以通过 R
中的 ANOVA
进行充分性测试和重要性,这只是这个初始转换...)。
谢谢!
#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,2)`, family = binomial,
data = df1, 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,2)`, ~`dummy2(1,2)`, ~`dummy3(1,2,3)`,
5L, 30L, 35L, 1L, 2L, 3L,
6L, 7L, 13L, 1L, 1L, 1L,
4L, 20L, 24L, 2L, 2L, 3L,
25L, 129L, 154L, 2L, 1L, 2L,
13L, 42L, 65L, 1L, 1L, 2L
)
所以,我弹出了一个问题,要求我在基于特定结果的比例数据的逻辑回归模型中生成一个响应变量(响应需要是二元的,简单的是或否)特定的虚拟变量输入(例如性别)会给我 YES
发生的概率。
数据看起来有点像这样(这不是确切的数据,我只是根据原始数据的布局拼凑而成):
Yes | No | Total | 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
因为我们没有相关的例子将这样的比例转换为 class...[= 中的二元响应20=]
像下面的代码会给我一个理想的方程来模拟 YES
发生的概率吗?:
dat.glmL <- glm(cbind(Yes, No) ~ factor(dummy1(1,2))+factor(dummy2(1,2))+factor(dummy3(1,2,3)),
data = data, family = "binomial")
为 glm()
函数添加 weight
参数重要吗?
(我知道 glm()
是模型的函数,我有很多例子可以通过 R
中的 ANOVA
进行充分性测试和重要性,这只是这个初始转换...)。
谢谢!
#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,2)`, family = binomial,
data = df1, 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,2)`, ~`dummy2(1,2)`, ~`dummy3(1,2,3)`,
5L, 30L, 35L, 1L, 2L, 3L,
6L, 7L, 13L, 1L, 1L, 1L,
4L, 20L, 24L, 2L, 2L, 3L,
25L, 129L, 154L, 2L, 1L, 2L,
13L, 42L, 65L, 1L, 1L, 2L
)