2016-04-05 2 views
0

У меня есть неуравновешенная панель с тремя идентификаторами (дата, компания и человек), для которых я хочу рассчитать скользящее средство для моей переменной (price) за предыдущие 90 дней для каждой компании и Дата. Когда я назначаю панель tsset, я получаю сообщение об ошибке repeated time values within panel. Поскольку каждый человек в моей группе принадлежит нескольким компаниям, у меня есть несколько пар компаний для каждой даты. Вот мой код до сих пор:Подсказка для панели с 3 идентификаторами в Stata

tsset company_id date_id 
tsegen Mean_90days = rowmean(L(0/90).price)  

Есть ли способ, как сделать такой расчет?

Мое решение было создание company_person_id с помощью group(company_id person_id), чтобы вычислить означает для каждого company_person_id date наблюдения и использовать в виду egen=mean() агрегировать by (company_id date_id). Однако я все еще не уверен, насколько это правдоподобно.

+0

Ваше двухэтапное решение кажется звуковым, потому что путь означает работу, но есть более прямой маршрут: см. Мой ответ. –

+0

На самом деле, работа вокруг была бы проблематичной, если бы вы не учли тот факт, что разные средства (пары компаний, человека) могут основываться на разных количествах измерений. Правильное обходное отношение было бы взвешенным средним значением. –

+0

Да, вы правы @ Ник Кокс - взвешенное среднее лучше в моем случае. – In777

ответ

5

Вы не можете иметь это в обоих направлениях с помощью этой техники. Если вы заявляете, что компании являются панелями, которые не будут стираться из-за повторов для той же панели и времени. tsset не удастся и tsegen (SSC, как вы должны объяснить) не сдвинется с места. Если рамка tsset отказывается, то все, что на ней основано, не поможет и не поможет.

Если вы заявляете, что пары (компании, лица) являются панелями, ваш расчет может продолжаться, но вы не будете путать ценности для разных лиц в одной компании. который, кажется, является тем, что вы хотите.

Но есть хорошие новости.

rangestat (SSC) (объявлено here) должно помочь.

Ваша команда будет я думаю напоминать

rangestat (mean) price, interval(date_id -90 0) by(company) 

Обратите внимание, что это расчетливый за предыдущие 90 дней и настоящее время, как в вашем вызове.

+0

Большое спасибо, я думаю, что «rangestat» - это то, что мне нужно здесь. – In777

 Смежные вопросы

  • Нет связанных вопросов^_^