Hello,
I have written a simple program to calculate the power for a multilevel dataset. The program works. When I tried to incorporate this program to power command in Stata following these steps specified in this post. It always returns the error message "option power() not allowed". Appreciate advice on how to troubleshoot it.
Here is the program that works.
capture program drop simmixed
program simmixed, rclass
version 17
// PARSE INPUT
syntax, site_group_n(integer) ///
opp_n(integer) ///
[ alpha(real 0.05) ///
intercept(real 67.57) ///
u0i(real 24.59) ///
eij(real 31.67) ]
// COMPUTE POWER
quietly {
drop _all
set obs `site_group_n'
generate site_group = _n
*night shift reduces the hours by around 10 except for Wednesday
generate u_0i = rnormal(0,`u0i')
expand `opp_n'
generate night = rbinomial(1,6/14)
generate treatment=rbinomial(1,0.5)
generate e_ij = rnormal(0,`eij')
gen total_hours_actual=`intercept'+5.49*treatment+nigh t*rnormal(-10,5)+ u_0i+e_ij
reghdfe total_hours_actual i.treatment i.night,absorb(site_group) cluster(site_group)
local p_value=tden(`site_group_n',e(b)[1,2]/ sqrt(e(V)[2,2]))*2
local reject=`p_value'<`alpha'
}
// RETURN RESULTS
return scalar reject = `reject'
end
* Try whether the program works.
simulate reject=r(reject), reps(1000) seed(12345): simmixed, site_group_n(21) opp_n(53)
summarize reject
The following codes do not work and generate error message "option power() not allowed"
capture program drop power_cmd_simmixed
program power_cmd_simmixed, rclass
version 17
// PARSE INPUT
syntax, site_group_n(integer) ///
opp_n(integer) ///
[alpha(real 0.05) ///
intercept(real 67.57) ///
u0i(real 24.59) ///
eij(real 31.67) ///
reps(integer 1000)]
// COMPUTE POWER
quietly {
simulate reject=r(reject), reps(`reps'): ///
simmixed, site_group_n(`site_group_n') opp_n(`opp_n') alpha(`alpha') intercept(`intercept') ///
u0i(`u0i') eij(`eij')
summarize reject
}
// RETURN RESULTS
return scalar power = r(mean)
return scalar site_group_n = `site_group_n'
return scalar opp_n = `opp_n'
return scalar alpha = `alpha'
return scalar intercept = `intercept'
return scalar u0i = `u0i'
return scalar eij = `eij'
end
capture program drop power_cmd_simmixed_init
program power_cmd_simmixed_init, sclass
version 17
sreturn clear
// ADD COLUMNS TO THE OUTPUT TABLE
sreturn local pss_colnames "site_group_n opp_n intercept u0i eij"
// ALLOW NUMLISTS FOR ALL PARAMETERS
sreturn local pss_numopts "site_group_n opp_n intercept u0i eij"
end
power simmixed, site_group_n(10) opp_n(50)
I have written a simple program to calculate the power for a multilevel dataset. The program works. When I tried to incorporate this program to power command in Stata following these steps specified in this post. It always returns the error message "option power() not allowed". Appreciate advice on how to troubleshoot it.
Here is the program that works.
capture program drop simmixed
program simmixed, rclass
version 17
// PARSE INPUT
syntax, site_group_n(integer) ///
opp_n(integer) ///
[ alpha(real 0.05) ///
intercept(real 67.57) ///
u0i(real 24.59) ///
eij(real 31.67) ]
// COMPUTE POWER
quietly {
drop _all
set obs `site_group_n'
generate site_group = _n
*night shift reduces the hours by around 10 except for Wednesday
generate u_0i = rnormal(0,`u0i')
expand `opp_n'
generate night = rbinomial(1,6/14)
generate treatment=rbinomial(1,0.5)
generate e_ij = rnormal(0,`eij')
gen total_hours_actual=`intercept'+5.49*treatment+nigh t*rnormal(-10,5)+ u_0i+e_ij
reghdfe total_hours_actual i.treatment i.night,absorb(site_group) cluster(site_group)
local p_value=tden(`site_group_n',e(b)[1,2]/ sqrt(e(V)[2,2]))*2
local reject=`p_value'<`alpha'
}
// RETURN RESULTS
return scalar reject = `reject'
end
* Try whether the program works.
simulate reject=r(reject), reps(1000) seed(12345): simmixed, site_group_n(21) opp_n(53)
summarize reject
The following codes do not work and generate error message "option power() not allowed"
capture program drop power_cmd_simmixed
program power_cmd_simmixed, rclass
version 17
// PARSE INPUT
syntax, site_group_n(integer) ///
opp_n(integer) ///
[alpha(real 0.05) ///
intercept(real 67.57) ///
u0i(real 24.59) ///
eij(real 31.67) ///
reps(integer 1000)]
// COMPUTE POWER
quietly {
simulate reject=r(reject), reps(`reps'): ///
simmixed, site_group_n(`site_group_n') opp_n(`opp_n') alpha(`alpha') intercept(`intercept') ///
u0i(`u0i') eij(`eij')
summarize reject
}
// RETURN RESULTS
return scalar power = r(mean)
return scalar site_group_n = `site_group_n'
return scalar opp_n = `opp_n'
return scalar alpha = `alpha'
return scalar intercept = `intercept'
return scalar u0i = `u0i'
return scalar eij = `eij'
end
capture program drop power_cmd_simmixed_init
program power_cmd_simmixed_init, sclass
version 17
sreturn clear
// ADD COLUMNS TO THE OUTPUT TABLE
sreturn local pss_colnames "site_group_n opp_n intercept u0i eij"
// ALLOW NUMLISTS FOR ALL PARAMETERS
sreturn local pss_numopts "site_group_n opp_n intercept u0i eij"
end
power simmixed, site_group_n(10) opp_n(50)