[R] Constraining coefficients

Andrew Criswell arc at arcriswell.com
Sat Mar 6 04:02:03 CET 2004


Thank you all for the advice.

So, to confirm: If I have

    data.0 <- data.frame(y, x1, x2)
    levels(data.0$x1) <- c('one', 'two', 'three')  ### three levels

    fm1 <- glm(cbind(y, 20 - y) ~ x1 * x2, family = binomial, data = data.0)

then, what I need to do is merge the last two factors to one:

    data.0 <- data.1
    levels(data.1$x1) <- c('one', 'two', 'two')   ### two levels for factor

    fm2 <- glm(cbind(y, 20 - y) ~ x1 * x2, family = binomial, data = data.1)
    anova(fm2, fm1, test = 'Chisq')

Although I understand it achieves the same result, I am not sure what 
numbers to plug into the contrast. The constrat, as it currently stands, is

contrasts(data.0$x1) <- matrix(c(0, 0,
                                 1, 0,
                                 0, 1), ncol = 2, byrow = T)


Andrew




Prof Brian Ripley wrote:

>On Fri, 5 Mar 2004, Andrew Criswell wrote:
>
>  
>
>>I have a binomial model with one covariate, x1, treated as a factor with 
>>3 levels. The other covariate is measured x2 <- 1:30. The response, y, 
>>is the proportion of successes out of 20 trials.
>>
>>glm(cbind(y, 20 - y) ~ x1 * x2, family = binomial)
>>
>>Now, I would like to constrain the cofficients on 2 levels of the 
>>factor, x1, to be identical and test the difference between these models 
>>by a likelihood ratio test.
>>
>>How can I get glm() to constrain the coefficients on 2 levels to be the 
>>same?
>>    
>>
>
>Merge the levels of the factor: see ?levels.
>
>You could also set up a custom contrasts matrix: either way the natural S
>approach is to reparametrize rather than constrain.
>
>  
>




More information about the R-help mailing list