使用 GLM 进行逻辑回归

Logistic Regression with GLM

我试图将我的一些 R 代码带到 Julia,但是 GLM 包有问题。数据集按年龄分组,每组中有 m_i 个人 N_i 生病。我想估计生病的概率作为年龄的函数——一个典型的逻辑回归问题。我 R 代码看起来像:

fit <- glm(cbind(N, m - N) ~ age, family = binomial, data = heart)

我在 Julia 中尝试了以下函数调用,但它不起作用:

glm(@formula((N, m-N) ~ age), df, Binomial(), LogitLink())

有什么想法吗?可以在此处找到数据集:http://stat.ethz.ch/Teaching/Datasets/heart.dat

谢谢。

您必须构建一个二元变量 sick,它对应于每个年龄组中生病和未生病的观察次数。我在下面通过为每个年龄段创建一个单独的 DataFrame 然后对它们创建 运行 vcat 来实现这一点。

这是假设您在 heart 数据框中读取数据的代码(我将 heart_flat 的创建压缩为一行,但您可以提取其中的理解以随时随地查看创建的内容):

heart_flat = vcat([DataFrame(age=row[:age],
                             sick=[ones(Int, row[:N]);
                                   zeros(Int, row[:m]-row[:N])])
                   for row in eachrow(heart)]...)

glm(@formula(sick ~ age), heart_flat, Binomial(), LogitLink())

它产生与 R 中相同的估计。