Computed theoretical power for N=100 and N=200 scenarios
This commit is contained in:
183
Modules/ado/plus/p/prdc.ado
Normal file
183
Modules/ado/plus/p/prdc.ado
Normal file
@ -0,0 +1,183 @@
|
||||
*! version 0.0.4 jsl 13Apr2005 - beta version
|
||||
*! To do: there are no IF, IN or ALL options
|
||||
*! To do: Add if ystar or xb
|
||||
|
||||
capture program drop prdc
|
||||
program define prdc, rclass
|
||||
version 8
|
||||
|
||||
*=> classify each valid type of model
|
||||
|
||||
if "`e(cmd)'"=="cloglog" {
|
||||
local io = "typical binary"
|
||||
}
|
||||
if "`e(cmd)'"=="gologit" {
|
||||
local io = "typical ordered"
|
||||
}
|
||||
if "`e(cmd)'"=="logistic" {
|
||||
local io = "typical binary"
|
||||
}
|
||||
if "`e(cmd)'"=="logit" {
|
||||
local io = "typical binary"
|
||||
}
|
||||
if "`e(cmd)'"=="mlogit" {
|
||||
local io = "typical nomord"
|
||||
}
|
||||
if "`e(cmd)'"=="nbreg" {
|
||||
local io = "typical count"
|
||||
}
|
||||
if "`e(cmd)'"=="ologit" {
|
||||
local io = "typical nomord"
|
||||
}
|
||||
if "`e(cmd)'"=="oprobit" {
|
||||
local io = "typical nomord"
|
||||
}
|
||||
if "`e(cmd)'"=="poisson" {
|
||||
local io = "typical count"
|
||||
}
|
||||
if "`e(cmd)'"=="probit" {
|
||||
local io = "typical binary"
|
||||
}
|
||||
if "`e(cmd)'"=="zinb" {
|
||||
local io = "twoeq count"
|
||||
}
|
||||
if "`e(cmd)'"=="zip" {
|
||||
local io = "twoeq count"
|
||||
}
|
||||
if "`io'"=="" {
|
||||
di
|
||||
di in y "prdc" in r " does not work for last model estimated."
|
||||
exit
|
||||
}
|
||||
|
||||
*=> decode input
|
||||
syntax [varlist(default=none)] ///
|
||||
[, x(string) Rest(passthru) LEvel(passthru) ///
|
||||
MAXcnt(passthru) noLAbel noBAse Brief Save Diff ///
|
||||
YStar ept DELta ///
|
||||
BOOTstrap REPs(passthru) SIze(passthru) DOts match ///
|
||||
NORMal PERCENTile BIAScorrected ///
|
||||
From(real 0) To(real 0) Change(real 0) ///
|
||||
BINary Unit SD UNCentered ]
|
||||
|
||||
local qui "quietly"
|
||||
|
||||
local changetype " Uncentered"
|
||||
if "`uncentered'"=="" {
|
||||
local changetype " Centered"
|
||||
}
|
||||
|
||||
if "`varlist'" =="" {
|
||||
di in red "you must specify a variable list."
|
||||
exit
|
||||
}
|
||||
|
||||
* unit by default
|
||||
if `from'==0 & `to'==0 & `change'==0 ///
|
||||
& "`binary'"=="" & "`unit'"=="" & "`sd'"=="" {
|
||||
local unit "unit"
|
||||
}
|
||||
|
||||
tempname mn sdval sdval2 fromto stval endval
|
||||
foreach v in `varlist' {
|
||||
|
||||
matrix `fromto' = J(10,2,-99) // hold start and end
|
||||
local rownm ""
|
||||
local rows = 0
|
||||
qui sum `v' `if' `in'
|
||||
scalar `mn' = r(mean)
|
||||
scalar `sdval' = r(sd)
|
||||
local sdnm "sd"
|
||||
scalar `sdval2' = `sdval'/2
|
||||
if "`binary'"=="binary" {
|
||||
local rows = `rows' + 1
|
||||
local nm`rows' ""
|
||||
mat `fromto'[`rows',1] = 0
|
||||
mat `fromto'[`rows',2] = 1
|
||||
}
|
||||
if "`unit'"=="unit" {
|
||||
local rows = `rows' + 1
|
||||
local nm`rows' "[ -+1/2 ]"
|
||||
scalar `stval' = `mn' - 1/2
|
||||
if "`uncentered'"!="" {
|
||||
local nm`rows' "[ +1 ]"
|
||||
scalar `stval' = `mn'
|
||||
}
|
||||
scalar `endval' = `stval' + 1
|
||||
mat `fromto'[`rows',1] = `stval'
|
||||
mat `fromto'[`rows',2] = `endval'
|
||||
}
|
||||
if "`sd'"=="sd" {
|
||||
local rows = `rows' + 1
|
||||
local nm`rows' "[ -+sd/2 ]"
|
||||
scalar `stval' = `mn' - `sdval2'
|
||||
if "`uncentered'"!="" {
|
||||
local nm`rows' "[ +sd ]"
|
||||
scalar `stval' = `mn'
|
||||
}
|
||||
scalar `endval' = `stval' + `sdval'
|
||||
mat `fromto'[`rows',1] = `stval'
|
||||
mat `fromto'[`rows',2] = `endval'
|
||||
}
|
||||
if `change'!=0 {
|
||||
local rows = `rows' + 1
|
||||
local nm`rows' "[ -+(delta=`change'/2) ]"
|
||||
scalar `stval' = `mn' - (`change'/2)
|
||||
if "`uncentered'"!="" {
|
||||
local nm`rows' "[ +(delta=`delta') ]"
|
||||
scalar `stval' = `mn'
|
||||
}
|
||||
scalar `endval' = `stval' + `change'
|
||||
mat `fromto'[`rows',1] = `stval'
|
||||
mat `fromto'[`rows',2] = `endval'
|
||||
}
|
||||
if `from'==0 & `to'==0 {
|
||||
}
|
||||
else {
|
||||
local rows = `rows' + 1
|
||||
mat `fromto'[`rows',1] = `from'
|
||||
mat `fromto'[`rows',2] = `to'
|
||||
local nm`rows' ""
|
||||
}
|
||||
|
||||
di _n in g "Discrete change for variable: " in y "`v' "
|
||||
|
||||
tempname val dif diflb difub difmisc difout base stis endis
|
||||
foreach r of numlist 1/`rows' {
|
||||
scalar `stis' = `fromto'[`r',1]
|
||||
scalar `endis' = `fromto'[`r',2]
|
||||
local xstis = `stis'
|
||||
local xendis = `endis'
|
||||
`qui' prvalue2, x(`x' `v'=`xstis') ///
|
||||
`rest' `level' save
|
||||
if `r'==1 {
|
||||
* get column names
|
||||
mat `val' = pepred[1,1...]
|
||||
local colnm ""
|
||||
local colnum = colsof(`val')
|
||||
foreach k of numlist 1/`colnum' {
|
||||
local a = `val'[1,`k']
|
||||
local colnm "`colnm' `a'"
|
||||
}
|
||||
}
|
||||
`qui' prvalue2, x(`x' `v'=`xendis') ///
|
||||
`rest' `level' diff
|
||||
mat `dif' = pepred[6,1...]
|
||||
mat `diflb' = pelower[6,1...]
|
||||
mat `difub' = peupper[6,1...]
|
||||
mat `difmisc' = pepred[7,1...]
|
||||
matrix `difout' = `dif' \ `diflb' \ `difub'
|
||||
mat colnames `difout' = `colnm'
|
||||
mat rownames `difout' = " Change" " LowerBound" " UpperBound"
|
||||
di _new in g "`changetype' change from " in y %6.4f `stis' ///
|
||||
in g " to " in y %6.4f `endis' ///
|
||||
in g " `nm`r''"
|
||||
mat list `difout', noheader
|
||||
} // rows
|
||||
|
||||
} // list of variables
|
||||
|
||||
* levels of variables
|
||||
mat `base' = r(x)
|
||||
mat list `base', noheader
|
||||
end
|
Reference in New Issue
Block a user