[R] working out main effect variance when different parameterization is used and interaction term exists
Adaikalavan Ramasamy
a.ramasamy at imperial.ac.uk
Tue Jul 13 20:32:45 CEST 2010
Dear all,
Apologies if this question is bit theoretical and for the longish email.
I am meta-analyzing the coefficients and standard errors from multiple
studies where the raw data is not available.
Each study analyst runs a model that includes an interaction term for,
say, between sex and smoking and age.
Here is an illustrative example example for one study:
set.seed(1066)
status <- rbinom( 1000, 1, 0.2 )
males <- rbinom( 1000, 1, 0.6 )
smoke <- rbinom( 1000, 1, 0.3 )
age <- runif(1000, min=20, max=80)
coef( summary( f1 <- glm( status ~ males*smoke + age,
family="binomial" ) ) )
# Estimate Std. Error z value Pr(>|z|)
# (Intercept) -1.520399871 0.284464584 -5.3447774 9.052825e-08
# males 0.213851446 0.201717381 1.0601538 2.890746e-01
# smoke -0.123103049 0.292346483 -0.4210861 6.736922e-01
# age -0.001056007 0.004612947 -0.2289223 8.189293e-01
# males:smoke 0.283775173 0.362821438 0.7821345 4.341355e-01
Now, unfortunately some analysts coded sex as females instead of males.
Using the same dataset, I get the following output with females:
females <- 1 - males
coef( summary( f1 <- glm( status ~ females*smoke + age,
family="binomial" )) )
# Estimate Std. Error z value Pr(>|z|)
# (Intercept) -1.306548425 0.262573162* -4.9759405 6.493160e-07
# females -0.213851446 0.201717381* -1.0601538 2.890746e-01
# smoke 0.160672124 0.214923130* 0.7475795 4.547138e-01
# age -0.001056007 0.004612947 -0.2289223 8.189293e-01
# females:smoke -0.283775173 0.362821438 -0.7821345 4.341355e-01
I have worked out algebrically (and numerically) the following:
Beta(females) = -Beta(males)
Var(females) = Var(males)
Beta(females:smoke) = -Beta(males:smoke)
Var(females:smoke) = Var(males:smoke)
Beta(smoke | fit1) = Beta(smoke | fit2) + Beta(females:smoke)
= 0.160672124 -0.283775173
= -0.1231030
How can I calculate the Var(smoke | fit1) from Var(smoke | fit2) ?
I tried to derive this algebrically but ended up with a covariance term
which I could not solve. If I could cleverly convert Var(smoke | fit2)
to Var(smoke | fit1) then I could avoid going back to each analyst since
this particular analyses is only one of many hundreds we run and it
would be annoying for each analyst to use the same parameterisation.
Any suggestions is much appreciated. Many thanks in advance.
Regards, Adai
More information about the R-help
mailing list