Julia 中的二项式 GLM - 如何指定命中和未命中

Binomial GLM in Julia - how to specify hits and misses

在 Julia 中,我想用族 Binomial()LogitLink() 计算 GLM。我的数据是三个线性数组:xvalueshits 的数量和 misses 的数量。我想通过它们在 x 轴上的位置来解释二项式分布的命中和未命中。我有多个具有相同 x 坐标的样本(因为数据最初来自一个被展平的二维数组)。

在 R 中,我必须在两列矩阵中提供命中和未命中。类似于以下作品:

glm1 <- glm(cbind(hits, misses)~xvalues, family=binomial)

但在 Julia 的 GLM 公式中,我不能指定任意数组。相反,我必须从数据框指定列,而数据框的列似乎不能是二维的。所以我将我的数据放入数据框中:

data = DataFrame(xvals = xvals, hits = hits, misses = misses)

并尝试了一些不起作用的方法(比如这样):

glm1 = glm(hcat(hits, misses) ~ xvals, data, family = Binomial, link = LogitLink())

可以下载带数据的例子here

有什么建议吗? 干杯, 汉内斯

虽然将数据集膨胀到约 100k 行的数据帧并不漂亮,但它确实可以正常工作。要使用下面的代码,首先将您的数据集加载到 xvalshitsmisses(如问题中的链接),然后:

# spreading dataset to one row per trial...   
data = DataFrame(
    xvals = vcat(rep(xvals,hits),rep(xvals,misses)), 
    outcome = vcat(rep(1,sum(hits)),rep(0,sum(misses))))

glm1 = glm(outcome ~ xvals, data, Binomial(),LogitLink())

粗略看了一下,结果似乎符合数据。还要注意 BinomialLogicLink 是位置参数而不是命名参数。