2015-02-14 7 views
-3

Я бы хотел создать скользящую среднюю переменную из набора данных баскетбола. Так что, если первое наблюдение на 1 января составляет 25 пунктов, сгенерированная переменная покажет 25. Если второе наблюдение будет 30 пунктов 2 января, сгенерированная переменная покажет 27.5. Если третье наблюдение 35 очков, переменная генерируется покажет 30, и т.д.Stata - Генерирующая скользящая средняя переменная

+0

Попробуйте 'help rolling'. –

+0

Да, я уже пробовал это безрезультатно, я надеялся на команду egen или команду gen – user3654703

+0

Итак, покажите нам, что именно вы набрали, что ответила Stata и в чем проблема. –

ответ

3

Для переменной y заказанной некоторого времени t в своем простейшем в среднем значений на сегодняшний день

gen yave = sum(y)/_n 

, которая является кумулятивной сумма, деленная на количество наблюдений. Если есть случайные недостающие значения, они игнорируются sum() но знаменатель должен быть зафиксирован, скажем

gen yave = sum(y)/sum(y < .) 

Это легко обобщается на структуру панели

bysort id (t) : gen yave = sum(y)/sum(y < .) 
0

Вот решение, которое я придумал. Мне пришлось создать три переменные, совокупную итоговую сумму (числитель) и счетчик (знаменатель), затем разделили две переменные, чтобы получить очки игроков за игру:

gen player_pts = points if player[_n]!=player[_n-1] 
replace player_pts=points+player_pts[_n-1] if player[_n]==player[_n-1]&[_n]!=1 
by player: gen player_games= [_n] 
gen ppg=player_pts/player_games 
+0

Это правильно, если отсутствуют отсутствующие значения. Обратите внимание, что создание новой переменной для подсчета не требуется. –