## ----include = FALSE---------------------------------------------------------- knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) ## ----setup-------------------------------------------------------------------- library(csranks) data(parent_child_income) head(parent_child_income) ## ----lmranks------------------------------------------------------------------ lmr_model <- lmranks(r(c_faminc) ~ r(p_faminc), data=parent_child_income) summary(lmr_model) ## ----lm----------------------------------------------------------------------- c_faminc_rank <- frank(parent_child_income$c_faminc, omega=1, increasing=TRUE) p_faminc_rank <- frank(parent_child_income$p_faminc, omega=1, increasing=TRUE) lm_model <- lm(c_faminc_rank ~ p_faminc_rank) summary(lm_model) ## ----lmrankscov--------------------------------------------------------------- lmr_model_cov <- lmranks(r(c_faminc) ~ r(p_faminc) + gender + race, data=parent_child_income) summary(lmr_model_cov) ## ----grouped_lmranks_simple--------------------------------------------------- grouped_lmr_model_simple <- lmranks(r(c_faminc) ~ r(p_faminc_rank):gender, data=parent_child_income) summary(grouped_lmr_model_simple) ## ----grouped_lm_simple-------------------------------------------------------- grouped_lm_model_simple <- lm(c_faminc_rank ~ p_faminc_rank:gender + gender - 1, #group-wise intercept data=parent_child_income) summary(grouped_lm_model_simple) ## ----grouped_lmranksgran------------------------------------------------------ parent_child_income$subgroup <- interaction(parent_child_income$gender, parent_child_income$race) grouped_lmr_model <- lmranks(r(c_faminc) ~ r(p_faminc_rank):subgroup, data=parent_child_income) summary(grouped_lmr_model) ## ----grouped_lm--------------------------------------------------------------- grouped_lm_model <- lm(c_faminc_rank ~ p_faminc_rank:subgroup + subgroup - 1, #group-wise intercept data=parent_child_income) summary(grouped_lm_model) ## ----plot_CIs, message = FALSE, out.width = "90%", fig.width=6, fig.height=4---- library(ggplot2) theme_set(theme_minimal()) ci_data <- data.frame(estimate=coef(lmr_model), parameter=c("Intercept", "slope"), group="Whole sample", method="csranks", lower=confint(lmr_model)[,1], upper=confint(lmr_model)[,2]) ci_data <- rbind(ci_data, data.frame( estimate = coef(grouped_lmr_model), parameter = rep(c("Intercept", "slope"), each=6), group = rep(c("Hispanic female", "Hispanic male", "Black female", "Black male", "Other female", "Other male"), times=2), method="csranks", lower=confint(grouped_lmr_model)[,1], upper=confint(grouped_lmr_model)[,2] )) ci_data <- rbind(ci_data, data.frame( estimate = coef(lm_model), parameter = c("Intercept", "slope"), group = "Whole sample", method="naive", lower=confint(lm_model)[,1], upper=confint(lm_model)[,2] )) ci_data <- rbind(ci_data, data.frame( estimate = coef(grouped_lm_model), parameter = rep(c("Intercept", "slope"), each=6), group = rep(c("Hispanic female", "Hispanic male", "Black female", "Black male", "Other female", "Other male"), times=2), method="naive", lower=confint(grouped_lm_model)[,1], upper=confint(grouped_lm_model)[,2] )) ggplot(ci_data, aes(y=estimate, x=group, ymin=lower, ymax=upper,col=method, fill=method)) + geom_point(position=position_dodge2(width = 0.9)) + geom_errorbar(position=position_dodge2(width = 0.9)) + geom_hline(aes(yintercept=estimate), data=subset(ci_data, group=="Whole sample"), linetype="dashed", col="gray") + coord_flip() + labs(title="95% confidence intervals of intercept and slope\nin rank-rank regression")+ facet_wrap(~parameter)