Stata 如何确定(复杂)面板图案?
我的问题与现有的关于Statalist-like的讨论密切相关。我想提出一个新问题,因为我想看看除了连续咒语的数量之外,更复杂的面板模式 比如说,给定一组公司,我想检查该公司在购买一些Stata 如何确定(复杂)面板图案?,stata,panel-data,Stata,Panel Data,我的问题与现有的关于Statalist-like的讨论密切相关。我想提出一个新问题,因为我想看看除了连续咒语的数量之外,更复杂的面板模式 比如说,给定一组公司,我想检查该公司在购买一些land>0之前有多少年没有不动产land==0 或者,更复杂地说,公司的财产低于某一水平土地
land>0
之前有多少年没有不动产land==0
或者,更复杂地说,公司的财产低于某一水平土地<0.05*land[s]
的年限,其中s
指公司购买房地产的年份
我的第一个想法是使用egen
命令。但与其他常见情况不同,每家公司购买房产的具体时间不同,甚至不存在
我的第二个想法是使用包
xtpatternvar
,稍加修改。然而,由于对Stata编程的了解有限,我不太理解它的源代码 让我们关注您真正的问题,这不是理解xtpatternvar
(SSC,正如您应该解释的那样),而是在面板数据中确定变量在满足互补条件之前满足每个面板中某个条件的时间。这并不容易,但重要的是,在这里提出问题时,除了特定的例子之外,还要概括。其他人可能不关心土地购买数据,但他们可能有同样的问题
这只是在FAQ讨论各种技术时所讨论问题的几个小转折。我就挑一个。整个FAQ可能值得研究。(进一步说明:请查看StataCorp网站上的常见问题。)
将他们可以直接使用的数据提供给回答问题的人也是一个好主意。在Statalist,人们被要求使用dataex
(SSC),这里没有理由降低标准。这与
每个面板中的第一次(此处为一年)是每个面板中时间变量的最小值。(在某些数据集中,您可能不需要计算它;您知道它总是一个特定的时间。)第一次满足某个条件也是一个最小值,但现在必须是有条件的。你想要的时间间隔就是它们之间的区别。注意,xtset
或tsset
数据的代码中没有假设;不假设等间距值或平衡面板;并且没有假设在每个面板的开头都有大量的互补值。请注意,对于您的“复杂”问题,解决方案是相同的
clear
input float(firm response year)
1 0 2001
1 0 2002
1 12 2003
1 345 2004
1 6789 2005
2 12 2001
2 345 2002
2 6789 2003
2 12 2004
2 34 2005
end
egen first = min(year), by(firm)
egen first_pos = min(cond(response > 0, year, .)), by(firm)
gen time_to_first_pos = first_pos - first
list
+-------------------------------------------------------------+
| firm time response year first_~s first time_t~s |
|-------------------------------------------------------------|
1. | 1 1 0 2001 2003 2001 2 |
2. | 1 2 0 2002 2003 2001 2 |
3. | 1 3 12 2003 2003 2001 2 |
4. | 1 4 345 2004 2003 2001 2 |
5. | 1 5 6789 2005 2003 2001 2 |
|-------------------------------------------------------------|
6. | 2 1 12 2001 2001 2001 0 |
7. | 2 2 345 2002 2001 2001 0 |
8. | 2 3 6789 2003 2001 2001 0 |
9. | 2 4 12 2004 2001 2001 0 |
10. | 2 5 34 2005 2001 2001 0 |
+-------------------------------------------------------------+