2013-02-26 2 views
-1

나는 Stata를 사용 중이며 시간/날짜를 기반으로 조건부 평균을 계산하려고합니다. 각 상점에 대해 연간 평균 (재고)을 계산하려고합니다. 년 간격이 누락 된 경우 가장 가까운 두 날짜의 재고 값에서 평균을 취하고 싶습니다.Stata 장기 평균

나는 (아래)를 사용하여 상점 당 전체 평균을 얻었지만 더 세밀도가 필요합니다.

by id, sort: gen v1'=_n' 
forvalues x = 1/'=n'{ 
by store: sum inventory if v1==`x' 
replace mean_inv= r(mean) if v1==`x' 
} 

은 시각적, 내가 가게마다 재고를 의미합니다 :

egen mean_inv = mean(inventory), by (store) 

가 나는 또한 비슷한 결과이 루프를 시도했습니다

5/1/2003 2/3/2006 8/9/2006 3/5/2007 6/9/2007 2/1/2008 
    13  18  12  15  24   11 
    [mean1] [mean2] [mean3] [mean4] [mean5] 


store date inventory 
1 16750 17 
1 18234 16 
1 15844 13 
1 17111 14 
1 17870 13 
1 16929 13.5 
1 17503 13 
4 15987 18 
4 15896 16 
4 18211 16 
4 17154 18 
4 17931 24 
4 16776 23 
12 16426 26 
12 17681 17 
12 16386 17 
12 16603 18 
12 17034 16 
12 17205 16 
42 15798 18 
42 16022 18 
42 17496 16 
42 17870 18 
42 16204 18 
42 16778 14 
33 18053 23 
33 16086 13 
33 16450 21 
33 17374 19 
33 16814 19 
33 15834 16 
33 16167 16 
56 17686 16 
56 17623 18 
56 17231 20 
56 15978 16 
56 16811 15 
56 17861 20 

답변

1

그것은이다 (상점 ID는 연속되지 않습니다) 문제의 단어 설명에 코드를 연결하기가 어렵습니다.

egen 전화는 store (연수가 아님)을 계산합니다.

길이가 긴 조각은 정의가 부족하고 오타가 하나 이상있는 것으로는 충분하지 않습니다. 당신은 의미 (것)로 변수 v1store 그룹 내에 1을 실행 식별자를 포함하고 store의 다른 값을 구분하지 않습니다

참고. egen 호출을 통해 결과를 산출 할 수있는 신뢰를 얻지 못합니다.

n 정의되지 않고, 그것을 평가하는 코드는 아마도 당신이

by store: sum inventory if v1 == `x' 

여러 수단이 차례로 계산되지만 마지막으로하는 것으로 계산하면

`=n' 

가 될 것입니다 계산은 r(mean)으로 액세스 할 수 있습니다.

샘플 데이터는 문제와 관련이 없습니다. 아무 year 변수는없고 date들 STATA 매일 날짜를하더라도, 그들은 옆으로 당신을 생각하는 모든 설정 1960

내의 모든 날짜 변수 store, inventoryyear은 한 수 있습니다. 당신은

collapse inventory, by(store year) 
fillin store year 
ipolate inventory year, gen(inventory2) by(store) 

collapse 수단의 감소 된 데이터 세트를 생성 시도 할 수 있습니다. ipolate은 묻는대로 갭을 보간합니다. fillin은 원하는 모든 조합을 storeyear 개 제공하는 데 적합하지 않을 수 있으며 보간하기 전에 수년을 수동으로 추가해야 할 수도 있습니다. 이러한 결과를 원본 데이터와 함께 되돌리려면 merge입니다.

전체적으로 이것은 상당히 혼란스러운 질문입니다.

+0

답변 해 주셔서 감사합니다. Nick. 상점별로 평균을 계산하는 동안 평균 상점 당 평균값이 필요합니다. 내 egen 성명서를 통해 그렇게하려고했습니다. 연도 정보가 일정하지 않지만 귀하의 접기 및 채우기 옵션을 시도해 보겠습니다. –

+0

코드를 수정하면 오류가 수정되지만 다른 오류는 도입됩니다. 불행히도 도움이되지는 않습니다. 예를 들어, 5 개 블록의 처음 두 행은 모두 불법이지만 여러 가지 이유가 있습니다. –