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.

76 lines
2.0 KiB
Plaintext

7 months ago
*! sdpair.ado 1.00 by PTS (p.seed@umds.ac.uk) (STB-55: sbe33)
*! Based on Pitman (1939) Biometrika 31: 9
*! as in Snedecor & Cochran (1967) "Statistical methods (6th ed)" (Iowas State UP)
prog define sdpair
version 5.0
local varlist " req ex min(2) max(2)"
local if "opt"
local in "opt"
local weight "fweight aweight"
local options "format(string) Level(real 100)"
parse "`*'"
tempvar touse sum diff
mark `touse' `if' `in'
markout `touse' `varlist'
if "`format'" == "" { local format "%6.4f" }
if `level' == 100 { local level = $S_level }
if `level' > 1 { local level = `level' /100 }
parse "`varlist'", parse(" ")
qui summ `1' if `touse' [`weight'`exp']
tempname var1 n df var2 F r t p K lcb ucb
scalar `var1' = _result(4)
scalar `n' = _result(2)
scalar `df' = `n' - 2
qui summ `2' if `touse' [`weight'`exp']
scalar `var2' = _result(4)
scalar `F' = `var1'/`var2'
qui corr `varlist' if `touse' [`weight'`exp']
scalar `r' = _result(4)
scalar `t' = ((`F'-1)/2)*( (`df')/ ((1-`r'*`r')*`F') )^.5
* Note: under the null hypothesis, phi = 1
* di "t = |" `t' "|"
scalar `p' = tprob(`df', `t')
scalar `K' = 1 + 2*(1-`r'*`r')*invt(`df', `level')^2/(`df')
scalar `lcb' = `F' * (`K' - (`K'*`K'-1)^.5)
scalar `ucb' = `F' * (`K' + (`K'*`K'-1)^.5)
local label1 : variable label `1'
if "`label1'" == "" {local label1 `1' }
local label2 : variable label `2'
if "`label2'" == "" {local label2 `2' }
zap_s
global S_1 = `n'
global S_2 = `t'
global S_3 = `df'
global S_4 = `p'
global S_5 = `F'^.5
global S_6 = `lcb'^.5
global S_7 = `ucb'^.5
di in gr _n(2) "Pitman's variance ratio test between `label1' and `label2': "
di in gr _n "Ratio of Standard deviations = " in ye `format' `F'^.5, "
di in gr 100*`level' "% Confidence Interval " in ye `format' `lcb'^.5 in gr " to " in ye `format' `ucb'^.5
di in gr "t = " in ye %6.3f `t' in gr ", df = " in ye `df' in gr ", p = " in ye %6.3f `p'
end vartest