Adjust data for the effect of other variable(s)
This function can be used to adjust the data for the effect of other variables present in the dataset. It is based on an underlying fitting of regressions models, allowing for quite some flexibility, such as including factors as random effects in mixed models (multilevel partialization), continuous variables as smooth terms in general additive models (non-linear partialization) and/or fitting these models under a Bayesian framework. The values returned by this function are the residuals of the regression models. Note that a regular correlation between two "adjusted" variables is equivalent to the partial correlation between them.
adjust( data, effect = NULL, select = NULL, exclude = NULL, multilevel = FALSE, additive = FALSE, bayesian = FALSE, keep_intercept = FALSE ) data_adjust( data, effect = NULL, select = NULL, exclude = NULL, multilevel = FALSE, additive = FALSE, bayesian = FALSE, keep_intercept = FALSE )
data |
A dataframe. |
effect |
Character vector of column names to be adjusted for (regressed
out). If |
select |
Character vector of column names. If |
exclude |
Character vector of column names to be excluded from selection. |
multilevel |
If |
additive |
If |
bayesian |
If |
keep_intercept |
If |
A data frame comparable to data
, with adjusted variables.
adjusted_all <- adjust(attitude) head(adjusted_all) adjusted_one <- adjust(attitude, effect = "complaints", select = "rating") head(adjusted_one) ## Not run: adjust(attitude, effect = "complaints", select = "rating", bayesian = TRUE) adjust(attitude, effect = "complaints", select = "rating", additive = TRUE) attitude$complaints_LMH <- cut(attitude$complaints, 3) adjust(attitude, effect = "complaints_LMH", select = "rating", multilevel = TRUE) ## End(Not run) if(require("bayestestR") && require("MASS")){ # Generate data data <- bayestestR::simulate_correlation(n=100, r=0.7) data$V2 <- (5 * data$V2) + 20 # Add intercept # Adjust adjusted <- adjust(data, effect="V1", select="V2") adjusted_icpt <- adjust(data, effect="V1", select="V2", keep_intercept=TRUE) # Visualize plot(data$V1, data$V2, pch = 19, col = "blue", ylim=c(min(adjusted$V2), max(data$V2)), main = "Original (blue), adjusted (green), and adjusted - intercept kept (red) data") abline(lm(V2 ~ V1, data = data), col = "blue") points(adjusted$V1, adjusted$V2, pch = 19, col = "green") abline(lm(V2 ~ V1, data = adjusted), col = "green") points(adjusted_icpt$V1, adjusted_icpt$V2, pch = 19, col = "red") abline(lm(V2 ~ V1, data = adjusted_icpt), col = "red") }
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.