如何在Stata中计算预测值落在TE 95%置信区间的占比?
问题解决:Stata计算预测值落在95%置信区间的占比
你的代码核心问题是错误使用了sum命令的语法:sum没有gen选项,直接写sum ... gen ...会导致Stata无法正确执行,生成的变量自然为空。另外r(Obs)是Stata返回的标量(单值),需要先正确存储再使用。以下是两种简便的解决方法:
方法一:用标量存储观测数后计算
// 获取总观测数并存为标量 sum `var'_prediction scalar totalobs = r(Obs) // 获取落在95%CI内的观测数(用inrange简化条件判断) sum `var'_prediction if inrange(`var'_prediction, `var'_TE - 1.96*`var'_se, `var'_TE + 1.96*`var'_se) scalar obsin95 = r(Obs) // 生成占比变量(所有行均为同一占比值) gen `var'percentinCI = obsin95 / totalobs
方法二:用哑变量直接计算比例(更直观)
通过生成标识是否在区间内的哑变量,利用mean命令直接得到比例(0-1变量的均值即为占比):
// 生成哑变量:1=在95%CI内,0=不在 gen `var'inCI = inrange(`var'_prediction, `var'_TE - 1.96*`var'_se, `var'_TE + 1.96*`var'_se) // 计算占比,结果会存在r(mean)中,同时生成变量 mean `var'inCI gen `var'percentinCI = r(mean)
如果不需要保留中间变量,可使用临时变量节省内存:
tempvar inCI gen `inCI' = inrange(`var'_prediction, `var'_TE - 1.96*`var'_se, `var'_TE + 1.96*`var'_se) mean `inCI' scalar percent_in_CI = r(mean) // 直接调用标量percent_in_CI即可,无需生成永久变量
内容的提问来源于stack exchange,提问作者ConfusedStudent
相关产品推荐
相关产品推荐

