我试图将我的一些R代码带到Julia,但是GLM包有问题。数据集按年龄分组,每组中有N_i生病的m_i个体。我想估计生病的可能性是年龄的函数 - 一个典型的逻辑回归问题。我的代码看起来像:
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中相同的估计。