Nano Hash - криптовалюты, майнинг, программирование

Ранжирование агрегированных значений в панельных данных

У меня есть несбалансированный набор панельных данных с ежедневными данными, подобными этому, для n стран:

quarter date id trade trade_quarterly rank       i
 1       1    1    1    2               1        10
 1       2    1    1    2               1        17
 1       1    2    1    1               2        12

 2       1    1    0    1               1        5
 2       2    1    1    1               1        9
 2       1    2    0    1               1        14
 2       2    2    1    1               1        8
 2       2    3    0    0               3        6

Даны первые 4 столбца.

Меня интересует информация: i, теперь я хотел бы сохранять только 2 идентификатора наиболее торгуемых акций за каждый квартал. Я агрегировал квартальные сделки с

bysort quarter id: egen trade_quarterly =sum(trade) 

чтобы получить столбец 5.

Чтобы вычислить столбец 6, я попытался использовать

bysort quarter id : egen xx =rank(trade_quarterly), "option" 

что не дает правильного решения.

(Обратите внимание, что, поскольку значения агрегированы внутри идентификаторов, ранжирование с rank(xx), field приведет к неправильному ранжированию для следующего идентификатора)

31.08.2015

  • Столбец 6 сообщает нам, что в первом квартале id 1 занимает первое место, а id 2 - второе. И во втором квартале идентификаторы 1 и 2 связаны между собой для первого, а идентификатор 3 - для третьего (потому что оба идентификатора 1 и 2 имеют более высокий рейтинг). 31.08.2015
  • Да, в самом деле. Здесь важно то, что trade_quarterly не меняется в пределах идентификатора, но возможно, что идентификаторы связаны с этой переменной. 31.08.2015

Ответы:


1

Последняя строка синтаксиса

bysort quarter id : egen xx =rank(trade_quarterly), option 

недопустима, поскольку буквальный текст option не является вариантом. В более общем плане egen, rank() не может помочь здесь с вашей нынешней структурой данных.

Но учтите, что это всего лишь вопрос collapse для сумм (итогов), а затем сохранение только двух самых больших (последних двух после сортировки) в перекрестных комбинациях:

clear 
input quarter date id trade 
 1       1    1    1    2   
 1       2    1    1    2   
 1       1    2    1    1   
 2       1    1    0    1   
 2       2    1    1    1   
 2       1    2    0    1   
 2       2    2    1    1   
 2       2    3    0    0   
end 
collapse (sum) trade, by(quarter id) 
bysort quarter (trade) : keep if (_N - _n) < 2 
list, sepby(id quarter) 

     +----------------------+
     | quarter   id   trade |
     |----------------------|
  1. |       1    2       1 |
     |----------------------|
  2. |       1    1       2 |
     |----------------------|
  3. |       2    1       1 |
     |----------------------|
  4. |       2    2       1 |
     +----------------------+

Если вы не хотите collapse, тогда дополнительная техника состоит в том, чтобы пометить каждую пару _7 _-_ 8_ только один раз при ранжировании.

clear 
input quarter date id trade 
 1       1    1    1    2   
 1       2    1    1    2   
 1       1    2    1    1   
 2       1    1    0    1   
 2       2    1    1    1   
 2       1    2    0    1   
 2       2    2    1    1   
 2       2    3    0    0   
end 
egen sum = total(trade), by(quarter id) 
egen tag = tag(quarter id) 
bysort tag quarter (trade) : gen tokeep = tag & (_N - _n) < 2 
bysort quarter id (tokeep) : replace tokeep = tokeep[_N] 
list if tokeep, sepby(quarter) 

     +--------------------------------------------------+
     | quarter   date   id   trade   sum   tag   tokeep |
     |--------------------------------------------------|
  1. |       1      2    1       1     2     0        1 |
  2. |       1      1    1       1     2     1        1 |
  3. |       1      1    2       1     1     1        1 |
     |--------------------------------------------------|
  4. |       2      2    1       1     1     0        1 |
  5. |       2      1    1       0     1     1        1 |
  6. |       2      2    2       1     1     0        1 |
  7. |       2      1    2       0     1     1        1 |
     +--------------------------------------------------+

Обратите внимание, в соответствии с комментарием @William Lisowski, что два самых больших не могут быть однозначно идентифицированы при наличии связей.

31.08.2015
  • Большое спасибо, Ник. Однако меня изначально интересуют данные id на дневном уровне, которые я недостаточно показал в разбивке данных выше. Я соответствующим образом отредактировал свой вопрос. Есть ли способ обойти это? 31.08.2015
  • Я не понимаю, что в принципе отличается. Ясно, что вы можете collapse другие переменные вместе с trade. 31.08.2015
  • Как только я использую collapse для любой переменной, я буду агрегировать i, что не является целью. Следует сохранять ежедневную структуру данных. Единственная цель процедуры - отфильтровать x наиболее торгуемых идентификаторов. 31.08.2015
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

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

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..