В настоящее время я анализирую набор панельных данных, который отслеживает бренды в разных странах с течением времени. В частности, меня интересует, как определенные переменные влияют на будущую долю рынка.
Используя функцию head(), мой набор данных выглядит следующим образом:
# A tibble: 20 x 10
Country Brand Date MS uuu vvv www xxx yyy zzz
<chr> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 BR AAA 2015Q1 13.0 46.4 66.7 23.8 9 23.7 613.
2 DE AAA 2015Q1 16.1 56.5 35.6 36.5 8 23.7 461.
3 ES AAA 2015Q1 15.4 40.9 40.9 27.6 9 23.7 548.
4 FR AAA 2015Q1 14.4 48.4 25.1 30.1 8 23.7 414.
5 IT AAA 2015Q1 15.0 33.2 33.2 35.2 9 23.7 650.
6 JP AAA 2015Q1 14.8 19.6 -5.81 31.5 9 23.7 735.
7 KO AAA 2015Q1 14.3 45.7 26.1 42.4 9 23.7 410.
8 UK AAA 2015Q1 17.6 40.6 12.7 25.9 9 23.7 660.
9 US AAA 2015Q1 3.82 -0.651 -0.651 23.2 11 23.7 429.
10 BR AAA 2015Q2 14.6 40.4 62.2 25.0 9 23.7 583.
11 DE AAA 2015Q2 16.9 52.0 30.6 35.3 9 23.7 539.
12 ES AAA 2015Q2 14.7 41.8 41.8 30.1 8 23.7 558.
13 FR AAA 2015Q2 15.2 51.7 29.1 30.2 9 23.7 445.
14 IT AAA 2015Q2 16.9 44.4 44.4 35.5 9 23.7 573.
15 JP AAA 2015Q2 16.2 20.3 -8.73 29.4 9 23.7 664.
16 KO AAA 2015Q2 16.0 49.1 31.6 40.2 9 23.7 408.
17 UK AAA 2015Q2 18.8 34.4 10.2 27.5 9 23.7 788.
18 US AAA 2015Q2 4.12 0.0770 0.0770 22.5 11 23.7 446.
19 BR AAA 2015Q3 13.4 43.5 65.6 26.6 9 23.7 624.
20 CN AAA 2015Q3 14.3 59.9 66.1 48.6 9 23.7 664.
Подобно некоторым примерам, которые я мог найти здесь или на других веб-сайтах, я попытался использовать пакет PLM в R для анализа данных с помощью регрессии вложенных случайных эффектов.
Я начал писать свой код следующим образом:
p_crosscountry2 <- pdata.frame(crosscountry2,index=c("Brand","Date","Country"))
что почти то же самое, что указано в этой угрозе: -using">оценить модель случайных эффектов повторных измерений с вложенной структурой, используя `plm()`
Однако есть одно принципиальное различие между примерами, которые я смог найти, и моим случаем:
Во всех примерах каждая единица самого низкого уровня связана только с одним более высоким уровнем (пример: каждый студент принадлежит только к одной школе), в то время как в моем случае единицы самого низкого уровня могут принадлежать нескольким более высоким уровням (несколько брендов представлены в нескольких странах). .
Когда я запускаю код dataframe, он показывает мне следующее сообщение об ошибке:
Warning message:
In pdata.frame(crosscountry2, index = c("Brand", "Date", :
duplicate couples (id-time) in resulting pdata.frame
to find out which, use e.g. table(index(your_pdataframe), useNA = "ifany")
Глядя в таблицу (используя предложенную функцию), структура данных выглядит нормально:
, , Country = BR
Date
Brand 2015Q1 2015Q2 2015Q3 2015Q4 2016Q1 2016Q2 2016Q3 2016Q4 2017Q1 2017Q2 2017Q3
AAA 1 1 1 1 1 1 1 1 1 1 1
BBB 0 0 0 0 0 0 0 0 0 0 0
CCC 1 1 1 1 1 1 1 1 1 1 1
DDD 0 0 0 0 0 0 0 0 0 0 0
EEE 0 0 0 0 0 0 0 0 0 0 0
FFF 0 0 0 0 0 0 0 0 0 0 0
GGG 0 0 0 0 0 0 0 0 0 0 0
HHH 1 1 1 1 1 1 1 1 1 1 1
III 1 1 1 1 1 1 1 1 1 1 1
JJJ 1 1 1 1 1 1 1 1 1 1 1
KKK 1 1 1 1 1 1 1 1 1 1 1
LLL 0 0 0 0 0 0 0 0 0 0 0
MMM 0 0 0 0 0 0 0 0 0 0 0
, , Country = CN
Date
Brand 2015Q1 2015Q2 2015Q3 2015Q4 2016Q1 2016Q2 2016Q3 2016Q4 2017Q1 2017Q2 2017Q3
AAA 0 0 1 1 1 1 1 1 1 1 0
BBB 0 0 1 1 1 1 1 1 1 1 0
CCC 0 0 0 0 0 0 0 0 0 0 0
DDD 0 0 0 0 0 0 0 0 0 0 0
EEE 0 0 1 1 1 1 1 1 1 1 0
FFF 0 0 0 0 0 0 0 0 0 0 0
GGG 0 0 1 1 1 1 1 1 1 1 0
HHH 0 0 1 1 1 1 1 1 1 1 0
С помощью функции head() таблица выглядит следующим образом:
Country Brand Date MS uuu vvv www xxx yyy zzz
BR-AAA-2015Q1 BR AAA 2015Q1 12.97 46.43449 66.66667 23.79714 9 23.7342 613.1986
BR-AAA-2015Q2 BR AAA 2015Q2 14.56 40.38156 62.16216 24.96264 9 23.7342 583.3325
BR-AAA-2015Q3 BR AAA 2015Q3 13.38 43.53741 65.64626 26.59215 9 23.7342 623.8418
BR-AAA-2015Q4 BR AAA 2015Q4 14.94 42.18077 67.14491 26.05669 9 23.7342 610.7607
BR-AAA-2016Q1 BR AAA 2016Q1 15.10 46.62681 68.57387 26.93074 9 26.6329 650.2189
BR-AAA-2016Q2 BR AAA 2016Q2 15.17 48.34142 71.68285 25.15683 9 26.6329 671.1437
BR-AAA-2016Q3 BR AAA 2016Q3 13.90 49.98002 71.39433 26.26867 9 26.6329 645.4896
BR-AAA-2016Q4 BR AAA 2016Q4 15.93 50.23791 71.45123 25.62308 9 26.6329 669.8751
BR-AAA-2017Q1 BR AAA 2017Q1 14.51 50.65138 72.48567 25.49358 9 31.3494 768.1376
BR-AAA-2017Q2 BR AAA 2017Q2 14.71 50.07792 73.29870 27.33325 9 31.3494 639.0572
BR-AAA-2017Q3 BR AAA 2017Q3 14.02 50.25853 72.64736 25.06274 9 31.3494 666.7235
BR-CCC-2015Q1 BR CCC 2015Q1 4.87 -47.35099 -24.83444 57.96842 7 4.7340 613.1986
BR-CCC-2015Q2 BR CCC 2015Q2 4.91 -60.50955 -41.71975 50.41528 8 4.7340 583.3325
BR-CCC-2015Q3 BR CCC 2015Q3 4.86 -56.59722 -39.58333 43.69692 6 4.7340 623.8418
BR-CCC-2015Q4 BR CCC 2015Q4 4.40 -57.38636 -40.62500 45.89061 7 4.7340 610.7607
BR-CCC-2016Q1 BR CCC 2016Q1 4.34 -46.82131 -27.83505 46.66406 6 4.8588 650.2189
BR-CCC-2016Q2 BR CCC 2016Q2 4.63 -45.86039 -27.02922 52.84351 8 4.8588 671.1437
BR-CCC-2016Q3 BR CCC 2016Q3 5.47 -52.37342 -32.27848 62.05175 6 4.8588 645.4896
BR-CCC-2016Q4 BR CCC 2016Q4 4.82 -43.54067 -24.40191 58.59462 7 4.8588 669.8751
BR-CCC-2017Q1 BR CCC 2017Q1 5.10 -42.12185 -22.26891 46.53642 8 4.9031 768.1376
У меня было бы два вопроса по этому поводу:
1) Есть ли другой способ правильно определить фрейм данных? Я также пробовал разные порядки одних и тех же столбцов, но всегда получал одно и то же сообщение об ошибке.
2) В качестве обходного пути я создал комбинированную переменную страны и бренда (например, AAA_BR, AAA_CN, CCC_BR и т. д.) и использовал ее вместо переменной бренда. Эта версия фактически позволила мне выполнить регрессию вложенных случайных эффектов. Считаете ли вы, что это осуществимый вариант, или у меня возникают проблемы, поскольку я не учитываю тот факт, что одни и те же бренды больше представлены в разных странах?
Спасибо за поддержку!
Свен
crosscountry2
кажутся несколько странными (если смотреть на вывод) — это должен быть плоский фрейм данных — не так ли? - person Helix123   schedule 01.06.2020pdata.frame
вы указываете вложение с аргументомindex
, но он не может обрабатывать вложенные фреймы данных в качестве входных данных. Попробуйте сделать его невложенным фреймом данных, а затем запуститеpdata.frame
. В примере документации фрейм входных данных не является вложенным. - person Helix123   schedule 02.06.2020pdata.frame
. Спасибо еще раз! - person Sven   schedule 03.06.2020plm
(Baltagi/Song/Jung (2001)). - person Helix123   schedule 03.06.2020