全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
463 2
2023-04-06
有一份数据,其中五个变量是关于同一个问题(如:子女1-子女5对受访者的经济支持)所得到的定序数据,取值区间在[1,9],如果我想计算对于同一个受访者而言,这var1-var5的取值的每个类别的累积百分比,可能的取值情况有(1,1,1,1,1),(1,2,3,4,5),(2,3,4,.,.)等等(考虑有部分缺失值的情况),并想代入下式进行计算:
\[l^{2}=\frac{\sum_{i=1}^{k}\left ( F_{i}-0.5\right )^{2}}{\left ( k-1 \right )/4}\]
其中Fi即是每个类别的累积百分比,k为取值类别数。
应该如何在stata中实现?主要的困难在于,需要针对每一个id计算多个累积百分比的值并将其存储为新变量进行后续计算?

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2023-4-6 18:12:03
你需要创建一个新变量,用于存储每个id的累积百分比值。假设你将该变量命名为"cum_percent",可以使用以下命令创建:
gen cum_percent = .
然后,你可以使用以下命令计算每个id的每个变量的累积百分比值:
by id: egen cum_percent_var1 = pctile(var1), p(1/9)
by id: egen cum_percent_var2 = pctile(var2), p(1/9)
by id: egen cum_percent_var3 = pctile(var3), p(1/9)
by id: egen cum_percent_var4 = pctile(var4), p(1/9)
by id: egen cum_percent_var5 = pctile(var5), p(1/9)

这将计算出每个id的每个变量的每个取值的累积百分比值,并将其存储在以"cum_percent"开头的新变量中(例如"cum_percent_var1"表示变量var1的累积百分比值)。

最后,你可以使用以下命令计算每个类别的累积百分比值:
egen cum_percent_1_1_1_1_1 = rowtotal(cum_percent_var1==1 & cum_percent_var2==1 & cum_percent_var3==1 & cum_percent_var4==1 & cum_percent_var5==1)
egen cum_percent_1_2_3_4_5 = rowtotal(cum_percent_var1==1 & cum_percent_var2==2 & cum_percent_var3==3 & cum_percent_var4==4 & cum_percent_var5==5)
egen cum_percent_2_3_4 = rowtotal(cum_percent_var1==2 & cum_percent_var2==3 & cum_percent_var3==4 & missing(cum_percent_var4, cum_percent_var5))

其中,"cum_percent_1_1_1_1_1"表示取值为(1,1,1,1,1)的累积百分比值,"cum_percent_1_2_3_4_5"表示取值为(1,2,3,4,5)的累积百分比值,"cum_percent_2_3_4"表示取值为(2,3,4,.,.)的累积百分比值。

这些命令将计算出每个类别的累积百分比值,并将其存储在以"cum_percent_"开头的新变量中。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2023-4-15 11:23:52
近期碰到类似问题,尝试给出一些看法:
楼主的问题,是“横向数据如何按照ID分类并且加总”,同时希望生成一个新变量来储存加总后的数据。
因为没有给出数据集的结构,所以无法直接给出命令,但是建议可以从以下几个方向尝试:
1、选择适合的加总命令。你要了解命令的适用范围,从而选择满足自己需要的命令。比如,你要知道,count命令是用于计数,并不是对变量取值进行加总;rowtotal是按行对变量值进行加总,它可以和egen命令进行配合,生成一个新变量储存加总后的数据结果。
2、选择合适的变量来生成新变量储存加总后的数据。你需要细致检查如gen、egen命令的适用规则以及限制。比如,你的需求有一条是要按照ID进行分类加总,那么rowtotal和egen命令的配合可能有助于实现,但是逻辑前提是,你每一行的数据默认是以ID进行分类的。
3、如果可以,配合适当的循环语句,以简化重复劳动。如,使用foreach的变量名循环来实现目的。
希望能有帮助,欢迎交流!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群