使用 GLM 进行逻辑回归

Ham*_*let 3 regression glm julia

我试图将一些 R 代码引入 Julia,但 GLM 包出现问题。数据集按年龄分组,每组中有 m_i 个个体,其中 N_i 个患病个体。我想估计生病的概率作为年龄的函数 - 一个典型的逻辑回归问题。IR 代码如下所示:

fit <- glm(cbind(N, m - N) ~ age, family = binomial, data = heart)
Run Code Online (Sandbox Code Playgroud)

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

glm(@formula((N, m-N) ~ age), df, Binomial(), LogitLink())
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?数据集可以在这里找到:http ://stat.ethz.ch/Teaching/Datasets/heart.dat

谢谢。

Bog*_*ski 5

您必须构建一个二元变量,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())
Run Code Online (Sandbox Code Playgroud)

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