plm - отраслевые + годовые фиксированные эффекты с данными за год фирмы

У меня вопрос: как мне включить фиксированные эффекты отрасли и года в plm, если у меня несколько фирм в одной отрасли в одном и том же году? Повторение моих данных выглядит так:

Year    Industry    CompanyID   CEOID   CEO.background  MBA.CEO CEO.Tenure  Female.CEO  CEO.age Capex       Log.TA      Leverage
2005    6           1075        10739   0               0       6.92        0           55      0.08623238  9.199961396 0.330732917
2006    6           1075        10739   0               0       7.92        0           56      0.097455145 9.334559982 0.26575725
2007    6           1075        10739   0               0       8.92        0           56      0.113033772 9.346263914 0.285439531
2008    6           1075        10739   0               0       9.92        0           57      0.108640177 9.327564318 0.322985772
2009    6           1075        5835    0               0       0.67        0           54      0.08526524  9.360491034 0.333880116
2010    6           1075        5835    0               0       1.67        0           55      0.081452292 9.376545673 0.32197511
2005    6           1743        8379    0               0       17.43       0           65      0.236487293 6.693007633 0.021915227
2006    6           1743        26012   0               1       0.91        0           59      0.319264835 6.820455133 0.023157959
2007    6           1743        26012   0               1       1.91        0           58      0.207384938 6.844512984 0.020087012
2008    6           1743        26012   0               1       2.92        0           59      0.130632264 6.890964093 0.017103795
2009    6           1743        26012   0               1       3.92        0           60      0.112029325 6.879662342 0.017283796
2010    6           1743        30801   0               0       1           1           47      0.02804693  6.767971236 0.044755539
2005    7           1004        9249    0               0       9.65        0           53      0.076370794 6.596094672 0.31534354
2006    7           1004        9249    0               0       10.65       0           54      0.114891589 6.886346743 0.327808308
2007    7           1004        9249    0               0       11.65       0           55      0.097727719 6.973199328 0.307086799
2008    7           1004        9249    0               0       12.65       0           56      0.112119583 7.216716829 0.389800369
2009    7           1004        9249    0               0       13.65       0           57      0.086281135 7.228033526 0.331455792
2010    7           1004        9249    0               0       14.65       0           58      0.298922358 7.313914813 0.291147083

CEO.background, MBA.CEO и Female.CEO - это не зависящие от времени фиктивные переменные для каждого генерального директора и не зависящие от времени фиктивные переменные для фирмы, в то время как остальные - это изменяющиеся во времени атрибуты фирмы / генерального директора.

Я хотел бы запустить следующие фиксированные эффекты для кода регрессии по отрасли / году:

plm(Capex ~ CEO.background + MBA.CEO + CEO.Tenure + Female.CEO + CEO.age + Log.TA + Leverage, data=repexcapex, index = (c("Industry", "Year")), model = "within", effect = "twoways")

Однако, если у меня есть несколько компаний в той же отрасли, что и приведенные выше данные (идентификатор компании 1075/1743, обе в отрасли 6), код выдает ошибку о дубликатах.

Error in pdim.default(index[[1]], index[[2]]) : 
  duplicate couples (id-time)
In addition: Warning messages:
1: In pdata.frame(data, index) :
  duplicate couples (id-time) in resulting pdata.frame
[...]

Если я убью первые 5 строк и запустил его только с одной фирмой в отрасли, код заработает.

Как мне сформулировать регрессию, чтобы можно было включить фиксированные эффекты как для отрасли, так и для года? Выполняет код с промышленными манекенами, как показано ниже, эквивалентными отраслевым фиксированным эффектам:

plm(Capex ~ CEO.background + MBA.CEO + CEO.Tenure + Female.CEO + CEO.age + Log.TA + Leverage + factor(Industries), data=repexcapex, index = (c("Year")), model = "within", effect = "individual")

это отформатированные данные:

repexcapex <- read.table(text="
Year,Industry,CompanyID,CEOID,CEO.background,MBA.CEO,CEO.Tenure,Female.CEO,CEO.age,Capex,Log.TA,Leverage
2005,6,1075,10739,0,0,6.92,0,55,0.08623238,9.199961396,0.330732917
2006,6,1075,10739,0,0,7.92,0,56,0.097455145,9.334559982,0.26575725
2007,6,1075,10739,0,0,8.92,0,56,0.113033772,9.346263914,0.285439531
2008,6,1075,10739,0,0,9.92,0,57,0.108640177,9.327564318,0.322985772
2009,6,1075,5835,0,0,0.67,0,54,0.08526524,9.360491034,0.333880116
2010,6,1075,5835,0,0,1.67,0,55,0.081452292,9.376545673,0.32197511
2005,6,1743,8379,0,0,17.43,0,65,0.236487293,6.693007633,0.021915227
2006,6,1743,26012,0,1,0.91,0,59,0.319264835,6.820455133,0.023157959
2007,6,1743,26012,0,1,1.91,0,58,0.207384938,6.844512984,0.020087012
2008,6,1743,26012,0,1,2.92,0,59,0.130632264,6.890964093,0.017103795
2009,6,1743,26012,0,1,3.92,0,60,0.112029325,6.879662342,0.017283796
2010,6,1743,30801,0,0,1,1,47,0.02804693,6.767971236,0.044755539
2005,7,1004,9249,0,0,9.65,0,53,0.076370794,6.596094672,0.31534354
2006,7,1004,9249,0,0,10.65,0,54,0.114891589,6.886346743,0.327808308
2007,7,1004,9249,0,0,11.65,0,55,0.097727719,6.973199328,0.307086799
2008,7,1004,9249,0,0,12.65,0,56,0.112119583,7.216716829,0.389800369
2009,7,1004,9249,0,0,13.65,0,57,0.086281135,7.228033526,0.331455792
2010,7,1004,9249,0,0,14.65,0,58,0.298922358,7.313914813,0.291147083",
sep=",",header=TRUE)

person PSL    schedule 27.04.2020    source источник
comment
Привет, добро пожаловать на переполнение стека. Подумайте о том, как создать воспроизводимый пример, особенно с совместным использованием небольшого набора данных, достаточного для воспроизведения проблемы.   -  person Mark Neal    schedule 27.04.2020
comment
Привет, Марк, спасибо за комментарий! Я уже включил репекс задачи. Сообщите мне, если это форматирование данных не работает.   -  person PSL    schedule 27.04.2020
comment
Похоже, пакет plm немного изменился. Поэтому, если вы хотите его использовать, я бы порекомендовал этот документ . и это, если вы хотите оценить вашу модель без пакета plm. Я все же рекомендовал бы изучить пакет plm, но должен признать, что я сам немного ржавел,   -  person DJJ    schedule 27.04.2020
comment
Статистический совет: для того, чтобы указать возраст генерального директора и срок пребывания в должности в одной и той же регрессии внутренней модели, вы можете рассмотреть пример 2 в ?plm::detect.lindep, где предполагается, что генеральный директор остается в фирме все время.   -  person Helix123    schedule 28.04.2020
comment
@DJJ DJJ: Спасибо, документы, я прочитаю их и посмотрю, смогу ли я понять, как сделать это лучше на их основе.   -  person PSL    schedule 28.04.2020
comment
@ Helix123: Думаю, я понимаю вашу точку зрения. Некоторые генеральные директора в моей выборке меняют фирмы, поэтому переменные не всегда на 100% линейно зависимы. Как вы думаете, я все еще нахожусь в ловушке фиктивной переменной?   -  person PSL    schedule 28.04.2020


Ответы (1)


Поскольку ваша зависимая переменная Capex кажется мерой, зависящей от компании, вероятно, единицей наблюдения (= тем, что plm называется индивидуальным измерением) является компания (переменная CompanyID), которая должна быть указана в аргументе index.

Таким образом, базовую двухстороннюю модель можно оценить следующим образом:

plm(Capex ~ CEO.background + MBA.CEO + CEO.Tenure + Female.CEO + CEO.age + Log.TA + Leverage, data=repexcapex, index = (c("CompanyID", "Year")), model = "within", effect = "twoways")

Чтобы добавить отраслевые фиксированные эффекты, включите в формулу +factor(Industry). Вероятно, эта переменная выпадет из оценки, поскольку она коррелирует с другими фиксированными эффектами (это для предоставленных вами небольших выборочных данных).

person Helix123    schedule 27.04.2020
comment
Спасибо за ваш ответ! Вы правы, все мои зависимые переменные находятся на уровне фирмы, и я пытаюсь установить влияние независимой переменной на уровне генерального директора. Если я использую двухходовой эффект с формулой, которую вы мне предоставили, я понимаю, что у меня есть и год, и ИП компании. Однако, поскольку я хотел бы иметь только отрасль, а не компанию FE, должен ли я вместо этого использовать эффект = время? Причина этого в том, что я копирую более ранние исследования. Наконец, как мне сгруппировать стандартные ошибки на уровне фирмы? Спасибо за помощь, вы действительно мне здесь помогаете. - person PSL; 28.04.2020