Title: | Multivariate Ordered Probit Model via Pairwise Likelihood |
---|---|
Description: | Multivariate ordered probit model, i.e. the extension of the scalar ordered probit model where the observed variables have dimension greater than one. Estimation of the parameters is done via maximization of the pairwise likelihood, a special case of the composite likelihood obtained as product of bivariate marginal distributions. The package uses the Fortran 77 subroutine SADMVN by Alan Genz, with minor adaptations made by Adelchi Azzalini in his "mvnormt" package for evaluating the two-dimensional Gaussian integrals involved in the pairwise log-likelihood. Optimization of the latter objective function is performed via quasi-Newton box-constrained optimization algorithm, as implemented in nlminb. |
Authors: | Euloge Clovis Kenne Pagui [aut,cre], Antonio Canale [aut], Alan Genz [ctb], Adelchi Azzalini [ctb] |
Maintainer: | Euloge Clovis Kenne Pagui <[email protected]> |
License: | GPL-2 |
Version: | 1.1 |
Built: | 2025-03-06 03:01:40 UTC |
Source: | https://github.com/cran/PLordprob |
Fit multivariate ordered probit model, i.e. the extension of the scalar ordered probit model where the observed variables have dimension greater than one. Estimation of the parameters is done via maximization of the pairwise likelihood, a special case of the composite likehood obtained as product of bivariate marginal distributions. The package uses the Fortran 77 subroutine SADMVN by Alan Genz, with minor adaptations made by Adelchi Azzalini in his "mvnormt" package for evaluating the two-dimensional Gaussian integrals involved in the pairwise log-likelihood. Optimization of the latter objective function is performed via quasi-Newton box-constrained optimization algorithm, as implemented in nlminb.
Package: | PLordprob |
Type: | Package |
Version: | 1.1 |
Date: | 2018-04-20 |
License: GPL-2 |
Euloge Clovis Kenne Pagui [aut,cre], Antonio Canale [aut], Alan Genz [ctb], Adelchi Azzalini [ctb]
Maintainer: Euloge Clovis Kenne Pagui <[email protected]>
Cox D. R. , Reid N. (2004) A note on pseudolikelihood constructed from marginal densities. Biometrika, 91, 729–737.
Genz A. (1992) Numerical computation of multivariate normal probabilities. Journal of computational and graphical statistics, 2, 141–149.
Kenne Pagui, E. C. and Canale, A. (2014) Pairwise likelihood inference for multivariate categorical responses, Technical Report, Department of Statistics, University of Padua.
Lindsay B. (1988) Composite likelihood methods. Comtemporary Mathematics, 80, 221–240.
Functions to transform (and antitrasforms) the thresholds into an unconstrained space.
delta2a(delta) a2delta(a)
delta2a(delta) a2delta(a)
delta |
a set of increaing thresholds |
a |
a vector (of size |
delta_k = log(a_k - a_k+1)
A vector of tresholds or of tresholds log-differences
Euloge Clovis Kenne Pagui and Antonio Canale
thresh <- c(0,2,4) logdiffs <- a2delta(thresh)
thresh <- c(0,2,4) logdiffs <- a2delta(thresh)
Estimate the parameters of a multivariate ordered probit model maximizing the pairwise log-likelihood function.
ordprob.mple(y, x = NULL, K, start.par = list(type = "default"), same.means = FALSE, eval.max = 1000, iter.max = 600, ...)
ordprob.mple(y, x = NULL, K, start.par = list(type = "default"), same.means = FALSE, eval.max = 1000, iter.max = 600, ...)
y |
matrix with n rows and q columns containing the categorical responses. Each line is a vector of size q representing the responses for a single statistical unit. |
x |
additional n times p matrix of subject specific covariates. |
K |
Number of levels of the categorical responses. |
start.par |
list containing parameters for the maximization algorithm:
|
same.means |
logical. If codeTRUE all the q variable are assumed to have the same mean. |
eval.max |
see |
iter.max |
see |
... |
additional arguments to be passed. |
The code is implemented in R software with call to C functions for the most demanding operations. To evaluate the Gaussian integrals, the package uses the Fortran 77 subroutine SADMVN. The default choice of initialization is the first threshold equal to zero and the remaining thresholds equally spaced with distance one. As for the covariance components, we consider as starting values the sample covariances of the observed categorical variables treated as continuous. Optimization of the pairwise log-likelihood function is performed via quasi-Newton box-constrained optimization algorithm, as implemented in nlminb
.
A list with components:
par |
The best set of parameters found. |
objective |
The value of the negative pairwise likelihood corresponding to |
convergence |
An integer code. 0 indicates successful convergence. |
message |
A character string giving any additional information returned by the optimizer, or |
iterations |
Number of iterations performed. |
evaluations |
Number of objective function and gradient function evaluations. |
thresh |
The set of thresholds partitioning the latent sample space. |
xi |
Vector of the item means. |
cor |
Estimated polychoric correlation matrix. |
Cox D. R. , Reid N. (2004) A note on pseudolikelihood constructed from marginal densities. Biometrika, 91, 729–737.
Genz A. (1992) Numerical computation of multivariate normal probabilities. Journal of computational and graphical statistics, 2, 141–149.
Kenne Pagui, E. C. and Canale, A. (2014) Pairwise likelihood inference for multivariate categorical responses, Technical Report, Department of Statistics, University of Padua.
Lindsay B. (1988) Composite likelihood methods. Comtemporary Mathematics, 80, 221–240.
library(mnormt) ## Not run: # constrained polychoric correlation matrix sigma <- matrix(0.6,5,5) diag(sigma) <- 1 set.seed(123) y <- rmnorm(50, varcov=0.5*sigma) y <- floor(y)+3 fit <- ordprob.mple(y, K=4, same.mean=TRUE) #polychoric correlations fit$cor # unconstrained polychoric correlation matrix set.seed(1) S <- matrix(rWishart(1, df=5, Sigma=diag(1,5)), 5, 5) prec <- diag(1/sqrt(diag(S))) cor <- prec%*%S%*%prec sigma <- cor set.seed(123) y=rmnorm(70, c(1,1,0,0,0), varcov=sigma) y=floor(y)+4 fit <- ordprob.mple(y, K=7, same.mean=FALSE) #polychoric correlations fit$cor ## End(Not run)
library(mnormt) ## Not run: # constrained polychoric correlation matrix sigma <- matrix(0.6,5,5) diag(sigma) <- 1 set.seed(123) y <- rmnorm(50, varcov=0.5*sigma) y <- floor(y)+3 fit <- ordprob.mple(y, K=4, same.mean=TRUE) #polychoric correlations fit$cor # unconstrained polychoric correlation matrix set.seed(1) S <- matrix(rWishart(1, df=5, Sigma=diag(1,5)), 5, 5) prec <- diag(1/sqrt(diag(S))) cor <- prec%*%S%*%prec sigma <- cor set.seed(123) y=rmnorm(70, c(1,1,0,0,0), varcov=sigma) y=floor(y)+4 fit <- ordprob.mple(y, K=7, same.mean=FALSE) #polychoric correlations fit$cor ## End(Not run)