I have a logistic regression model with 2 categorical variables and 1 continuous variables using the mtcars package.
I am interested in the interpretation of the cyl categorical variable that has 3 levels 4,6 and 8.
I create a dataframe called "cyl_coefficients" that has the log odds coefficients for the cyl variables:
The intercept of the model is -53. This is the coefficient for cyl4, then -254 for cly6 and -792 for cyl8. I exponentiate those numbers to get the odds ratio column in the cyl_coefficients. Note: the cyl6 and cly8 are OFFSETS from the cyl4 coefficient.
I am interested in the actual coefficients of the cyl variables, NOT THE OFFSETS. So to get the real coefficient for cyl6 and cly8 I add those coefficients to cyl4. See the "log_odds_no_reference_gorup" column.
Then I exponentiate that column to get the "log_odds_no_reference_odds_ratio" column.
My question is: Is the "log_odds_no_reference_odds_ratio" column the actual, not offset, odds ratio for cyl4, cyl6 and cyl8?
I believe it is as when you look at the "check" column which is attempting to tie out to the "odds_ratio" column it does successfully tie out. See the 1.829006e-111 value for cyl6 in the check column and the odds_ratio column.
I want to work with the odds ratios for the variables NOT the offsets because I want to show all variables and rank them by odds ratio (i.e. the "log_odds_no_reference_odds_ratio" column) which would show 6.5e-24 for cyl4, 1.18e-134 for cyl6 and 0 for cyl8.
Of course these are the coefficients when gear =3 because 3 is the reference group for the gear variable.
Can you please comment on the validity of "log_odds_no_reference_odds_ratio" column representing the actual, not offset odds ratios?
data(mtcars) str(mtcars) mtcars$gear= factor(mtcars$gear) mtcars$cyl= factor(mtcars$cyl) mtcars$vs= factor(mtcars$vs) g = glm(data=mtcars, formula = vs~cyl+gear+hp, family= "binomial") summary(g) cyl_coefficients = data.frame(group= c("cyl4","cyl6","cyl8"),log_odds = as.numeric(c( coef(summary(g))[1,1],coef(summary(g))[2:3,1])), odds_ratio= exp(as.numeric(c( coef(summary(g))[1,1],coef(summary(g))[2:3,1]))), log_odds_no_reference_group = as.numeric(c( coef(summary(g))[1,1], coef(summary(g))[1,1] + coef(summary(g))[2:3,1])), odds_ratio_no_reference_group = exp(as.numeric(c( coef(summary(g))[1,1], coef(summary(g))[1,1] + coef(summary(g))[2:3,1]))) ) cyl_coefficients$check = cyl_coefficients$odds_ratio_no_reference_group/cyl_coefficients$odds_ratio_no_reference_group cyl_coefficients
> cyl_coefficients group log_odds odds_ratio log_odds_no_reference_group odds_ratio_no_reference_group check 1 cyl4 -53.38997 6.501779e-24 -53.38997 6.501779e-24 1.000000e+00 2 cyl6 -254.98317 1.829006e-111 -308.37314 1.189179e-134 1.829006e-111 3 cyl8 -791.70135 0.000000e+00 -845.09132 0.000000e+00 0.000000e+00