连老师:
您好!
::高级部分::
* 计量分析与Stata应用
* =================================
* 第九讲 模拟分析与自抽样
* =================================
* 9.6 检定统计量的势(Power)
第82-127行
cap program drop powerfcn
program define powerfcn
version 9.2
syntax newvarname[, Mean(real 5) sd(real .1) obs(integer 10) Alpha(real 0.05)]
local se = `sd'/sqrt(`obs') /*s.e.*/
local z_a = invnorm(`alpha'/2) /*alpha% critical value*/
local lb = `mean' + `z_a'*`se' /*lower bound*/
local ub = `mean' - `z_a'*`se' /*upper bound*/
* 设定50个可能的母体期望值 4.76(0.01)5.25
set obs 50
tempvar tt
gen `tt' = _n - 25
capture confirm numeric variable mean
if !_rc{
replace mean = `mean' + `tt'/250
}
else{
gen mean = `mean' + `tt'/250
}
* Find the probability of a Type II error
tempvar zlow zup beta
gen `zlow' = (`lb' - mean)/`se'
gen `zup' = (`ub' - mean)/`se'
gen `beta' = normal(`zup') - normal(`zlow')
* 计算 Power
gen `varlist' = 1-`beta'
end
*-----------------------------------------------
*- 样本数对Power的影响
clear
powerfcn power16, obs(16)
powerfcn power100, obs(100)
powerfcn power500, obs(500)
line power16 power100 power500 mean, sort ///
legend(off) yline(0.05,lp(dash)) ///
ylabel(,angle(0) format(%2.1f)) ///
text(0.9 4.995 "n=500") ///
text(0.7 5.035 "n=100") ///
text(0.5 5.057 "n=16") ///
caption(std.dev.=0.1; alpha=0.05)
问题:
1. 观测值设定是否混淆?
第89行 syntax newvarname[, Mean(real 5) sd(real .1) obs(integer 10) Alpha(real 0.05)]
和第95行 set obs 50
是否有矛盾?
2. 图形横坐标从哪里来的?
根据最后几行的命令(第121-127行 line power16 power100 power500 mean, sort ///等),画出图形横坐标(4.9,5.1),这横坐标是从什么地方来的?
根据第94行的提示: * 设定50个可能的母体期望值 4.76(0.01)5.25,这个数值范围怎么在图形上体现?
3. 怎么理解这个图形?
(1)第117行 powerfcn power16, obs(16),观测值16是对程序中哪一个设定?是89行的obs(integer 10)还是95行的set obs 50?
(2)从图形上看:怎么看出这3条曲线观测值的差异?毕竟16个观测值和500个观测值差别很大,在X轴上描绘的点的密集程度差别很大怎么在图上看出来?
4. 两条命令是否重复多余?
第92行 local lb = `mean' + `z_a'*`se' /*lower bound*/
和第106行 gen `zlow' = (`lb' - mean)/`se'
这两条命令就是一个简单的算术变换,即 `zlow' = `z_a' ,为何还要加106行命令,这不多此一举吗?而且,第108行
gen `beta' = normal(`zup') - normal(`zlow')
可以直接改为
gen `beta' = normal( -`z_a' ) - normal(`z_a' )
这样岂不更简单?
谢谢连老师!