[R] Interpreting factor*numeric interaction coefficients
Peter Ehlers
ehlers at ucalgary.ca
Mon Apr 12 12:37:28 CEST 2010
On 2010-04-12 3:15, Matthew Carroll wrote:
> Dear all,
> I am a relative novice with R, so please forgive any terrible errors...
>
> I am working with a GLM that describes a response variable as a function of
> a categorical variable with three levels and a continuous variable. These
> two predictor variables are believed to interact.
> An example of such a model follows at the bottom of this message, but here
> is a section of its summary table:
>
> Estimate Std. Error z value Pr(>|z|)
> (Intercept) 1.220186 0.539475 2.262 0.0237 *
> var1 0.028182 0.050850 0.554 0.5794
> cat2 -0.112454 0.781137 -0.144 0.8855
> cat3 0.339589 0.672828 0.505 0.6138
> var1:cat2 0.007091 0.068072 0.104 0.9170
> var1:cat3 -0.027248 0.064468 -0.423 0.6725
>
> I am having trouble interpreting this output.
> I think I understand that:
>
> # the 'var1' value refers to the slope of the relationship within the first
> factor level
>
> # the 'cat2' and 'cat3' values refer to the difference in intercept from
> 'cat1'
>
> # the interaction terms describe the difference in slope between the
> relationship in 'cat1' and that in 'cat2' and 'cat3' respectively
>
> Therefore, if I wanted a single value to describe the slope in either cat2
> or cat3, I would sum the interaction value with that of var1.
>
> However, if I wanted to report a standard error for the slope in 'cat2', how
> would I go about doing this? Is the reported standard error that for the
> overall slope for that factor level, or is the actual standard error a
> function of the standard error of var1 and that of the interaction?
>
You can relevel your factor variable:
mod <- glm(resp ~ var1 * relevel(cat, ref=2), family="poisson")
Or, to do this for all levels, you can specify the model as:
mod <- glm(resp ~ cat/var1 + 0, family="poisson")
which will give the regressions resp ~ var1 within each level of 'cat'.
Or you can calculate the SE from the covariance matrix given
by summary(mod)$cov.unscaled, using the formula for the variance
of a linear combination of random variables.
-Peter Ehlers
> Any help with this would be much appreciated,
>
> Matthew Carroll
>
>
> ### example code
>
> resp<- rpois(30, 5)
> cat<- factor(rep(c(1:3), 10))
> var1<- rnorm(30, 10, 3)
>
> mod<- glm(resp ~ var1 * cat, family="poisson")
> summary(mod)
>
> Call:
> glm(formula = resp ~ var1 * cat, family = "poisson")
>
> Deviance Residuals:
> Min 1Q Median 3Q Max
> -1.80269 -0.54107 -0.06169 0.51819 1.58169
>
> Coefficients:
> Estimate Std. Error z value Pr(>|z|)
> (Intercept) 1.220186 0.539475 2.262 0.0237 *
> var1 0.028182 0.050850 0.554 0.5794
> cat2 -0.112454 0.781137 -0.144 0.8855
> cat3 0.339589 0.672828 0.505 0.6138
> var1:cat2 0.007091 0.068072 0.104 0.9170
> var1:cat3 -0.027248 0.064468 -0.423 0.6725
> ---
> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
>
> (Dispersion parameter for poisson family taken to be 1)
>
> Null deviance: 23.222 on 29 degrees of freedom Residual deviance:
> 22.192 on 24 degrees of freedom
> AIC: 133.75
>
> Number of Fisher Scoring iterations: 5
>
>
>
> --
> Matthew Carroll
> E-mail: mjc510 at york.ac.uk
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>
>
--
Peter Ehlers
University of Calgary
More information about the R-help
mailing list