[Rd] Discourage the weights= option of lm with summarized data

peter dalgaard pdalgd at gmail.com
Tue Nov 28 11:15:14 CET 2017


It's on my todo list (for R-devel, it is not _that_ important), other things just keep taking priority...

-pd

> On 28 Nov 2017, at 09:29 , Arie ten Cate <arietencate at gmail.com> wrote:
> 
> Since the three posters agree (only) that there is a bug, I propose to
> file it as a bug, which is the least we can do now.
> 
> There is more to it: the only other case of a change in the Reference
> Manual which I know of, is also about the weights option! This is in
> coxph. The Reference Manual version 3.0.0 (2013) says about coxph:
> 
>   " ... If weights is a vector of integers, then the estimated
> coefficients are equivalent to estimating the model from data with the
> individual cases replicated as many times as indicated by weights."
> 
> This is not true, as can be seen from the following code, which uses
> the data from the first example in the Reference Manual of coxph:
> 
>   library(survival)
>   print(df1 <- as.data.frame(list(
>     time=c(4,3,1,1,2,2,3),
>   status=c(1,1,1,0,1,1,0),
>        x=c(0,2,1,1,1,0,0),
>      sex=c(0,0,0,0,1,1,1)
>   )))
>   print(w <- rep(2,7))
>   print(coxph(Surv(time,status) ~ x + strata(sex),data=df1,weights=w))
>      # manually doubling the data:
>   print(df2 <- rbind(df1,df1))
>   print(coxph(Surv(time,status) ~ x + strata(sex), data=df2))
> 
> This should not come as a surprise, since with coxph the computation
> of the likelihood (given the parameters) for a single observation uses
> also the other observations.
> 
> This bug has been repaired. The present Reference Manual of coxph says
> that the weights option specifies a vector of case weights, to which
> is added only: "For a thorough discussion of these see the book by
> Therneau and Grambsch."
> 
> Let us repair the other bug also.
> 
>    Arie
> 
> On Thu, Oct 12, 2017 at 1:48 PM, Arie ten Cate <arietencate at gmail.com> wrote:
>> OK. We have now three suggestions to repair the text:
>> - remove the text
>> - add "not" at the beginning of the text
>> - add at the end of the text a warning; something like:
>> 
>>  "Note that in this case the standard estimates of the parameters are
>> in general not correct, and hence also the t values and the p value.
>> Also the number of degrees of freedom is not correct. (The parameter
>> values are correct.)"
>> 
>> A remark about the glm example: the Reference manual says: "For a
>> binomial GLM prior weights are used to give the number of trials when
>> the response is the proportion of successes ....".  Hence in the
>> binomial case the weights are frequencies.
>> With y <- 0.51 and w <- 100 you get the same result.
>> 
>>   Arie
>> 
>> On Mon, Oct 9, 2017 at 5:22 PM, peter dalgaard <pdalgd at gmail.com> wrote:
>>> AFAIR, it is a little more subtle than that.
>>> 
>>> If you have replication weights, then the estimates are right, it is "just" that the SE from summary.lm() are wrong. Somehow, the text should reflect this.
>>> 
>>> It is of some importance when you put glm() into the mix, because you can in fact get correct results from things like
>>> 
>>> y <- c(0,1)
>>> w <- c(49,51)
>>> glm(y~1, weights=w, family=binomial)
>>> 
>>> -pd
>>> 
>>>> On 9 Oct 2017, at 07:58 , Arie ten Cate <arietencate at gmail.com> wrote:
>>>> 
>>>> Yes.  Thank you; I should have quoted it.
>>>> I suggest to remove this text or to add the word "not" at the beginning.
>>>> 
>>>>  Arie
>>>> 
>>>> On Sun, Oct 8, 2017 at 4:38 PM, Viechtbauer Wolfgang (SP)
>>>> <wolfgang.viechtbauer at maastrichtuniversity.nl> wrote:
>>>>> Ah, I think you are referring to this part from ?lm:
>>>>> 
>>>>> "(including the case that there are w_i observations equal to y_i and the data have been summarized)"
>>>>> 
>>>>> I see; indeed, I don't think this is what 'weights' should be used for (the other part before that is correct). Sorry, I misunderstood the point you were trying to make.
>>>>> 
>>>>> Best,
>>>>> Wolfgang
>>>>> 
>>>>> -----Original Message-----
>>>>> From: R-devel [mailto:r-devel-bounces at r-project.org] On Behalf Of Arie ten Cate
>>>>> Sent: Sunday, 08 October, 2017 14:55
>>>>> To: r-devel at r-project.org
>>>>> Subject: [Rd] Discourage the weights= option of lm with summarized data
>>>>> 
>>>>> Indeed: Using 'weights' is not meant to indicate that the same
>>>>> observation is repeated 'n' times.  As I showed, this gives erroneous
>>>>> results. Hence I suggested that it is discouraged rather than
>>>>> encouraged in the Details section of lm in the Reference manual.
>>>>> 
>>>>>  Arie
>>>>> 
>>>>> ---Original Message-----
>>>>> On Sat, 7 Oct 2017, wolfgang.viechtbauer at maastrichtuniversity.nl wrote:
>>>>> 
>>>>> Using 'weights' is not meant to indicate that the same observation is
>>>>> repeated 'n' times. It is meant to indicate different variances (or to
>>>>> be precise, that the variance of the last observation in 'x' is
>>>>> sigma^2 / n, while the first three observations have variance
>>>>> sigma^2).
>>>>> 
>>>>> Best,
>>>>> Wolfgang
>>>>> 
>>>>> -----Original Message-----
>>>>> From: R-devel [mailto:r-devel-bounces at r-project.org] On Behalf Of Arie ten Cate
>>>>> Sent: Saturday, 07 October, 2017 9:36
>>>>> To: r-devel at r-project.org
>>>>> Subject: [Rd] Discourage the weights= option of lm with summarized data
>>>>> 
>>>>> In the Details section of lm (linear models) in the Reference manual,
>>>>> it is suggested to use the weights= option for summarized data. This
>>>>> must be discouraged rather than encouraged. The motivation for this is
>>>>> as follows.
>>>>> 
>>>>> With summarized data the standard errors get smaller with increasing
>>>>> numbers of observations. However, the standard errors in lm do not get
>>>>> smaller when for instance all weights are multiplied with the same
>>>>> constant larger than one, since the inverse weights are merely
>>>>> proportional to the error variances.
>>>>> 
>>>>> Here is an example of the estimated standard errors being too large
>>>>> with the weights= option. The p value and the number of degrees of
>>>>> freedom are also wrong. The parameter estimates are correct.
>>>>> 
>>>>> n <- 10
>>>>> x <- c(1,2,3,4)
>>>>> y <- c(1,2,5,4)
>>>>> w <- c(1,1,1,n)
>>>>> xb <- c(x,rep(x[4],n-1))  # restore the original data
>>>>> yb <- c(y,rep(y[4],n-1))
>>>>> print(summary(lm(yb ~ xb)))
>>>>> print(summary(lm(y ~ x, weights=w)))
>>>>> 
>>>>> Compare with PROC REG in SAS, with a WEIGHT statement (like R) and a
>>>>> FREQ statement (for summarized data).
>>>>> 
>>>>>   Arie
>>>>> 
>>>>> ______________________________________________
>>>>> R-devel at r-project.org mailing list
>>>>> https://stat.ethz.ch/mailman/listinfo/r-devel
>>>> 
>>>> ______________________________________________
>>>> R-devel at r-project.org mailing list
>>>> https://stat.ethz.ch/mailman/listinfo/r-devel
>>> 
>>> --
>>> Peter Dalgaard, Professor,
>>> Center for Statistics, Copenhagen Business School
>>> Solbjerg Plads 3, 2000 Frederiksberg, Denmark
>>> Phone: (+45)38153501
>>> Office: A 4.23
>>> Email: pd.mes at cbs.dk  Priv: PDalgd at gmail.com
>>> 
>>> 
> 
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel

-- 
Peter Dalgaard, Professor,
Center for Statistics, Copenhagen Business School
Solbjerg Plads 3, 2000 Frederiksberg, Denmark
Phone: (+45)38153501
Office: A 4.23
Email: pd.mes at cbs.dk  Priv: PDalgd at gmail.com



More information about the R-devel mailing list