转换频率数据以用于 R 中的逻辑回归
Converting frequency data for use in logistic regression in R
这里有一个简单的问题:我有以下数据,我需要以可以运行对其进行逻辑回归的格式获取它。
pvp <- rep(c("lib", "mod", "con"), 3)
pres <- c(rep("Bush", 3), rep("Clinton", 3), rep("Perot", 3))
count <- c(70, 195, 382, 324, 332, 199, 56, 101, 117)
df <- as.data.frame(cbind(pvp, pres, count))
df$pres <- recode(df$pres, 'Clinton' = '1', 'Bush' = '0', 'Perot' = '0')
df$count <- as.numeric(as.character(df$count))
看起来像这样:
> df
pvp pres count
1 lib 0 70
2 mod 0 195
3 con 0 382
4 lib 1 324
5 mod 1 332
6 con 1 199
7 lib 0 56
8 mod 0 101
9 con 0 117
我需要 运行 逻辑回归预测 pvp 的压力。通常我认为我只会使用 tidyverse 中的 spread
将数据转换为宽格式。但在这里我在传播函数中使用 key = pvp 时遇到问题。我也无法折叠类别,因为它们中的一些显然对应于 pres = 1,而另一些则对应于 pres = 0。我可以使用什么解决方案以我可以 运行 对其进行逻辑回归的格式获取数据?
提前致谢。
不需要扩充数据,可以边训练模型边使用"weight"参数。
model_logit <- glm(pres ~ pvp, family="binomial", weight = df$count, data = df)
predictions <- predict(model_logit, data.frame(pvp=unique(df$pvp)), type="response")
这里有一个简单的问题:我有以下数据,我需要以可以运行对其进行逻辑回归的格式获取它。
pvp <- rep(c("lib", "mod", "con"), 3)
pres <- c(rep("Bush", 3), rep("Clinton", 3), rep("Perot", 3))
count <- c(70, 195, 382, 324, 332, 199, 56, 101, 117)
df <- as.data.frame(cbind(pvp, pres, count))
df$pres <- recode(df$pres, 'Clinton' = '1', 'Bush' = '0', 'Perot' = '0')
df$count <- as.numeric(as.character(df$count))
看起来像这样:
> df
pvp pres count
1 lib 0 70
2 mod 0 195
3 con 0 382
4 lib 1 324
5 mod 1 332
6 con 1 199
7 lib 0 56
8 mod 0 101
9 con 0 117
我需要 运行 逻辑回归预测 pvp 的压力。通常我认为我只会使用 tidyverse 中的 spread
将数据转换为宽格式。但在这里我在传播函数中使用 key = pvp 时遇到问题。我也无法折叠类别,因为它们中的一些显然对应于 pres = 1,而另一些则对应于 pres = 0。我可以使用什么解决方案以我可以 运行 对其进行逻辑回归的格式获取数据?
提前致谢。
不需要扩充数据,可以边训练模型边使用"weight"参数。
model_logit <- glm(pres ~ pvp, family="binomial", weight = df$count, data = df)
predictions <- predict(model_logit, data.frame(pvp=unique(df$pvp)), type="response")