Stata 如何正确使用egen均值函数计算时间序列的平均差?

Stata 如何正确使用egen均值函数计算时间序列的平均差?,stata,data-manipulation,Stata,Data Manipulation,我有以下格式的面板数据: |交易|城市| id |周| tr | cw| ,其中tr_cw是为每个城市每周计算的一些度量 我试图使用egen计算每个城市指标的平均增长: egen tag_cw = tag(city_id week) sort tag_cw city_id week by tag_cw city_id: egen tr_speed = mean(tr_cw[_n]-(tr_cw[_n-1])) if tag_cw 但是,结果不同于更复杂的计算(数值上看起来更有效): 我在使用e

我有以下格式的面板数据: |交易|城市| id |周| tr | cw| ,其中tr_cw是为每个城市每周计算的一些度量

我试图使用egen计算每个城市指标的平均增长:

egen tag_cw = tag(city_id week)
sort tag_cw city_id week
by tag_cw city_id: egen tr_speed = mean(tr_cw[_n]-(tr_cw[_n-1])) if tag_cw
但是,结果不同于更复杂的计算(数值上看起来更有效):


我在使用egen时遗漏了什么?是否有一个很好的教程来了解正确的用法?

对于
egen
的帮助非常明确:

“显式订阅(使用
\N
\N
)通常与
生成
一起使用,不应与
egen
一起使用。”

原因是,
egen
经常临时更改排序顺序以执行它所做的操作,因此下标不一定表示您所想的内容

因此,您需要先创建自己的增长变量,然后使用
egen

将您的问题简化为每个城市和每周的一笔交易,并假设每个小组内没有时间间隔,也没有遗漏,这就足够了:

bysort city_id (week) : gen tr_diff = tr_cw - tr_cw[_n-1] 
by city_id: egen tr_speed = mean(tr_diff) 
egen tag = tag(city_id) 
l city tr_speed if tag 

对于多个事务,您需要将其复杂化。你不清楚如何将它们结合起来

egen的帮助非常明确:

“显式订阅(使用
\N
\N
)通常与
生成
一起使用,不应与
egen
一起使用。”

原因是,
egen
经常临时更改排序顺序以执行它所做的操作,因此下标不一定表示您所想的内容

因此,您需要先创建自己的增长变量,然后使用
egen

将您的问题简化为每个城市和每周的一笔交易,并假设每个小组内没有时间间隔,也没有遗漏,这就足够了:

bysort city_id (week) : gen tr_diff = tr_cw - tr_cw[_n-1] 
by city_id: egen tr_speed = mean(tr_diff) 
egen tag = tag(city_id) 
l city tr_speed if tag 

对于多个事务,您需要将其复杂化。你不清楚如何将它们结合起来

尼克的回答应该能满足你的需要

回答您的后续问题


为什么在“bysort city_id(week)”的括号中有week

手册中对
bysort

引用手册

它验证数据是否按varlist1 varlist2排序,然后执行“按”,就好像只指定了varlist1一样


尼克的回答应该能满足你的需要

回答您的后续问题


为什么在“bysort city_id(week)”的括号中有week

手册中对
bysort

引用手册

它验证数据是否按varlist1 varlist2排序,然后执行“按”,就好像只指定了varlist1一样


为什么周在“bysort city_id(week)”的括号中?PS您的解决方案假设city week唯一地标识观察结果,每个城市每周都有许多事务,这就是我在egenbtw中使用“if tag”的原因,如果编译器警告所有使用eGen的人您是正确的,我忽略了您的
transaction\u id
变量,那就太好了。我已经编辑了我的答案,使之明确。您可能需要先对数据进行
折叠
,以便每个城市和每周都有独特的观察结果。注意,没有Stata编译器;这是解释代码。Stata的回答是,如果用户阅读帮助,那就太好了。Pablo关于Stata陷阱的观点这无疑是一个有趣的问题
egen
调用
\n
和/或
\n
的请求目前属于法律语法的范畴,但这是一个坏主意,该公司的目的是在帮助中警告您,而不是添加额外的代码来捕获它。为什么week在“bysort city\u id(week)”的括号中?PS您的解决方案假设city week唯一地标识观察结果,每个城市每周都有许多事务,这就是为什么我在egenbtw中使用“if tag”,如果编译器警告所有与Egen一起使用的人您是正确的,我忽略了您的
事务id
变量,那就太好了。我已经编辑了我的答案,使之明确。您可能需要先对数据进行
折叠
,以便每个城市和每周都有独特的观察结果。注意,没有Stata编译器;这是解释代码。Stata的回答是,如果用户阅读帮助,那就太好了。Pablo关于Stata陷阱的观点这无疑是一个有趣的问题
egen
调用
\n
和/或
\n
的请求目前属于法律语法的范畴,但这是一个坏主意,该公司的目的是在帮助中警告您,而不是添加额外的代码。