You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

205 lines
7.0 KiB
Plaintext

*! version 8.3 15june2010
*! Jean-Benoit Hardouin
************************************************************************************************************
* Raschtest: Rasch model, fit tests and graphical validation
*
* Historic:
* Version 1 (2003-06-30): Jean-Benoit Hardouin
* Version 2 (2003-07-07): Jean-Benoit Hardouin
* Version 3 (2004-01-02): Jean-Benoit Hardouin
* Version 4 (2004-01-21): Jean-Benoit Hardouin
* Version 5 (2004-01-24): Jean-Benoit Hardouin
* Version 6 (2004-02-05): Jean-Benoit Hardouin
* Version 6.1 (2004-03-29): Jean-Benoit Hardouin
* Version 6.2 (2004-04-06): Jean-Benoit Hardouin
* Version 6.3 (2004-07-08) : Jean-Benoit Hardouin
* Version 7 (2005-04-02) : Jean-Benoit Hardouin
* Version 7.2 (2005-05-20) : Jean-Benoit Hardouin
* Version 7.3 (2005-07-02) : Jean-Benoit Hardouin
* Version 7.4 (2006-01-15) : Jean-Benoit Hardouin
* Version 7.5 (2006-04-20) : Jean-Benoit Hardouin
* Version 7.6 (2008-06-20) : Jean-Benoit Hardouin /*nold option*/
* Version 8 (2009-06-20) : Jean-Benoit Hardouin /*DIFFICULTIES and COVARIATES options*/
* Version 8.3 (2009-06-20) : Jean-Benoit Hardouin /*GENRES option*/
*
* Needed modules :
* raschtestv7 version 8.1 (http://freeirt.free.fr)
* gammasym version 2.2 (http://www.freeirt.org)
* gausshermite version 1 (http://www.freeirt.org)
* geekel2d version 4.3 (http://www.freeirt.org)
* genscore version 1.4 (http://www.freeirt.org)
* ghquadm (findit ghquadm)
* gllamm version 2.3.14 (ssc describe gllamm)
* gllapred version 2.3.7 (ssc describe gllapred)
* elapse (ssc describe elapse)
*
* Jean-benoit Hardouin - Department of Biomathematics and Biostatistics - University of Nantes - France
* EA 4275 "Biostatistics, Clinical Research and Subjective Measures in Health Sciences"
* jean-benoit.hardouin@univ-nantes.fr
*
* News about this program : http://www.anaqol.org
* FreeIRT Project : http://www.freeirt.org
*
* Copyright 2003-2009 Jean-Benoit Hardouin
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
************************************************************************************************************/
/***********************************************************************************************************
INTRODUCTION
***********************************************************************************************************/
program define raschtest,eclass
syntax varlist(min=1 numeric) [if] [in] , ID(varname) [ MEANdiff DIRsave(string) FILESsave nodraw PAUse REPlace ICC INFormation SPLITtests FITgraph Method(string) group(numlist >0 ascen) AUTOGroup Test(string) q2 GENLT(string) GENSCOre(string) GENFIT(string) GRAph COMp(varname) dif(varlist) time TRace Details nold iterate(int 200) DIFFiculties(string) COVariates(string) GENRes(string)]
local nbitems:word count `varlist'
if "`method'"=="" {
local method "cml"
}
else {
local method=lower("`method'")
}
if "`test'"=="" {
local test "R"
}
else {
local test=upper("`test'")
}
if "`dirsave'"!="" {
local dirsavev8 "dirsave(`dirsave')"
}
if "`method'"!="" {
local methodv8 "method(`method')"
}
if "`test'"!="" {
local testv8 "test(`test')"
}
if "`group'"!="" {
local groupv8 "group(`group')"
}
if "`genlt'"!="" {
local genltv8 "genlt(`genlt')"
}
if "`genscore'"!="" {
local genscorev8 "genscore(`genscore')"
}
if "`genres'"!="" {
local gensresv8 "genres(`genres')"
}
if "`genfit'"!="" {
local genfitv8 "genfit(`genfit')"
}
if "`comp'"!="" {
local compv8 "comp(`comp')"
}
if "`dif'"!="" {
local difv8 "dif(`dif')"
}
if "`iterate'"!="" {
local iteratev8 "iterate(`iterate')"
}
if "`difficulties'"!="" {
local difficultiesv8 "difficulties(`difficulties')"
}
if "`covariates'"!="" {
local covariatesv8 "covariates(`covariates')"
}
raschtestv7 `varlist' `if' `in' , id(`id') `meandiff' `dirsavev8' `filessave' `nodraw' `pause' `replace' `icc' `information' `splittests' `fitgraph' `methodv8' `groupv8' `autogroup' `testv8' `q2' `genltv8' `genscorev8' `genresv8' `genfitv8' `graph' v8 `compv8' `difv8' `time' `trace' `details' `ld' `iteratev8' `difficultiesv8' `covariatesv8'
/***********************************************************************************************************
RETURN
************************************************************************************************************/
ereturn clear
if `nbitems'>=3 {
if "`method'"=="cml" {
if "`test'"!="none" {
tempname AndersenZv8
matrix `AndersenZv8'=r(AndersenZ)
ereturn matrix AndersenZ=`AndersenZv8'
}
if "`dif'"!="" {
tempname DIFv8
matrix `DIFv8'=r(DIF)
ereturn matrix DIF=`DIFv8'
}
tempname cllv8
scalar `cllv8'=r(cll)
ereturn scalar cll=`cllv8'
}
if "`test'"!="NONE" {
tempname itemFitv8 globalFitv8
matrix `itemFitv8'=r(itemFit)
matrix `globalFitv8'=r(globalFit)
ereturn matrix itemFit=`itemFitv8'
ereturn matrix globalFit=`globalFitv8'
}
}
if "`method'"!="cml" {
tempname sigmav8 sesigmav8
local `sigmav8'=`r(sigma)'
local `sesigmav8'=`r(sesigma)'
ereturn scalar sigma=``sigmav8''
ereturn scalar sesigma=``sesigmav8''
}
tempname betav8 Varbetav8 thetav8 Varthetav8 llv8 AICv8
matrix `betav8'=r(beta)
matrix `Varbetav8'=r(Varbeta)
ereturn matrix beta=`betav8'
ereturn matrix Varbeta=`Varbetav8'
matrix `thetav8'=r(theta)
matrix `Varthetav8'=r(Vartheta)
ereturn matrix theta=`thetav8'
ereturn matrix Vartheta=`Varthetav8'
scalar `llv8'=`r(ll)'
scalar `AICv8'=`r(AIC)'
ereturn scalar ll=`llv8'
ereturn scalar AIC=`AICv8'
ereturn scalar Zcomp=r(Zcomp)
ereturn scalar pZcomp=r(pZcomp)
if "`method'"=="mml" {
local psi=r(PSI)
local psiadj=r(PSIadj)
ereturn scalar PSI=`psi'
ereturn scalar PSIadj=`psiadj'
}
if "`covariates'"!="" {
tempname betacovariates Vbetacovariates zcovariates pcovariates
matrix `betacovariates'=r(betacovariates)
matrix `Vbetacovariates'=r(Vbetacovariates)
matrix `zcovariates'=r(zcovariates)
matrix `pcovariates'=r(pcovariates)
ereturn matrix betacovariates=`betacovariates'
ereturn matrix Vbetacovariates=`Vbetacovariates'
ereturn matrix zcovariates=`zcovariates'
ereturn matrix pcovariates=`pcovariates'
}
return clear
end