我对体重与family =“ binomial”在glm中的工作方式非常困惑。在我的理解中,具有family =“ binomial”的glm的可能性指定如下: ,其中y是“观察到的成功比例”,n是已知的试验次数。yn
以我的理解,成功概率由一些线性系数\ beta参数化为并且glm函数带有family =“ binomial”搜索:
然后可以将此优化问题简化为:
因此,如果我们让所有对于某一常数,那么它也必须是真实的:
由此,我认为按比例缩放试验次数给定成功y_i的比例,具有常数的变量不会影响\ beta的最大似然估计。
glm帮助文件显示:
"For a binomial GLM prior weights are used to give the number of trials
when the response is the proportion of successes"
因此,鉴于成功的响应比例,我期望权重的缩放不会影响估计的。但是,以下两个代码返回不同的系数值:
Y <- c(1,0,0,0) ## proportion of observed success
w <- 1:length(Y) ## weight= the number of trials
glm(Y~1,weights=w,family=binomial)
这产生:
Call: glm(formula = Y ~ 1, family = "binomial", weights = w)
Coefficients:
(Intercept)
-2.197
而如果我将所有权重乘以1000,估计的系数就会不同:
glm(Y~1,weights=w*1000,family=binomial)
Call: glm(formula = Y ~ 1, family = binomial, weights = w * 1000)
Coefficients:
(Intercept)
-3.153e+15
即使权重适度缩放,我也看到了许多其他这样的示例。这里发生了什么?
@ssdecontrol我正在阅读您给我的链接中的glm.fit,但找不到在glm.fit中调用C函数“ binomial_dev_resids”的位置。您介意指出吗?
—
FairyOnIce 2015年
@ssdecontrol哦,对不起,我想我明白了。每个“家族”都是一个列表,其中一个元素是“ dev.resids”。在R控制台中键入二项式时,我看到了二项式对象的定义,并且有一行:dev.resids <-function(y,mu,wt).Call(C_binomial_dev_resids,y,mu,wt)
—
FairyOnIce
weights
参数最终通过C函数(在family.c中)结束于glm.fit
函数内部的两个位置(在glm.R中),这在R:1中的异常残差binomial_dev_resids
中起作用。和2)通过Cdqrls
(在lm.c中)在IWLS中逐步执行。我不知道足够的C来帮助您追踪逻辑