我试图使用数据集中的各种分类变量,建立一个预测癌症(1)或无癌症(0)的逻辑回归.

在原始数据集中,有一个"计数"列,指示每个组合的频率.

数据集很大,所以为了减少数据集中的行数,他们添加了一个"count"列来指示这些变量组合发生了xxx次.

如何将此计数列纳入逻辑回归?

my_model <- glm(cancer ~ age_grp + density + race + bmi, bcancer)

非常感谢.非常感谢您的指导!

来自BCSC的数据集:https://www.bcsc-research.org/data/rfdataset/dataset

推荐答案

你似乎有这样的数据.

head(dat)
#   cancer age_grp race bmi count
# 1      0       1    1  18   561
# 2      1       1    1  18   997
# 3      0       2    1  18   321
# 4      1       2    1  18   153
# 5      0       3    1  18    74
# 6      1       3    1  18   228

你可以用count作为权重来计算加权回归.

summary(glm(cancer ~ age_grp + race + bmi, family=binomial(), dat, 
            weights=count))$coef
#                 Estimate  Std. Error    z value     Pr(>|z|)
# (Intercept)  0.364588477 0.041604639   8.763169 1.898369e-18
# age_grp      0.009726589 0.002182186   4.457269 8.301035e-06
# race         0.020779774 0.005636968   3.686339 2.275036e-04
# bmi         -0.021827620 0.001754685 -12.439623 1.592543e-35

你也可以try "解包"数据,

dat_unpack <- do.call(rbind.data.frame, 
                apply(dat, 1, \(x)
                      t(replicate(x['count'], x[setdiff(names(x), 'count')]))))

head(dat_unpack)
#   cancer age_grp race bmi
# 1      0       1    1  18
# 2      0       1    1  18
# 3      0       1    1  18
# 4      0       1    1  18
# 5      0       1    1  18
# 6      0       1    1  18

但这是爱的浪费,因为除了通常的舍入误差,结果是相同的.

summary(glm(cancer ~ age_grp + race + bmi, family=binomial(), dat_unpack))$coef
#                 Estimate  Std. Error    z value     Pr(>|z|)
# (Intercept)  0.364588477 0.041604640   8.763169 1.898374e-18
# age_grp      0.009726589 0.002182186   4.457268 8.301070e-06
# race         0.020779774 0.005636970   3.686338 2.275043e-04
# bmi         -0.021827620 0.001754685 -12.439621 1.592570e-35

Data

set.seed(42)
dat <- expand.grid(cancer=0:1, age_grp=1:7, race=1:3, bmi=18:26)
dat$count <- sample(1e3, nrow(dat), replace=TRUE)

R相关问答推荐

使用spatVector裁剪网格数据时出现的问题

使用对管道内单元格的引用生成新变量

行式dppr中的变量列名

ggplot的轴标签保存在officer中时被剪切

在另一个函数中调用ggplot2美学

如何在ggplot图中找到第二轴的比例

从所有项的 struct 相同的两级列表中,将该第二级中的所有同名项绑定在一起

如何读取CSV的特定列时,给定标题作为向量

在R中使用列表(作为tibble列)进行向量化?

减少雨云面之间的间距并绘制所有统计数据点

创建新列,其中S列的值取决于该行S值是否与其他行冗余

用满足特定列匹配的另一行替换NA行

如何将宽格式的患者信息数据高效地转换为患者计数的时间序列?

条形图中的条形图没有try 赋予它们的 colored颜色

R中从因数到数字的转换

R/shiny APP:如何充分利用窗口?

如何使用list_rind在列表中保留已命名但不包含第0行的记录?

将y轴格式更改为R中的百分比

带有Bootswatch Cerulean主题的shiny 仪表板中的浏览&按钮可见性问题

真实世界坐标的逆st_变换