您也可以让y
分数在这种情况下您需要提供weights
. 它不在formula
参数中,但与在formula
. 这是一个例子
> set.seed(73574836)
> x <- runif(10)
> n <- sample.int(10, 2)
> y <- sapply(mapply(rbinom, size = 1, n, (1 + exp(1 - x))^-1), function(x)
+ sum(x == 1))
> df <- data.frame(y = y, frac = y / n, x = x, weights = n)
> df
y frac x weights
1 2 1.000 0.9051 2
2 5 0.625 0.3999 8
3 1 0.500 0.4649 2
4 4 0.500 0.5558 8
5 0 0.000 0.8932 2
6 3 0.375 0.1825 8
7 1 0.500 0.1879 2
8 4 0.500 0.5041 8
9 0 0.000 0.5070 2
10 3 0.375 0.3379 8
>
> # the following two fits are identical
> summary(glm(cbind(y, weights - y) ~ x, binomial(), df))
Call:
glm(formula = cbind(y, weights - y) ~ x, family = binomial(),
data = df)
Deviance Residuals:
Min 1Q Median 3Q Max
-1.731 -0.374 0.114 0.204 1.596
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -0.416 0.722 -0.58 0.56
x 0.588 1.522 0.39 0.70
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 9.5135 on 9 degrees of freedom
Residual deviance: 9.3639 on 8 degrees of freedom
AIC: 28.93
Number of Fisher Scoring iterations: 3
> summary(glm(frac ~ x, binomial(), df, weights = weights))
Call:
glm(formula = frac ~ x, family = binomial(), data = df, weights = weights)
Deviance Residuals:
Min 1Q Median 3Q Max
-1.731 -0.374 0.114 0.204 1.596
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -0.416 0.722 -0.58 0.56
x 0.588 1.522 0.39 0.70
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 9.5135 on 9 degrees of freedom
Residual deviance: 9.3639 on 8 degrees of freedom
AIC: 28.93
Number of Fisher Scoring iterations: 3
上述工作的原因归结glm
为二项式结果的实际作用。无论您如何指定结果,它都会计算每个观察的分数和与观察相关的权重。这是一个片段,?glm
其中暗示了估计中的情况
如果binomial
glm
通过给出两列响应指定模型,则返回的权重prior.weights
是案例总数(由提供的案例权重考虑),y
结果的组成部分是成功的比例。
或者,您可以为glm.fit
或glm
使用model.frame
. 请参阅中的...
论点?model.frame
...
对于model.frame
方法,混合进一步的参数,例如数据,,na.action
传递subset
给默认方法。到达默认方法的任何附加参数(例如offset
和weights
或其他命名参数)用于在模型框架中创建更多列,带有括号的名称,例如
"(offset)"
.
评论
之后我看到了 Ben Bolker 的评论。以上是他指出的。