假设您正在对具有解释变量a和b的二项数据进行建模,其中每个响应是一定数量试验次数(N)中成功的数量(y)。有一些函数可以执行此类操作,它们似乎都使用不同的方法来指定y和N。
在glm中,您需要执行glm(cbind(y,N-y)~a+b, data = d)
(左侧为成功/失败矩阵)。
在inla中,您需要执行inla(y~a+b, Ntrials=d$N, data=d)
(单独指定试验次数)。
在glmmBUGS中,您需要执行glmmBUGS(y+N~a+b,data=d)
(将成功和试验次数作为左侧的项进行指定)。
当编写新方法时,我一直认为最好遵循glm的做法,因为这是人们通常首次遇到二项响应数据的地方。然而,我总是记不住是否应该使用cbind(y,N-y)
还是cbind(y,N)
,而且我通常似乎具有数据中的成功/试验次数而非成功/失败次数-您的情况可能会有所不同。
当然,也有其他方法。例如,在RHS上使用一个函数标记变量是试验次数还是失败次数:
myblm( y ~ a + b + Ntrials(N), data=d)
myblm( y ~ a + b + Nfails(M), data=d) # if your dataset has succ/fail variables
或者定义一个只执行cbind操作的运算符,这样你就可以这样做:
myblm( y %of% N ~ a + b, data=d)
因此将一些含义附加到LHS,使其变得明确。
有人有更好的想法吗?做这件事的正确方式是什么?
%of%
,因为它可以使顺序更加明显。但是它不太标准... - Ari B. Friedmanglm
还允许在左侧指定比例,使用额外的weights
参数来提供分母。 - Ben Bolker