转换频率数据以用于 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")