Я бы хотел создать скользящую среднюю переменную из набора данных баскетбола. Так что, если первое наблюдение на 1 января составляет 25 пунктов, сгенерированная переменная покажет 25. Если второе наблюдение будет 30 пунктов 2 января, сгенерированная переменная покажет 27.5. Если третье наблюдение 35 очков, переменная генерируется покажет 30, и т.д.Stata - Генерирующая скользящая средняя переменная
ответ
Для переменной y
заказанной некоторого времени t
в своем простейшем в среднем значений на сегодняшний день
gen yave = sum(y)/_n
, которая является кумулятивной сумма, деленная на количество наблюдений. Если есть случайные недостающие значения, они игнорируются sum()
но знаменатель должен быть зафиксирован, скажем
gen yave = sum(y)/sum(y < .)
Это легко обобщается на структуру панели
bysort id (t) : gen yave = sum(y)/sum(y < .)
Вот решение, которое я придумал. Мне пришлось создать три переменные, совокупную итоговую сумму (числитель) и счетчик (знаменатель), затем разделили две переменные, чтобы получить очки игроков за игру:
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
Это правильно, если отсутствуют отсутствующие значения. Обратите внимание, что создание новой переменной для подсчета не требуется. –
Попробуйте 'help rolling'. –
Да, я уже пробовал это безрезультатно, я надеялся на команду egen или команду gen – user3654703
Итак, покажите нам, что именно вы набрали, что ответила Stata и в чем проблема. –