根据另一个变量的中位数创建一个二元变量,按两个变量分组
Posted
技术标签:
【中文标题】根据另一个变量的中位数创建一个二元变量,按两个变量分组【英文标题】:Creating a binary variable based on the median of another variable, grouping by two variables 【发布时间】:2022-01-17 23:40:26 【问题描述】:在Stata中,我想根据另一个变量unemp
的中值创建一个二进制变量median_unemp
,将中值的计算按region
和year
分组。也就是说,median_unemp
在特定观察的失业率大于该地区和观察年份的失业率中位数时为 1(否则为 0)。
下面的代码会根据整个数据集生成我的变量,但我希望按子组计算中位数(通过region
和year
):
webuse productivity.dta, clear
summarize unemp, detail
gen median_response = r(p50)
gen median_unemp = (unemp>=median_response)
replace median_unemp =. if unemp==.
在仔细检查数据后,我想知道 unemp
for 我的数据集的观察 1(即在 region
=1 和 year
=1970 中)是否大于 median_unemp
的值(针对region
=1 和year
=1970 计算)等等。如果大于中位数,则median_unemp
==1。如果低于中位数,则median_unemp
==0。
【问题讨论】:
【参考方案1】:webuse productivity.dta, clear
egen median_unemp = median(unemp), by(region year)
gen high_unemp = (unemp >= median_unemp) if unemp < .
在此数据集中,unemp
没有缺失值,但分离缺失值是一种很好的做法。每个中位数是 9 个值中的第 5 个,因此留出平局 4 个值将小于中位数,5 个大于或等于中位数。
【讨论】:
以上是关于根据另一个变量的中位数创建一个二元变量,按两个变量分组的主要内容,如果未能解决你的问题,请参考以下文章
按一个变量排序,按另一个分组,然后在 R 中的 SQL Query 中选择第一行
如何在Likert量表上测量的自变量应该在二元逻辑回归中作为连续变量或序数变量来处理?