Quick Start

Plotting directly from regression

We use the Iris dataset from RDatasets.jl to demonstrate the basic usage of Coefplots.jl

The quickest way to plot a coefplot is to invoke plot().

using Coefplots
using RDatasets
using GLM
df = dataset("datasets", "iris");
regression_result = lm(@formula(SepalLength ~ SepalWidth + PetalLength + PetalWidth), df)
p = plot(regression_result)
┌ Error: PGFPlotsX.MissingExternalProgramError("No LaTeX installation found, figures will not be generated. Make sure either pdflatex, xelatex or lualatex are installed and that the PATH variable is correctly set.")
└ @ Main string:8

[.pdf], [generated .tex]

You can also customize your coefplot by passing named arguments. For example,

p = plot(regression_result; keepcoef = ["SepalWidth", "PetalLength", "PetalWidth"], # drop intercept
                            title = Label(content="My OLS regression"), # add title
                            xlabel = Label(content="Coefficients"), # add xlabel
                            ylabel = Label(content="Regressor Names"), # add ylabel
                            width = 250, # set width of the axis
                            height = 180, # set height
                            keepconnect = true, # connect consecutive coefficients
                            level = 0.9, # confidence level, the default is 0.95.
                            vertical = false, # default is true
                            mark = Mark(mark=:"triangle*", marksize=4, linewidth=0)) # aesthetics
┌ Error: PGFPlotsX.MissingExternalProgramError("No LaTeX installation found, figures will not be generated. Make sure either pdflatex, xelatex or lualatex are installed and that the PATH variable is correctly set.")
└ @ Main string:8

[.pdf], [generated .tex]

Apart from directly calling plot(), one can also invoke parse() to convert regression object to a Coefplot object. This allows users to deal with the plot with more flexibility, especially on combining plots.

using FixedEffectModels
regression_withFE = reg(df, @formula(SepalLength ~ SepalWidth + PetalLength + PetalWidth + fe(Species)));
coefplots_withfe = parse(regression_withFE; title=Label(content="OLS"))
coefplots_pool = parse(regression_result; keepcoef = ["SepalWidth", "PetalLength", "PetalWidth"], title=Label(content="with species FE"))
m = MultiCoefplot(coefplots_withfe, coefplots_pool; title = Label(content="My combined Coefplots"),
                                                    xlabel = Label(content="Regressor Names"),
                                                    ylabel = Label(content="Coefficients"),
                                                    note = Note(content="This is my note."))
p = plot(m)
┌ Error: PGFPlotsX.MissingExternalProgramError("No LaTeX installation found, figures will not be generated. Make sure either pdflatex, xelatex or lualatex are installed and that the PATH variable is correctly set.")
└ @ Main string:8

[.pdf], [generated .tex]

Plotting from DataFrame

In order for Coefplots.jl to learn what to plot from a DataFrame, the DataFrame needs to contain the following columns: [:varname, :b, :se, :dof] (:dof is constant across rows while others should vary).

using DataFrames
df = DataFrame(varname = ["x1", "x2", "x3"],
               b = [1, 2, 3],
               se = [0.1, 0.2, 0.3],
               dof = 10)
c = Coefplot(df)
p = plot(c)
┌ Error: PGFPlotsX.MissingExternalProgramError("No LaTeX installation found, figures will not be generated. Make sure either pdflatex, xelatex or lualatex are installed and that the PATH variable is correctly set.")
└ @ Main string:8

[.pdf], [generated .tex]