在 Stata 中按组标准化变量
Standardize a variable by group in Stata
我需要生成一个新变量,它是另一个变量的标准化值,但按组(按年份的 SAT 分数)。我使用以下代码计算它:
egen mean_sat = mean(sat), by(year)
egen sd_sat = sd(sat), by(year)
gen std_dat = (sat - mean_sat) / sd_sat
还有其他更直接的方法吗?我尝试了以下但没有成功...
. by year, sort : egen float std_SAT = std(sat)
egen ... std() may not be combined with by
r(190);
. egen std_SAT = std(sat), by(year)
egen ... std() may not be combined with by
目前官方写的egen
函数std()
不支持操作by
。我无法确定其中的统计或计算原因,但有据可查。 (为什么你需要运气才能通过我不明白的记录限制。)
原则上,任何用户都可以编写自己的 egen
函数来支持您希望在一行调用中实现的功能。实际上,考虑到您使用的简单解决方法,似乎没有人愿意编写它。实际上,当有人对重复输入三行代码的需要感到恼火时,就会写下这些东西。您引用的代码有用的一个更积极的原因是,从统计学上讲,您通常应该以任何方式跟踪均值和标准差。
编辑 2020 年 7 月 20 日
更新到 Stata 16.1
update 30jun2020
egen
has the following updates:
c. egen
function std()
now allows by
varlist:
. When used with by
varlist:
, values are standardized within
each group defined by varlist. The option specifying a value for the standard deviation has been renamed
sd()
(the old option name std()
continues to work as well).
Stata 没有,但您可以很容易地自己做。方法如下:
1- 提示您不能按组 "standardize",但可以按组取均值和标准差。因此,(a) 按组取均值,(b) 按组取标准差,最后 (c) standardized_variable= (the_var-mean_of_the_var)/std_of_the_var
2- 示例:所以,让我们用 "company" 标准化变量 "sales"。以下是代码的工作原理:
egen company_group = group(company)
sort company_group
by company_group: egen sales_mean= mean(sales)
by company_group: egen sales_sd = sd(sales)
by company_group: gen sales_std = (sales-sales_mean)/sales_sd
我需要生成一个新变量,它是另一个变量的标准化值,但按组(按年份的 SAT 分数)。我使用以下代码计算它:
egen mean_sat = mean(sat), by(year)
egen sd_sat = sd(sat), by(year)
gen std_dat = (sat - mean_sat) / sd_sat
还有其他更直接的方法吗?我尝试了以下但没有成功...
. by year, sort : egen float std_SAT = std(sat)
egen ... std() may not be combined with by
r(190);
. egen std_SAT = std(sat), by(year)
egen ... std() may not be combined with by
目前官方写的egen
函数std()
不支持操作by
。我无法确定其中的统计或计算原因,但有据可查。 (为什么你需要运气才能通过我不明白的记录限制。)
原则上,任何用户都可以编写自己的 egen
函数来支持您希望在一行调用中实现的功能。实际上,考虑到您使用的简单解决方法,似乎没有人愿意编写它。实际上,当有人对重复输入三行代码的需要感到恼火时,就会写下这些东西。您引用的代码有用的一个更积极的原因是,从统计学上讲,您通常应该以任何方式跟踪均值和标准差。
编辑 2020 年 7 月 20 日
更新到 Stata 16.1
update 30jun2020
egen
has the following updates:c.
egen
functionstd()
now allowsby
varlist:
. When used withby
varlist:
, values are standardized within each group defined by varlist. The option specifying a value for the standard deviation has been renamedsd()
(the old option namestd()
continues to work as well).
Stata 没有,但您可以很容易地自己做。方法如下:
1- 提示您不能按组 "standardize",但可以按组取均值和标准差。因此,(a) 按组取均值,(b) 按组取标准差,最后 (c) standardized_variable= (the_var-mean_of_the_var)/std_of_the_var
2- 示例:所以,让我们用 "company" 标准化变量 "sales"。以下是代码的工作原理:
egen company_group = group(company)
sort company_group
by company_group: egen sales_mean= mean(sales)
by company_group: egen sales_sd = sd(sales)
by company_group: gen sales_std = (sales-sales_mean)/sales_sd