财新传媒 财新传媒

阅读:0
听报道
对于初次接触统计软件的朋友来说,对于时间变量的处理,往往会有些不知所措。原因在于,统计软件,对时间变量的处理,与EXCEL并不一致,因此用惯了EXCEL的朋友,需要专门适应一下统计软件的处理方法。下面我们以Stata为例简析一下。
比如说,我们现在拿到了一个CPI同比的月度数据,如上图EXCEL表所示。用EXCEL可以很方便的做图等,但是我们现在把数据导入Stata之后,会发现时间列是红色,也就是说,在Stata看来,这列数据是文本格式,那么对时间作图等等,都是失败的。Stata会报错如下。
 
 
因此我们如果要在Stata中处理时间变量,第一件事就是要把文本格式的时间,转换成Stata可以识别的格式。转换的命令叫做date,其格式是:
 
date(s1,s2),其中s1是文本格式的时间变量,s2是文本格式时间的年月日的排列次序
 
比如说,例子中的1987-01,就是YM,如果是1987-01-01,那就是YMD。如果把1987-01-01缩写成87-01-01,那就用19YMD,在年份前面加上19。
 
 
可以看到,新生成的时间变量timen,是一串整数,这是什么意思呢?第一,date这个命令识别的文本格式,是日度格式,如果原始数据是月份,比如1987-01,那么Stata会自动补充上日,默认为每个月的1号,即1987-01-01;第二,1987-01-01对应的9862,是指距离1960年1月1日的天数。
 
显然,这么一串数字,是不符合我们的阅读习惯的,我们需要把数字转换成我们易读的格式,那就要用的format命令,其格式是:
 
 
那么我们就看到,数字格式的时间,就转化成我们易读的格式,此时再作图,就没问题了。
 
运行:line cpi timen
 
如果我们并不需要日度时间,我们需要把日度时间,转换成月度时间,怎么操作呢?
如果直接使用format timen %tm,会有什么结果呢?我们来看看,显然是行不通的。2781m11,是把9862,转换成了距离1960年1月有9862个月的月份,那就成了2781年1月,显然不对。
 
此时我们需要日度时间,转换成月度时间,使用的命令是mofd,格式如下:
 
 
此时,324的意思,是1987-01-01所在的月份,距离1960年1月的月数,我们再转换成易读的月份格式。
 
 
我们再做个图看看,从下图可以看到,日期格式已经变成了月度。
我们最后总结一下,Stata中时间变量的处理。我们将EXCEL中的日期导入Stata之后,在Stata眼中,这是一个字符串,不会被识别。因此,第一步,我们要用date命令,将字符串形式的日期(日度数据),转换成Stata可以识别的日期,这是一串数字,是距离1960年1月1日的天数;第二步,这串数字,我们是不容易理解的,所以要用format命令,把这串数字转换成我们能看懂的日期;第三步,如果我们需要是月度、季度等日期,就用mofd、qofd命令,把距离1960年1月1日的天数,转换成距离1960年1月的月数或者季度数,再用format命令。
 
以上就是Stata中时间变量的处理的简单分析。
话题:



0

推荐

万钊

万钊

337篇文章 5天前更新

经济学博士

文章