📄 pkcross.ado
字号:
qui anova `outcome' `period' `treat' `period'*`treat' /*
*/ if `touse'
di
TopLine "Analysis of variance (ANOVA) for a 2x2 crossover study"`ptl'
qui test `treat'
Line "Treatment effect" r(ss) r(df) r(ss)/r(df) /*
*/ r(F) fprob(r(df),r(df_r),r(F)) `ptl'
qui test `period'
Line "Period effect" r(ss) r(df) r(ss)/r(df) /*
*/ r(F) fprob(r(df),r(df_r),r(F)) `ptl'
qui test `period'*`treat'
Line "Treatment * Period" r(ss) r(df) r(ss)/r(df) /*
*/ r(F) fprob(r(df),r(df_r),r(F)) `ptl'
Line "Residuals" r(rss) r(df_r) r(rss)/r(df_r) `ptl'
DivLine
Line "Total" e(rss)+e(mss) e(df_m)+e(df_r) `ptl'
}
else {
di
TopLine "Analysis of variance (ANOVA) for a 2x2 crossover study"
qui anova `outcome' `treat' if `touse'
qui test `treat'
Line "Treatment effect" r(ss) r(df) r(ss)/r(df) /*
*/ r(F) fprob(r(df),r(df_r),r(F))
qui anova `outcome' `treat' `period' if `touse'
qui test `period'
Line "Period effect" r(ss) r(df) r(ss)/r(df) /*
*/ r(F) fprob(r(df),r(df_r),r(F))
qui anova `outcome' `treat' `period' `period'*`treat'
qui test `period'*`treat'
Line "Treatment * Period" r(ss) r(df) r(ss)/r(df) /*
*/ r(F) fprob(r(df),r(df_r),r(F))
Line "Residuals" r(rss) r(df_r) r(rss)/r(df_r)
DivLine
}
end
program define _2x2_p3, rclass
version 6, missing
syntax varlist(numeric min=5 max=6) [if] [in] [, SEquential]
marksample touse
tokenize `varlist'
local id = "`1'"
local seq = "`2'"
local outcome = "`3'"
local period = "`4'"
local treat = "`5'"
local carry = "`6'"
if "`sequential'" == "" {
local ptl ptl
}
else {
local ptl = ""
}
if "`sequential'" == "" {
qui anova `outcome' `seq'/`id'|`seq' `treat' `period' /*
*/ if `touse', `sequential'
di
TopLine "Analysis of variance (ANOVA) for a 2x2 crossover study" `ptl'
HdrLine "Intersubjects"
qui test `seq'/`id'|`seq'
Line "Sequence effect" r(ss) r(df) r(ss)/r(df) /*
*/ r(F) fprob(r(df),r(df_r),r(F)) `ptl'
qui test `id'|`seq'
Line "Residuals" r(ss) r(df) r(ss)/r(df) /*
*/ r(F) fprob(r(df),r(df_r),r(F)) `ptl'
DivLine
HdrLine "Intrasubjects"
qui test `treat'
Line "Treatment effect" r(ss) r(df) r(ss)/r(df) /*
*/ r(F) fprob(r(df),r(df_r),r(F)) `ptl'
qui test `period'
Line "Period effect" r(ss) r(df) r(ss)/r(df) /*
*/ r(F) fprob(r(df),r(df_r),r(F)) `ptl'
Line "Residuals" r(rss) r(df_r) r(rss)/r(df_r) `ptl'
DivLine
Line "Total" e(rss)+e(mss) e(df_m)+e(df_r) `ptl'
/* qui anova `outcome' `seq'/`id'|`seq' `treat' `period' /*
*/ if `touse', `sequential'
*/ }
else {
di
TopLine "Analysis of variance (ANOVA) for a 2x2 crossover study"
HdrLine "Intersubjects"
qui anova `outcome' `seq'/`id'|`seq' /*
*/ if `touse', `sequential'
qui test `seq'/`id'|`seq'
Line "Sequence effect" r(ss) r(df) r(ss)/r(df) /*
*/ r(F) fprob(r(df),r(df_r),r(F))
qui test `id'|`seq'
Line "Residuals" r(ss) r(df) r(ss)/r(df) /*
*/ r(F) fprob(r(df),r(df_r),r(F))
DivLine
HdrLine "Intrasubjects"
qui anova `outcome' `seq'/`id'|`seq' `treat' /*
*/ if `touse', `sequential'
qui test `treat'
Line "Treatment effect" r(ss) r(df) r(ss)/r(df) /*
*/ r(F) fprob(r(df),r(df_r),r(F))
qui anova `outcome' `seq'/`id'|`seq' `treat' `period' /*
*/ if `touse', `sequential'
qui test `period'
Line "Period effect" r(ss) r(df) r(ss)/r(df) /*
*/ r(F) fprob(r(df),r(df_r),r(F))
Line "Residuals" r(rss) r(df_r) r(rss)/r(df_r)
DivLine
Line "Total" e(rss)+e(mss) e(df_m)+e(df_r)
}
end
program define _2x2_p4, rclass
version 6, missing
syntax varlist(numeric min=5 max=6) [if] [in] [, SEquential]
marksample touse
tokenize `varlist'
local id = "`1'"
local seq = "`2'"
local outcome = "`3'"
local period = "`4'"
local treat = "`5'"
local carry = "`6'"
if "`sequential'" == "" {
local ptl ptl
}
else {
local ptl = ""
}
if "`sequential'" == "" {
qui anova `outcome' `seq'/`id'|`seq' `treat' `treat'*`seq' /*
*/ if `touse', `sequential'
di
TopLine "Analysis of variance (ANOVA) for a 2x2 crossover study" `ptl'
qui test `treat'
Line "Treatment effect" r(ss) r(df) r(ss)/r(df) /*
*/ r(F) fprob(r(df),r(df_r),r(F)) `ptl'
qui test `seq'/`id'|`seq'
Line "Sequence effect" r(ss) r(df) r(ss)/r(df) /*
*/ r(F) fprob(r(df),r(df_r),r(F)) `ptl'
qui test `id'|`seq'
Line "Id|Sequence" r(ss) r(df) r(ss)/r(df) /*
*/ r(F) fprob(r(df),r(df_r),r(F)) `ptl'
qui test `treat'*`seq'
Line "Treatment * Sequence" r(ss) r(df) r(ss)/r(df) /*
*/ r(F) fprob(r(df),r(df_r),r(F)) `ptl'
Line "Residuals" r(rss) r(df_r) r(rss)/r(df_r) `ptl'
DivLine
Line "Total" e(rss)+e(mss) e(df_m)+e(df_r) `ptl'
}
else {
di
TopLine "Analysis of variance (ANOVA) for a 2x2 crossover study"
qui anova `outcome' `treat' /*
*/ if `touse', `sequential'
qui test `treat'
Line "Treatment effect" r(ss) r(df) r(ss)/r(df) /*
*/ r(F) fprob(r(df),r(df_r),r(F))
qui anova `outcome' `treat' `seq'/`id'|`seq' /*
*/ if `touse', `sequential'
qui test `seq'/`id'|`seq'
Line "Sequence effect" r(ss) r(df) r(ss)/r(df) /*
*/ r(F) fprob(r(df),r(df_r),r(F))
qui test `id'|`seq'
Line "Id|Sequence" r(ss) r(df) r(ss)/r(df) /*
*/ r(F) fprob(r(df),r(df_r),r(F))
qui anova `outcome' `treat' `seq'/`id'|`seq' `treat'*`seq' /*
*/ if `touse', `sequential'
qui test `treat'*`seq'
Line "Treatment * Sequence" r(ss) r(df) r(ss)/r(df) /*
*/ r(F) fprob(r(df),r(df_r),r(F))
Line "Residuals" r(rss) r(df_r) r(rss)/r(df_r)
DivLine
Line "Total" e(rss)+e(mss) e(df_m)+e(df_r)
}
end
program define Cx, rclass
version 6, missing
syntax varlist(numeric min=5 max=6) [if] [in] [, SEquential]
marksample touse
tokenize `varlist'
local id = "`1'"
local seq = "`2'"
local outcome = "`3'"
local period = "`4'"
local treat = "`5'"
local carry = "`6'"
if "`sequential'" == "" {
local ptl ptl
}
else {
local ptl = ""
}
if "`sequential'" == "" {
qui anova `outcome' `seq'/`id'|`seq' `period' `treat' /*
*/ `carry' if `touse'
TopLine "Analysis of variance (ANOVA) for a crossover study" `ptl'
HdrLine Intersubjects
qui test `seq'/`id'|`seq'
Line "Sequence effect " r(ss) r(df) r(ss)/r(df) /*
*/ r(F) fprob(r(df),r(df_r),r(F)) `ptl'
qui test `id'|`seq'
Line "Residuals" r(ss) r(df) r(ss)/r(df) /*
*/ r(F) fprob(r(df),r(df_r),r(F)) `ptl'
DivLine
HdrLine Intrasubjects
qui test `treat'
Line "Treatment effect" r(ss) r(df) r(ss)/r(df) /*
*/ r(F) fprob(r(df),r(df_r),r(F)) `ptl'
if "`carry'" != "" {
qui test `carry'
Line "Carryover effect" r(ss) r(df) r(ss)/r(df) /*
*/ r(F) fprob(r(df),r(df_r),r(F)) `ptl'
}
qui test `period'
Line "Period effect" r(ss) r(df) r(ss)/r(df) /*
*/ r(F) fprob(r(df),r(df_r),r(F)) `ptl'
Line "Residuals" r(rss) r(df_r) r(rss)/r(df_r) `ptl'
DivLine
Line "Total" e(rss)+e(mss) e(df_m)+e(df_r) `ptl'
}
else {
di
TopLine "Analysis of variance (ANOVA) for a crossover study"
HdrLine "Intersubjects"
qui anova `outcome' `seq'/`id'|`seq' if `touse'
qui test `seq'/`id'|`seq'
Line "Sequence effect" r(ss) r(df) r(ss)/r(df) /*
*/ r(F) fprob(r(df),r(df_r),r(F))
qui anova `outcome' `seq' `id'|`seq' if `touse'
qui test `id'|`seq'
Line "Residuals" r(ss) r(df) r(ss)/r(df) /*
*/ r(F) fprob(r(df),r(df_r),r(F))
DivLine
HdrLine "Intrasubjects"
qui anova `outcome' `seq'/`id'|`seq' `period' if `touse'
qui test `period'
Line "Period effect" r(ss) r(df) r(ss)/r(df) /*
*/ r(F) fprob(r(df),r(df_r),r(F))
qui anova `outcome' `seq'/`id'|`seq' `period' `treat' /*
*/ if `touse'
qui test `treat'
Line "Treatment effect" r(ss) r(df) r(ss)/r(df) /*
*/ r(F) fprob(r(df),r(df_r),r(F))
if "`carry'" != "" {
qui anova `outcome' `seq'/`id'|`seq' `period' /*
*/ `treat' `carry' if `touse'
qui test `carry'
}
Line "Carryover effect" r(ss) r(df) r(ss)/r(df) /*
*/ r(F) fprob(r(df),r(df_r),r(F))
Line "Residuals" r(rss) r(df_r) r(rss)/r(df_r)
DivLine
Line "Total" e(rss)+e(mss) e(df_m)+e(df_r)
}
end
program define ChkVar
args var
unab vname : `var'
if `"`vname'"' != `"`var'"' {
di as err "no variable named " as res `"`var'"' /*
*/ as err " in the data"
exit 198
}
end
exit
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -