Различные результаты при использовании сортировки с несколькими переменными - PullRequest
0 голосов
/ 19 марта 2019

Когда я использую префикс bysort только с одной переменной и генерирую среднее значение для другой переменной, я получаю один набор значений, например 42,43,39 и т. Д.

bysort date: egen dailymean = mean(temperature) // Gives mean temp for each day

Когда я использую bysortс двумя переменными и сгенерировать аналогичное среднее значение, я получаю другое значение, например 49,48,51 и т. д. Я хочу понять, что означают значения.

bysort date isCentralPark: egen cpdailymean = mean(temperature)

В первом случае, я думаю, что я получаю среднеетемпературы по переменной, отсортированной по дате, другими словами, среднесуточная температура.

Во-вторых, получаю ли я среднесуточную температуру в Центральном парке или что-то другое?

1 Ответ

2 голосов
/ 19 марта 2019

В файле справки sort четко указано:

" sort упорядочивает наблюдения текущих данных в порядке возрастания на основе значений переменныхв varlist ..."

В файле справки by также четко указано:

" ... by повторяет команду для каждой группы наблюдений, для которой значения переменных в varlist одинаковы ..."

Так что bysort просто сортирует данные до by операция.

Вам необходимо внимательно изучить обширные примеры, приведенные в файлах справки, прежде чем задавать здесь вопрос о чем-то столь фундаментальном.

Как вики-тег вики объясняет: " ... просто невозможно заменить себя знакомством с основными понятиями и синтаксисом Stata ... "

При отсутствии примеров данных, которые, несмотря на неоднократные запросы, которые вы не смогли предоставить, вот простой пример того, как varlist влияет на bysort:

clear
set obs 15
set seed 1234567890

egen id = seq(), block(5)
generate a = rnormal()

bysort id: generate n1 = _n
list

     +---------------------+
     | id           a   n1 |
     |---------------------|
  1. |  1   -.6953015    1 |
  2. |  1   -.5804186    2 |
  3. |  1   -1.938336    3 |
  4. |  1    .9347979    4 |
  5. |  1    -.767854    5 |
     |---------------------|
  6. |  2    .3776966    1 |
  7. |  2   -.5545912    2 |
  8. |  2   -.0636268    3 |
  9. |  2    2.041136    4 |
 10. |  2   -.2200604    5 |
     |---------------------|
 11. |  3    .5418512    1 |
 12. |  3    1.174645    2 |
 13. |  3    .3234408    3 |
 14. |  3    -.544277    4 |
 15. |  3    .2121655    5 |
     +---------------------+

bysort id a: generate n2 = _n
list

     +--------------------------+
     | id           a   n1   n2 |
     |--------------------------|
  1. |  1   -1.938336    3    1 |
  2. |  1    -.767854    5    1 |
  3. |  1   -.6953015    1    1 |
  4. |  1   -.5804186    2    1 |
  5. |  1    .9347979    4    1 |
     |--------------------------|
  6. |  2   -.5545912    2    1 |
  7. |  2   -.2200604    5    1 |
  8. |  2   -.0636268    3    1 |
  9. |  2    .3776966    1    1 |
 10. |  2    2.041136    4    1 |
     |--------------------------|
 11. |  3    -.544277    4    1 |
 12. |  3    .2121655    5    1 |
 13. |  3    .3234408    3    1 |
 14. |  3    .5418512    1    1 |
 15. |  3    1.174645    2    1 |
     +--------------------------+

bysort id (a): generate n3 = _n
list

     +-------------------------------+
     | id           a   n1   n2   n3 |
     |-------------------------------|
  1. |  1   -1.938336    3    1    1 |
  2. |  1    -.767854    5    1    2 |
  3. |  1   -.6953015    1    1    3 |
  4. |  1   -.5804186    2    1    4 |
  5. |  1    .9347979    4    1    5 |
     |-------------------------------|
  6. |  2   -.5545912    2    1    1 |
  7. |  2   -.2200604    5    1    2 |
  8. |  2   -.0636268    3    1    3 |
  9. |  2    .3776966    1    1    4 |
 10. |  2    2.041136    4    1    5 |
     |-------------------------------|
 11. |  3    -.544277    4    1    1 |
 12. |  3    .2121655    5    1    2 |
 13. |  3    .3234408    3    1    3 |
 14. |  3    .5418512    1    1    4 |
 15. |  3    1.174645    2    1    5 |
     +-------------------------------+
...