flexplot is a set of tools designed to pair with statistical modeling and simplify the process of visualizing data analysis. Some of the primary functions include:
flexplot()
flexible and intelligent multivariate graphicsadded.plot()
added variable plotsvisualize()
shows a visual representation of a fitted objectcompare.fits()
visually compares the fit of two different modelsestimates()
reports of effect sizes for statistical modelsmodel.comparison()
statistically compares the fits of two different models
A more complete manual for flexplot can be found at the Psych Arxiv
# install.packages("devtools")
# install the stable version
devtools::install_github("dustinfife/flexplot")
# install the development version
devtools::install_github("dustinfife/flexplot", ref="development")
library(flexplot)
data(relationship_satisfaction)
### multivariate relationship
flexplot(satisfaction~communication + separated | gender + interests, data=relationship_satisfaction)
### show a straight line, remove standard errors, and specify 3 bins
flexplot(satisfaction~communication + separated | gender + interests, data=relationship_satisfaction, method="lm", se=F, bins=3)
### show a ghost line to simplify comparisons
flexplot(satisfaction~communication + separated | gender + interests, data=relationship_satisfaction, method="lm", se=F, bins=3, ghost.line="black")
### categorical variable
flexplot(satisfaction~gender, data=relationship_satisfaction, spread="quartiles", jitter=c(.1, 0))
### histogram/barchart
flexplot(satisfaction~1, data=relationship_satisfaction)
flexplot(gender~1, data=relationship_satisfaction)
### added variable plot
added.plot(satisfaction~communication + separated | gender + interests, data=relationship_satisfaction, method="polynomial", se=F)
### modeling + graphics
full.mod = lm(satisfaction~communication * separated , data=relationship_satisfaction)
reduced.mod = lm(satisfaction~communication + separated , data=relationship_satisfaction)
visualize(full.mod)
estimates(full.mod)
#> Model R squared:
#> 0.567 (0.49, 0.64)
#>
#> Semi-Partial R squared:
#> communication:separated
#> 0.01
#>
#> Estimates for Factors:
#> variables levels estimate lower upper
#> 1 separated Not Separated 44.72 43.1 46.35
#> 2 Separated 65.78 63.56 68
#>
#>
#> Mean Differences:
#> variables comparison difference lower upper cohens.d
#> 1 separated Separated-Not Separated 21.06 17.2 24.91 1.84
#>
#>
#> Estimates for Numeric Variables =
#> variables estimate lower upper std.estimate std.lower std.upper
#> 1 (Intercept) 2.66 -5.28 10.59 0.00 0.00 0.00
#> 2 communication 0.76 0.62 0.91 0.49 -0.47 1.45
compare.fits(satisfaction~communication|separated, data=relationship_satisfaction, full.mod, reduced.mod)
model.comparison(full.mod, reduced.mod)
#> $statistics
#> aic bic bayes.factor p.value r.squared
#> full.mod 2312.712 2331.214 1.566 0.0108 0.567
#> reduced.mod 2317.309 2332.111 0.639 0.557
#>
#> $pred.difference
#> 0% 25% 50% 75% 100%
#> 0.033 0.460 0.962 1.814 6.736
If something breaks, please post a minimal reproducible example on github. For questions and other discussion, contact me on twitter or by email.