Skip to content

Testing doctest #5

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 9 commits into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .github/workflows/documentation.yml
Original file line number Diff line number Diff line change
@@ -15,7 +15,8 @@ jobs:
- uses: actions/checkout@v2
- uses: julia-actions/setup-julia@latest
with:
version: '1.7'
version: '1.7.2'
arch: x64
- name: Install documentation dependencies
run: julia --project=docs/ -e 'using Pkg; Pkg.develop(PackageSpec(path=pwd())); Pkg.instantiate()'
- name: Build and deploy
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -109,3 +109,7 @@ Language | Package/Function | Mean time taken
-----------|--------------------|------------------

where we emphasise that the performance of fitmodel() here is a tiny overhead on top of the implementation of the linear regression in GLM.jl.

# Support

We gratefully acknowledge the JuliaLab at MIT for financial support for this project.
3 changes: 2 additions & 1 deletion docs/Project.toml
Original file line number Diff line number Diff line change
@@ -4,5 +4,6 @@ Documenter = "e30172f5-a6a5-5a46-863b-614d45cd2de4"
Logging = "56ddb016-857b-54e1-b83d-db4d58db5568"
NLSolversBase = "d41bc354-129a-5804-8e4c-c37616107c6c"
RDatasets = "ce6b1742-4840-55fa-b093-852dadbb1d8b"
StableRNGs = "860ef19b-820b-49d6-a774-d7a799459cd3"
StatsModels = "3eaba693-59b7-5ba5-a881-562e759f1c8d"
StatsPlots = "f3b207a7-027a-5e70-b257-86293d7955fd"
StatsPlots = "f3b207a7-027a-5e70-b257-86293d7955fd"
1 change: 1 addition & 0 deletions docs/make.jl
Original file line number Diff line number Diff line change
@@ -17,6 +17,7 @@ makedocs(;
"Home" => "index.md",
"Examples" => "examples.md"
],
strict = :doctest
)

deploydocs(;
482 changes: 159 additions & 323 deletions docs/src/examples.md

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions src/CRRao.jl
Original file line number Diff line number Diff line change
@@ -41,9 +41,9 @@ struct Cauchit end

export LinearRegression, LogisticRegression, PoissonRegression, NegBinomRegression
export Prior_Ridge, Prior_Laplace, Prior_Cauchy, Prior_TDist, Prior_Uniform
export Logit, Probit, Cloglog, Cauchit, fitmodel, @fitmodel, CRRao_seed
export Logit, Probit, Cloglog, Cauchit, fitmodel, @fitmodel

include("set_seed.jl")
include("random_number_generator.jl")
include("general_stats.jl")
include("LinearRegression.jl")
include("LogisticRegression.jl")
24 changes: 12 additions & 12 deletions src/LinearRegression.jl
Original file line number Diff line number Diff line change
@@ -19,7 +19,7 @@ struct analysis_lm_Gauss_NIP_Optim
end

function linear_reg(formula::FormulaTerm,data::DataFrame)
CRRao.seed != nothing && Random.seed!(CRRao.seed)

modelClass = "LinearReg";
LikelihoodMod="Gauss";
PriorMod="NIP";
@@ -61,7 +61,7 @@ function linear_reg(formula::FormulaTerm,data::DataFrame)
end

function linear_reg_predicts(obj,newdata::DataFrame)
CRRao.seed != nothing && Random.seed!(CRRao.seed)

formula = obj.formula;
fm_frame=ModelFrame(formula,newdata);
X=modelmatrix(fm_frame);
@@ -71,7 +71,7 @@ function linear_reg_predicts(obj,newdata::DataFrame)
end

function linear_reg(formula::FormulaTerm,data::DataFrame,PriorMod::Prior_Ridge,h::Float64,sim_size::Int64)
CRRao.seed != nothing && Random.seed!(CRRao.seed)

formula = apply_schema(formula, schema(formula, data));
y, X = modelcols(formula, data);

@@ -91,15 +91,15 @@ function linear_reg(formula::FormulaTerm,data::DataFrame,PriorMod::Prior_Ridge,h
y ~ MvNormal.+ X * β, σ);
end;
LinReg_model=LinReg(X,y);
chain = sample(LinReg_model, NUTS(), sim_size);
chain = sample(CRRao_rng, LinReg_model, NUTS(), sim_size);
summaries, quantiles = describe(chain);

ans = MCMC_chain(chain,summaries,quantiles)
ans
end

function linear_reg(formula::FormulaTerm,data::DataFrame,PriorMod::Prior_Laplace,h::Float64,sim_size::Int64)
CRRao.seed != nothing && Random.seed!(CRRao.seed)

formula = apply_schema(formula, schema(formula, data));
y, X = modelcols(formula, data);

@@ -118,7 +118,7 @@ function linear_reg(formula::FormulaTerm,data::DataFrame,PriorMod::Prior_Laplace
y ~ MvNormal.+ X * β, σ);
end;
LinReg_model=LinReg(X,y);
chain = sample(LinReg_model, NUTS(), sim_size);
chain = sample(CRRao_rng, LinReg_model, NUTS(), sim_size);
summaries, quantiles = describe(chain);

ans = MCMC_chain(chain,summaries,quantiles)
@@ -127,7 +127,7 @@ function linear_reg(formula::FormulaTerm,data::DataFrame,PriorMod::Prior_Laplace
end

function linear_reg(formula::FormulaTerm,data::DataFrame,PriorMod::Prior_Cauchy,sim_size::Int64)
CRRao.seed != nothing && Random.seed!(CRRao.seed)

formula = apply_schema(formula, schema(formula, data));
y, X = modelcols(formula, data);

@@ -143,7 +143,7 @@ function linear_reg(formula::FormulaTerm,data::DataFrame,PriorMod::Prior_Cauchy,
y ~ MvNormal.+ X * β, σ);
end;
LinReg_model=LinReg(X,y);
chain = sample(LinReg_model, NUTS(), sim_size);
chain = sample(CRRao_rng, LinReg_model, NUTS(), sim_size);
summaries, quantiles = describe(chain);

ans = MCMC_chain(chain,summaries,quantiles)
@@ -152,7 +152,7 @@ function linear_reg(formula::FormulaTerm,data::DataFrame,PriorMod::Prior_Cauchy,
end

function linear_reg(formula::FormulaTerm,data::DataFrame,PriorMod::Prior_TDist,h::Float64,sim_size::Int64)
CRRao.seed != nothing && Random.seed!(CRRao.seed)

formula = apply_schema(formula, schema(formula, data));
y, X = modelcols(formula, data);

@@ -171,7 +171,7 @@ function linear_reg(formula::FormulaTerm,data::DataFrame,PriorMod::Prior_TDist,h
y ~ MvNormal.+ X * β, σ);
end;
LinReg_model=LinReg(X,y);
chain = sample(LinReg_model, NUTS(), sim_size);
chain = sample(CRRao_rng, LinReg_model, NUTS(), sim_size);
summaries, quantiles = describe(chain);

ans = MCMC_chain(chain,summaries,quantiles)
@@ -180,7 +180,7 @@ function linear_reg(formula::FormulaTerm,data::DataFrame,PriorMod::Prior_TDist,h
end

function linear_reg(formula::FormulaTerm,data::DataFrame,PriorMod::Prior_Uniform,h::Float64,sim_size::Int64)
CRRao.seed != nothing && Random.seed!(CRRao.seed)

formula = apply_schema(formula, schema(formula, data));
y, X = modelcols(formula, data);

@@ -197,7 +197,7 @@ function linear_reg(formula::FormulaTerm,data::DataFrame,PriorMod::Prior_Uniform
y ~ MvNormal.+ X * β, σ);
end;
LinReg_model=LinReg(X,y);
chain = sample(LinReg_model, NUTS(), sim_size);
chain = sample(CRRao_rng, LinReg_model, NUTS(), sim_size);
summaries, quantiles = describe(chain);

ans = MCMC_chain(chain,summaries,quantiles)
24 changes: 12 additions & 12 deletions src/LogisticRegression.jl
Original file line number Diff line number Diff line change
@@ -20,7 +20,7 @@ struct analysis_logistic_Binom_NIP_Optim
end

function logistic_reg(formula::FormulaTerm,data,Link::String="LogitLink")
CRRao.seed != nothing && Random.seed!(CRRao.seed)

modelClass = "LogisticReg";
LikelihoodMod="Binomial";
PriorMod="NIP";
@@ -65,7 +65,7 @@ function logistic_reg(formula::FormulaTerm,data,Link::String="LogitLink")
end

function logistic_reg_predicts(obj,newdata::DataFrame)
CRRao.seed != nothing && Random.seed!(CRRao.seed)

formula = obj.formula;
fm_frame=ModelFrame(formula,newdata);
X=modelmatrix(fm_frame);
@@ -94,7 +94,7 @@ end
## logistic regression with Ridge Prior

function logistic_reg_internal(formula::FormulaTerm, data::DataFrame, link_function, PriorMod::Prior_Ridge, h::Float64=0.5,sim_size::Int64=10000)
CRRao.seed != nothing && Random.seed!(CRRao.seed)

formula = apply_schema(formula, schema(formula, data));
y, X = modelcols(formula, data);
fm_frame=ModelFrame(formula,data);
@@ -123,7 +123,7 @@ function logistic_reg_internal(formula::FormulaTerm, data::DataFrame, link_funct

LogisticReg_model=LogisticReg(X,y);

chain = sample(LogisticReg_model, NUTS(), sim_size);
chain = sample(CRRao_rng, LogisticReg_model, NUTS(), sim_size);

summaries, quantiles = describe(chain);

@@ -152,7 +152,7 @@ end
## logistic regression with Laplace Prior

function logistic_reg_internal(formula::FormulaTerm,data::DataFrame, link_function,PriorMod::Prior_Laplace,h::Float64=0.5,sim_size::Int64=10000)
CRRao.seed != nothing && Random.seed!(CRRao.seed)

formula = apply_schema(formula, schema(formula, data));
y, X = modelcols(formula, data);
fm_frame=ModelFrame(formula,data);
@@ -181,7 +181,7 @@ function logistic_reg_internal(formula::FormulaTerm,data::DataFrame, link_functi

LogisticReg_model=LogisticReg(X,y);

chain = sample(LogisticReg_model, NUTS(), sim_size);
chain = sample(CRRao_rng, LogisticReg_model, NUTS(), sim_size);

summaries, quantiles = describe(chain);

@@ -210,7 +210,7 @@ end
## logistic regression with Cauchy Prior

function logistic_reg_internal(formula::FormulaTerm,data,link_function,PriorMod::Prior_Cauchy,h::Float64,sim_size::Int64)
CRRao.seed != nothing && Random.seed!(CRRao.seed)

formula = apply_schema(formula, schema(formula, data));
y, X = modelcols(formula, data);
fm_frame=ModelFrame(formula,data);
@@ -239,7 +239,7 @@ function logistic_reg_internal(formula::FormulaTerm,data,link_function,PriorMod:

LogisticReg_model=LogisticReg(X,y);

chain = sample(LogisticReg_model, NUTS(), sim_size);
chain = sample(CRRao_rng, LogisticReg_model, NUTS(), sim_size);

summaries, quantiles = describe(chain);

@@ -268,7 +268,7 @@ end
## logistic regression with TDist Prior

function logistic_reg_internal(formula::FormulaTerm,data,link_function,PriorMod::Prior_TDist,h::Float64,sim_size::Int64)
CRRao.seed != nothing && Random.seed!(CRRao.seed)

formula = apply_schema(formula, schema(formula, data));
y, X = modelcols(formula, data);
fm_frame=ModelFrame(formula,data);
@@ -298,7 +298,7 @@ function logistic_reg_internal(formula::FormulaTerm,data,link_function,PriorMod:

LogisticReg_model=LogisticReg(X,y);

chain = sample(LogisticReg_model, NUTS(), sim_size);
chain = sample(CRRao_rng, LogisticReg_model, NUTS(), sim_size);

summaries, quantiles = describe(chain);

@@ -328,7 +328,7 @@ end
## logistic regression with Uniform Prior

function logistic_reg_internal(formula::FormulaTerm,data,link_function,PriorMod::Prior_Uniform,h::Float64=0.5,sim_size::Int64=10000)
CRRao.seed != nothing && Random.seed!(CRRao.seed)

formula = apply_schema(formula, schema(formula, data));
y, X = modelcols(formula, data);
fm_frame=ModelFrame(formula,data);
@@ -357,7 +357,7 @@ function logistic_reg_internal(formula::FormulaTerm,data,link_function,PriorMod:

LogisticReg_model=LogisticReg(X,y);

chain = sample(LogisticReg_model, NUTS(), sim_size);
chain = sample(CRRao_rng, LogisticReg_model, NUTS(), sim_size);

summaries, quantiles = describe(chain);

24 changes: 12 additions & 12 deletions src/NegBinomialRegression.jl
Original file line number Diff line number Diff line change
@@ -20,7 +20,7 @@ end


function NegBinom_Reg(formula::FormulaTerm,data,Link::String="LogLink")
CRRao.seed != nothing && Random.seed!(CRRao.seed)

modelClass = "CountReg";
LikelihoodMod="NegativeBinomial";
PriorMod="NIP";
@@ -53,7 +53,7 @@ end


function NegBinom_Reg_predicts(obj,newdata::DataFrame)
CRRao.seed != nothing && Random.seed!(CRRao.seed)

formula = obj.formula;
fm_frame=ModelFrame(formula,newdata);
X=modelmatrix(fm_frame);
@@ -73,7 +73,7 @@ end

## Negative Binomial Regression with Ridge Prior
function NegBinom_Reg(formula::FormulaTerm,data::DataFrame,PriorMod::Prior_Ridge,h::Float64,sim_size::Int64)
CRRao.seed != nothing && Random.seed!(CRRao.seed)

formula = apply_schema(formula, schema(formula, data));
y, X = modelcols(formula, data);
@model NegBinomReg(X, y) = begin
@@ -94,7 +94,7 @@ function NegBinom_Reg(formula::FormulaTerm,data::DataFrame,PriorMod::Prior_Ridge
end
end
NegBinomReg_model=NegBinomReg(X,y);
chain = sample(NegBinomReg_model, NUTS(), sim_size);
chain = sample(CRRao_rng, NegBinomReg_model, NUTS(), sim_size);
summaries, quantiles = describe(chain);
ans = MCMC_chain(chain,summaries,quantiles)
ans
@@ -104,7 +104,7 @@ end

## Negative Binomial Regression with Laplace Prior
function NegBinom_Reg(formula::FormulaTerm,data::DataFrame,PriorMod::Prior_Laplace,h::Float64,sim_size::Int64)
CRRao.seed != nothing && Random.seed!(CRRao.seed)

formula = apply_schema(formula, schema(formula, data));
y, X = modelcols(formula, data);
@model NegBinomReg(X, y) = begin
@@ -125,15 +125,15 @@ function NegBinom_Reg(formula::FormulaTerm,data::DataFrame,PriorMod::Prior_Lapla
end
end
NegBinomReg_model=NegBinomReg(X,y);
chain = sample(NegBinomReg_model, NUTS(), sim_size);
chain = sample(CRRao_rng, NegBinomReg_model, NUTS(), sim_size);
summaries, quantiles = describe(chain);
ans = MCMC_chain(chain,summaries,quantiles)
ans
end

## Negative Binomial Regression with Cauchy Prior
function NegBinom_Reg(formula::FormulaTerm,data::DataFrame,PriorMod::Prior_Cauchy,h::Float64,sim_size::Int64)
CRRao.seed != nothing && Random.seed!(CRRao.seed)

formula = apply_schema(formula, schema(formula, data));
y, X = modelcols(formula, data);
@model NegBinomReg(X, y) = begin
@@ -154,7 +154,7 @@ function NegBinom_Reg(formula::FormulaTerm,data::DataFrame,PriorMod::Prior_Cauch
end
end
NegBinomReg_model=NegBinomReg(X,y);
chain = sample(NegBinomReg_model, NUTS(), sim_size);
chain = sample(CRRao_rng, NegBinomReg_model, NUTS(), sim_size);
summaries, quantiles = describe(chain);
ans = MCMC_chain(chain,summaries,quantiles)
ans
@@ -163,7 +163,7 @@ end

## Negative Binomial Regression with TDist Prior
function NegBinom_Reg(formula::FormulaTerm,data::DataFrame,PriorMod::Prior_TDist,h::Float64,sim_size::Int64)
CRRao.seed != nothing && Random.seed!(CRRao.seed)

formula = apply_schema(formula, schema(formula, data));
y, X = modelcols(formula, data);
@model NegBinomReg(X, y) = begin
@@ -185,7 +185,7 @@ function NegBinom_Reg(formula::FormulaTerm,data::DataFrame,PriorMod::Prior_TDist
end
end
NegBinomReg_model=NegBinomReg(X,y);
chain = sample(NegBinomReg_model, NUTS(), sim_size);
chain = sample(CRRao_rng, NegBinomReg_model, NUTS(), sim_size);
summaries, quantiles = describe(chain);
ans = MCMC_chain(chain,summaries,quantiles)
ans
@@ -195,7 +195,7 @@ end

## Negative Binomial Regression with Uniform Prior
function NegBinom_Reg(formula::FormulaTerm,data::DataFrame,PriorMod::Prior_Uniform,h::Float64,sim_size::Int64)
CRRao.seed != nothing && Random.seed!(CRRao.seed)

formula = apply_schema(formula, schema(formula, data));
y, X = modelcols(formula, data);
@model NegBinomReg(X, y) = begin
@@ -216,7 +216,7 @@ function NegBinom_Reg(formula::FormulaTerm,data::DataFrame,PriorMod::Prior_Unifo
end
end
NegBinomReg_model=NegBinomReg(X,y);
chain = sample(NegBinomReg_model, NUTS(), sim_size);
chain = sample(CRRao_rng, NegBinomReg_model, NUTS(), sim_size);
summaries, quantiles = describe(chain);
ans = MCMC_chain(chain,summaries,quantiles)
ans
24 changes: 12 additions & 12 deletions src/PoissonRegression.jl
Original file line number Diff line number Diff line change
@@ -20,7 +20,7 @@ struct analysis_Poisson_Reg
end

function Poisson_Reg(formula::FormulaTerm,data::DataFrame)
CRRao.seed != nothing && Random.seed!(CRRao.seed)

formula = apply_schema(formula, schema(formula, data));
y, X = modelcols(formula, data);
fm_frame=ModelFrame(formula,data);
@@ -44,7 +44,7 @@ function Poisson_Reg(formula::FormulaTerm,data::DataFrame)
end

function Poisson_Reg_predicts(obj,newdata::DataFrame)
CRRao.seed != nothing && Random.seed!(CRRao.seed)

formula = obj.formula;
fm_frame=ModelFrame(formula,newdata);
X=modelmatrix(fm_frame);
@@ -57,7 +57,7 @@ end

## Poisson Regression with Ridge Prior
function Poisson_Reg(formula::FormulaTerm,data::DataFrame,PriorMod::Prior_Ridge,h::Float64,sim_size::Int64)
CRRao.seed != nothing && Random.seed!(CRRao.seed)

formula = apply_schema(formula, schema(formula, data));
y, X = modelcols(formula, data);
@model PoissonReg(X, y) = begin
@@ -78,15 +78,15 @@ function Poisson_Reg(formula::FormulaTerm,data::DataFrame,PriorMod::Prior_Ridge,
end
end
PoissonReg_model=PoissonReg(X,y);
chain = sample(PoissonReg_model, NUTS(), sim_size);
chain = sample(CRRao_rng, PoissonReg_model, NUTS(), sim_size);
summaries, quantiles = describe(chain);
ans = MCMC_chain(chain,summaries,quantiles)
ans
end

## Poisson Regression with Laplace Prior
function Poisson_Reg(formula::FormulaTerm,data::DataFrame,PriorMod::Prior_Laplace,h::Float64,sim_size::Int64)
CRRao.seed != nothing && Random.seed!(CRRao.seed)

formula = apply_schema(formula, schema(formula, data));
y, X = modelcols(formula, data);
@model PoissonReg(X, y) = begin
@@ -107,15 +107,15 @@ function Poisson_Reg(formula::FormulaTerm,data::DataFrame,PriorMod::Prior_Laplac
end
end
PoissonReg_model=PoissonReg(X,y);
chain = sample(PoissonReg_model, NUTS(), sim_size);
chain = sample(CRRao_rng, PoissonReg_model, NUTS(), sim_size);
summaries, quantiles = describe(chain);
ans = MCMC_chain(chain,summaries,quantiles)
ans
end

## Poisson Regression with Cauchy Prior
function Poisson_Reg(formula::FormulaTerm,data::DataFrame,PriorMod::Prior_Cauchy,h::Float64,sim_size::Int64)
CRRao.seed != nothing && Random.seed!(CRRao.seed)

formula = apply_schema(formula, schema(formula, data));
y, X = modelcols(formula, data);
@model PoissonReg(X, y) = begin
@@ -136,15 +136,15 @@ function Poisson_Reg(formula::FormulaTerm,data::DataFrame,PriorMod::Prior_Cauchy
end
end
PoissonReg_model=PoissonReg(X,y);
chain = sample(PoissonReg_model, NUTS(), sim_size);
chain = sample(CRRao_rng, PoissonReg_model, NUTS(), sim_size);
summaries, quantiles = describe(chain);
ans = MCMC_chain(chain,summaries,quantiles)
ans
end

## Poisson Regression with T-Distributed Prior
function Poisson_Reg(formula::FormulaTerm,data::DataFrame,PriorMod::Prior_TDist,h::Float64,sim_size::Int64)
CRRao.seed != nothing && Random.seed!(CRRao.seed)

formula = apply_schema(formula, schema(formula, data));
y, X = modelcols(formula, data);
@model PoissonReg(X, y) = begin
@@ -166,15 +166,15 @@ function Poisson_Reg(formula::FormulaTerm,data::DataFrame,PriorMod::Prior_TDist,
end
end
PoissonReg_model=PoissonReg(X,y);
chain = sample(PoissonReg_model, NUTS(), sim_size);
chain = sample(CRRao_rng, PoissonReg_model, NUTS(), sim_size);
summaries, quantiles = describe(chain);
ans = MCMC_chain(chain,summaries,quantiles)
ans
end

## Poisson Regression with Uniform Prior
function Poisson_Reg(formula::FormulaTerm,data::DataFrame,PriorMod::Prior_Uniform,h::Float64,sim_size::Int64)
CRRao.seed != nothing && Random.seed!(CRRao.seed)

formula = apply_schema(formula, schema(formula, data));
y, X = modelcols(formula, data);
@model PoissonReg(X, y) = begin
@@ -194,7 +194,7 @@ function Poisson_Reg(formula::FormulaTerm,data::DataFrame,PriorMod::Prior_Unifor
end
end
PoissonReg_model=PoissonReg(X,y);
chain = sample(PoissonReg_model, NUTS(), sim_size);
chain = sample(CRRao_rng, PoissonReg_model, NUTS(), sim_size);
summaries, quantiles = describe(chain);
ans = MCMC_chain(chain,summaries,quantiles)
ans
11 changes: 11 additions & 0 deletions src/random_number_generator.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
global CRRao_rng = MersenneTwister()

"""
```julia
using StableRNGs
CRRao.set_rng(StableRNG(1234))
```
"""
function set_rng(x)
global CRRao_rng = x
end
5 changes: 0 additions & 5 deletions src/set_seed.jl

This file was deleted.