Hi Zhao,
This is not a direct answer to your question, but a suggestion for a
different approach. The ordinal package was designed to cope with
issues like this (parameter constraints in ordinal regression models)
- try the following:
> library(ordinal)
> data(wine, package="ordinal")
> ## Fit model for reference:
> fm1 <- clm(rating ~ temp + contact, data=wine)
> # summary(fm1)
> coef(fm1)
1|2 2|3 3|4 4|5 tempwarm contactyes
-1.344383 1.250809 3.466887 5.006404 2.503102 1.527798
>
> ## Now fit the same model by manually optimizing a clm-environment:
> env <- clm(rating ~ temp + contact, data=wine, doFit=FALSE)
> # ls.str(env) ## view contents of env
> ## Define negative log-likelihood function:
> nll <- function(par, envir) {
+ envir$par <- par
+ envir$clm.nll(envir)
+ }
> ## optimize with nlminb:
> nlminb(start=env$par, objective=nll, envir=env)$par
[1] -1.344385 1.250812 3.466887 5.006404 2.503102 1.527798
>
> # Now optimize under parameter constraints:
> nlminb(start=env$par, objective=nll, envir=env,
+ upper = c(Inf, Inf, Inf, Inf, 2, 1),
+ lower = rep(-Inf, 6))$par
[1] -1.6124363 0.8060461 2.8052591 4.2401832 2.0000000 1.0000000
>
Cheers
Rune
On 26 January 2017 at 20:41, Liu, Zhao <[email protected]> wrote:
> Hi,
>
> I am working on proportional odds logistic regression, and trying to figure
> out how to specify the constraint for several predictors. Those non-negative
> constraints for some predictors are for practical purpose.
>
> I have seen some one posted passing box constraint with L-BFGS-B with
> logistic regression.
>
> What I did not is to use polr() to solve the proportional odds, and modify
> the source code for polr() by passing the lower bounds to the optim() and
> change the method to L-BFGS-B.
>
> Then I realized that polr() generate a start value for all coefficients with
> glm.fit, which can still start from negative.
>
> So my question is that does the start value having negative while the
> optimization has a lower bound as 0.00001. Does it matter?
>
> Or is there another way of implementation to solve proportional odds while
> forcing some coefficients as non-negative.
>
> Thanks so much!
>
> Zhao
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> [email protected] mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
______________________________________________
[email protected] mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.