Ch 2.
Time data
P_data2_1.dta
1. Generate time data
• by company, sort: gen year=1929+_n
• by company, sort: gen quarter=yq(1929, 4)+_n
• format quarter %tq
1. Generate time data
• by company, sort: gen month=ym(1929, 12)+_n
• format month %tm
• by company, sort: gen day=mdy(12,31,1929)+_n
• format day %td
1. Generate time data
• 시간 갭이 있는 시간변수 생성
• by company, sort: gen year2=1920+10*_n
1. Generate time data: tsmktim
• findit tsmktim
>>> 시간 갭이 있는 시간변수는 만들 수 X
• tsmktim year1, start(1930) i(company)
>>> Company 별로 1930~1939년 연도변수를 생성
1. Generate time data: tsmktim
• tsmktim quarter1, start(1930q1) i(company)
1. Generate time data: tsmktim
• tsmktim month1, start(1930m1) i(company)
1. Generate time data: tsmktim
• tsmktim day1, start(01jan1930) i(company)
P_data2_2.dta
2. Frequency
• From daily data to Monthly data
• gen dm=mofd(date)
• format dm %tm
• list data dm in 15/25
2. Frequency
• From daily data to quarterly data: qofd( )
• From daily data to yearly data: yofd( )
2. Frequency
• From monthly data to daily data
• gen day1=dofm( )
2. Frequency
• From monthly data to daily data
• gen day1=dofm(dm)
• format day1 %td
• list date dm day1 in 15/24
2. Frequency
• From quarterly data to daily data: dofq( )
• From yearly data to daily data: dofy( )
2. Frequency
• From monthly data to quarterly data
• gen mq=qofd(dofm(dm))
• format mq %tq
• list dm mq in 56/64
2. Frequency
• From daily data to monthly data
• gen dm1=mofd(date)
• format dm1 %td
• collapse (mean) dowclose, by(dm1)
P_data2_3.dta
2. Frequency
• From monthly data to quarterly data
• gen m_q=qofd(dofm(month))
• format m_q %tq
• collapse (sum) invest mvalue kstock, by(company m_q)
2. Frequency
• From monthly data to quarterly data
• gen m_q=qofd(dofm(month))
2. Frequency
• From monthly data to quarterly data
• gen m_q=qofd(dofm(month))
• format m_q %tq
2. Frequency
• From monthly data to quarterly data
• gen m_q=qofd(dofm(month))
• format m_q %tq
• collapse (sum) invest mvalue kstock, by(company m_q)
P_data2_4.dta
2. Frequency
• Generate day, month, year data
• gen date1=dofm(dm)
• format date1 %td
2. Frequency
• gen year1=year(date1)
• gen month1=month(date1)
• gen week1=week(date1)
• gen day1=day(date1)
2. Frequency
• gen jan_dum=(month1==1)
2. Frequency
• gen jan_dum1=(month(dofm(dm))==1)
• compare jan_dum jan_dum1
2. Frequency
• Combine day, month, year data
• gen date2=mdy(month1, day1, year1)
• format date2 %td
2. Frequency
• 요일 변수: day of week
>>>> 0: 일요일, 1: 월요일,….6: 토요일
• gen week_d=dow(date1)
3. egen
• ssc install egenmore, replace
P_data2_2.dta
3. egen: bom()
• Beginning of month
• egen bom1=bom(1, 1953)
• format bom1 %td
3. egen: bom()
• egen bom2=bom(2, 1953), work format(%td)
• Work
-지정한 연도와 월의 첫째 날이 휴일이면 그 다음날을
변수로 만드는 기능
3. egen: bomd()
• egen bom3=bomd(date), format(%td)
• 일별주기 시간변수를 이용하여 해당 월의 첫
째 날을 변수로 만드는 함수
• (date: 일별주기 시간변수)
3. egen: bomd()
• gen ela_bom=date-bom3
• list date ela_bom in 17/27
• 며칠이 지났는지
3. egen: eom()
• 지정한 연도와 월의 마지막 날짜를 변수로 생성
• egen eom1= eom(1, 1953), format(%td)
3. egen: eomd()
• 지정된 일변주기 변수의 해당 연도와 월의 마지
막 날을 변수로 지정
• egen eom2= eomd(date), format(%td)
3. egen: dayofyear()
• 일별주기 변수를 그 해의 1월 1일을 기준으로 경
과기간 변수 생성
• egen day1= dayofyear(date)
3. egen: dayofyear()
• egen day2= dayofyear(date), month(3)
• list date day1 day2 in 36/42
• month(3) option
-3월 1일부터 며칠이 지났는지 계산
P_data2_5.dta
3. egen: max()
• 최대값 변수 생성
• egen maxtodate= record(invest), by(company) order(time)
• by company, sort: egen max1=max(invest)
• list company time invest maxtodate max1 in 1/12
3. egen: min()
• 최소값 변수 생성
• egen mintodate= record(invest), by(company) order(time) min
• by company, sort: egen min1=min(invest)
3. egen: min()
• egen mintodate1= record(invest), by(company) order(time)
• by company, sort: egen min11=min(invest)
• list company time invest mintodate1 min11 in 1/12
P_data2_6.dta
4. Time operator
• lag: 과거값
• lead: 미래값
• difference: 차분
4. Time operator: lag
• tsset hhid year
• gen total_income1=L.total_income
• by hhid, sort: gen total_income11=total_income[_n-1]
4. Time operator: lag
• tsset hhid year
• gen total_income2=L2.total_income
• by hhid, sort: gen total_income22=total_income[_n-2]
4. Time operator: lead
• tsset hhid year
• gen total_income3=F.total_income
• by hhid, sort: gen total_income33=total_income[_n+1]
4. Time operator: lead
• reg house_price i.hsex hage i.hedu L.total_income F.total_income
4. Time operator: lead
• reg house_price i.hsex hage i.hedu L.total_income F.total_income
• reg house_price i.hsex hage i.hedu L(1/3).total_income
F.total_income
• reg house_price i.hsex hage i.hedu L(-3/3).total_income
F.total_income
4. Time operator: lead
• reg house_price i.hsex hage i.hedu L(1/3).(total_income debt)
4. Time operator: lead
• gen total_income4=L(1/3).total_income › › › › › › error
4. Time operator: lead
• xtreg house_price i.hsex hage i.hedu L.total_income
F.total_income, re
• xtreg house_price i.hsex hage i.hedu L.total_income
F.total_income, fe
P_data2_7.dta
4. Time operator: lag
• tsset hhid year
• gen fin_asset1=L.fin_asset
• by hhid, sort: gen fin_asset11= fin_asset[_n-1]
4. Time operator: lag
• tsset hhid year
• gen fin_asset2=F.fin_asset
• by hhid, sort: gen fin_asset22= fin_asset[_n+1]
4. Time operator: lag
• list 변수…… if hhid==12
P_data2_8.dta
4. Time operator: 시간 갭 존재
• tsset date
• gen dowclose11=L.dowclose
>>>>>>>>???
4. Time operator: 시간 갭 존재
• tsset date
• gen time1=_n
• tsset time1
• gen dowclose1=L.dowclose
P_data2_9.dta
4. Time operator: difference
• tsset company quarter
• gen dinvest=D.invest
• by company, sort: gen dinvst1=invest-invset[_n-1]
4. Time operator: difference
• gen d2invest=D2.invest
4. Time operator: seasonal difference
• gen sinvest=S.invest
• gen s2invest=S2.invest
4. Time operator: diff&lag 동시에
• gen stock1=LD.stock
• gen stock2=DL.stock