Estimates ordered logit & probit models. Returns a tuple with the negative log likelihood, gradient, hessian, and the Optim.MultivariateOptimizationResults
object.
using OrderedResponse
using DataFrames
using Optim
# ------- make some data ----------
srand(1234)
n,k = 1000,2
X = randn(n, k)
ϵ = randn(n)
β = [0.2, -1.0]
γ = [-0.4, 0.5]
ystar = X*β + ϵ
y = map((yi) -> searchsortedfirst(γ,yi), ystar)
df = convert(DataFrame, X)
df[:y] = y
# ------- run model ----------
@show orlm(@formula(y ~ 0 + x1 + x2), df, :logit)
@show orlm(@formula(y ~ 0 + x1 + x2), df, :probit)
To extend this package to other distributions, add the functions logcdf
, logcdf
, cdf
, pdf
, and dpdf
to <src/distributions.jl>. Also, make sure to add the model symbol in tests at the beginning of functions & in test file. (It would probably be best to create a global constant with allowed models...)