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
76 lines
2.0 KiB
Plaintext
10 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
|