이 데이터 구조는 목적에 맞지 않습니다. 식별자가 id
이라고 가정하면 reshape
이 필요합니다.
reshape long v, i(id) j(year)
tsset id year
그러면 평균 이동이 쉽습니다. tssmooth
또는 단지 generate
을 사용하십시오.
gen mave = (L.v + v + F.v)/3
또는 (더 나은)
데이터 구조가 매우 부적당 이유에
gen mave = 0.25 * L.v + 0.5 * v + 0.25 * F.v
더 많은 것은 :뿐만 아니라 이동 평균 필요 (반드시 egen
을 포함하지 않음) 루프의 계산,하지만 당신은 될 것 몇 가지 새로운 추가 변수를 생성합니다. 후속 분석에서 이들을 사용하는 것은 어색하고 불가능한 사이 어딘가에있을 것입니다.
편집 샘플 루프를 제공 하겠지만 내 태도는 움직이지 않는 반면 기술은 좋지 않습니다. 귀하의 명명 규칙 뒤에 이유가 표시되지 않습니다. P1947
은 1943-1945 년을 의미합니다. 그저 오타라고 생각합니다. 우리가 1913-2012 년 동안 자료를 가지고 있다고 가정 해 봅시다. 3 년의 수단으로, 우리는 양쪽에서 1 년을 잃습니다.
forval j = 1914/2011 {
local i = `j' - 1
local k = `j' + 1
gen P`j' = (v`i' + v`j' + v`k')/3
}
매크로 내에서 매크로가 혼란 스럽기 때문에 더 간결하게 작성할 수 있습니다. 위와 같이 동일하지 않은 가중치를 사용하는 것은 쉽습니다. egen
을 사용하는 유일한 이유는 위와 같은 경우에 누락이 있으면 포기하지 않기 때문입니다. 완전성의 문제로
멀어져 편집, egen
에 의지하지 않고에서 missing 취급이 용이 있습니다.
분자입니다
(v`i' + v`j' + v`k')
는
(cond(missing(v`i'), 0, v`i') + cond(missing(v`j'), 0, v`j') + cond(missing(v`k'), 0, v`k')
및
3
가
!missing(v`i') + !missing(v`j') + !missing(v`k')
0,123,516로 일반화된다 분모로 일반화된다
모든 값이 누락 된 경우 0/0으로 줄어들거나 누락됩니다. 그렇지 않으면 값이 누락 된 경우 분자에 0을 추가하고 분모에 0을 추가합니다. 이는 무시하는 것과 같습니다.당연히 코드는 3 년의 평균에 대해 위와 같이 허용되지만, 그 경우 또는 더 많은 년간 평균을 내면 위의 라인을 루프로 바꿀 것입니다. 이것은 egen
입니다.
It Stata입니다. 이것은 이미 당신에게 지적되었습니다. –
'rmean()'은'egen'에서 작동하지만 Stata 9부터는 문서화되지 않았다는 것에주의하십시오. 문서화 된'egen' 함수 이름은'rowmean()'입니다. –