Stata: масштабная переменная x отстает от переменной y - PullRequest
0 голосов
/ 13 февраля 2020

Я пытаюсь масштабировать одну переменную с помощью другой отстающей переменной.

(IB), масштабируемой по суммированным суммарным активам (AT) = ROA

Я попробовал эти два метода ниже от здесь .

xtset companyid fyear, year
gen at1 = l.at
gen roa=ib/at1

и

xtset gvkey year
gen roa=(ib)/(at[_n-1])

Первый вернулся со всеми нулями для 1.ta

Второй кажется генерировать значения в предыдущей записи, даже если это другая компания. Я думаю, что это правда, потому что только в первом ряду отсутствует значение. Я бы предположил, что должно быть пропущенное значение для первого года каждой компании.

Кроме того, я попробовал этот код ниже, но он сказал неверный синтаксис.

xtset gvkey year
foreach gvkey { 
gen roa = (ib)/(at[_n-1]) }

Я использую compustat, так что это похоже на ниже:

  gvkey|Year |Ticker  | at   | ib   |
-------|-----|--------|------|------|
 001111| 2006| abc    |1000  |50    |
 001111| 2007| abc    |1100  |60    |
 001111| 2008| abc    |1200  |70    |
 001111| 2009| abc    |1300  |80    |
 001112| 2008| www    |28777 |1300  |
 001112| 2009| www    |26123 |870   |
 001113| 2009| ttt    |550   |-1000 |
 001114| 2010| vvv    |551   |-990  |

1 Ответ

1 голос
/ 13 февраля 2020

Это трудно понять. 1.ta может или не может быть опечаткой для L.at.

Является ли gvkey строкой? В теге Stata есть очень подробный совет о том, как приводить примеры данных Stata, которые вы не выполняете.

В принципе, ваш первый подход верен, поэтому трудно понять, что пошло не так, за исключением того, что

  1. Второй кажется generate значения в предыдущей записи, даже если это другая компания.

Это совершенно верно. Предыдущее наблюдение является предыдущим наблюдением, и ничто в этой команде не ссылается и не ссылается на структуру панели или информацию xtset или tsset.

Ваше foreach утверждение - просто дикая догадка и не имеет ничего общего с любой формой, поддерживаемой foreach. foreach здесь вообще не нужен: оператор задержки подразумевает автоматическую работу внутри панелей.

Я сделал это, что может помочь.

clear 
input str6 gvkey Year  str3 Ticker   at    ib   
 001111 2006 abc    1000  50    
 001111 2007 abc    1100  60    
 001111 2008 abc    1200  70    
 001111 2009 abc    1300  80    
 001112 2008 www    28777 1300  
 001112 2009 www    26123 870   
 001113 2009 ttt    550   -1000 
 001114 2010 vvv    551   -990  
end 

egen id = group(gvkey), label 
xtset id Year 

gen wanted = at/L.ib 

list, sepby(gvkey) 

     +------------------------------------------------------------+
     |  gvkey   Year   Ticker      at      ib       id     wanted |
     |------------------------------------------------------------|
  1. | 001111   2006      abc    1000      50   001111          . |
  2. | 001111   2007      abc    1100      60   001111         22 |
  3. | 001111   2008      abc    1200      70   001111         20 |
  4. | 001111   2009      abc    1300      80   001111   18.57143 |
     |------------------------------------------------------------|
  5. | 001112   2008      www   28777    1300   001112          . |
  6. | 001112   2009      www   26123     870   001112   20.09462 |
     |------------------------------------------------------------|
  7. | 001113   2009      ttt     550   -1000   001113          . |
     |------------------------------------------------------------|
  8. | 001114   2010      vvv     551    -990   001114          . |
     +------------------------------------------------------------+
...