Necesito comandos de Stata o una función de Excel para calcular la media en grupos de 5 años de los valores de un conjunto de datos de panel. En particular, este procedimiento como para tener en cuenta la presencia de posibles valores perdidos (celdas vacías en Excel) y así ajustar el cálculo en consecuencia al número real de no perdidos en el período.
Respuestas
¿Demasiados anuncios?
user10775
Puntos
121
¿Es esto lo que quiere (en Stata)?
clear all
* Generate Data (n=5, T=20)
set obs 100
gen id = floor((_n-1)/20)+1
by id, sort: gen year = 1990+_n
gen x = rnormal()
xtset id year
* Convert
gen t5 = floor((year-1991)/5)+1
gen idt5 = id*10+t5 /* 10 can be 100, 1000, etc., depending on T */
by idt5, sort: egen xbar5 = mean(x)
*drop t5 idt5 /* drop if you want; you can also use tempvar */
Si no es así, aclare su pregunta con un ejemplo.
Ian P
Puntos
7930
Utilice el tssmooth ma
comando. Utilice el comando window()
para controlar los periodos de tiempo que se incluirán en la media.
. use http://www.stata-press.com/data/r14/abdata, clear
. keep id year wage
. quietly keep if id == 1 | id == 2
. quietly xtset id year
.
. ** moving average of 2 years before, 2 years after, and the current year
. tssmooth ma wage_moving_avg_5yr = wage, window(2 1 2)
The smoother applied was
by id : (1/5)*[x(t-2) + x(t-1) + 1*x(t) + x(t+1) + x(t+2)]; x(t)= wage
. list
+--------------------------------+
| year wage id wage_m~r |
|--------------------------------|
1. | 1977 13.1516 1 12.7643 |
2. | 1978 12.3018 1 13.0242 |
3. | 1979 12.8395 1 13.2773 |
4. | 1980 13.8039 1 13.6206 |
5. | 1981 14.2897 1 13.91592 |
|--------------------------------|
6. | 1982 14.8681 1 14.18503 |
7. | 1983 13.7784 1 14.31207 |
8. | 1977 14.7909 2 14.61597 |
9. | 1978 14.1036 2 14.83472 |
10. | 1979 14.9534 2 15.10716 |
|--------------------------------|
11. | 1980 15.491 2 15.37526 |
12. | 1981 16.1969 2 15.81556 |
13. | 1982 16.1314 2 16.0311 |
14. | 1983 16.3051 2 16.21113 |
+--------------------------------+
Tenga en cuenta que este comando toma lo que está disponible en el período de tiempo especificado. Por ejemplo, para el año 1977, como no se dispone de dos años anteriores, simplemente calcula la media del año actual y de los dos años siguientes.
0 votos
No estoy 100% seguro. Es algo así: Tienes que usar el comando tabular. Si necesitas hacer el promedio sólo en los últimos 5 años y no en todo el período del panel, usa: tabular "nombre de las variables" si "nombre de la variable temporal"=2016,2015 etc. (No recuerdo la sintaxis exacta de "si", así que sólo puse una coma, pero podría ser un paréntesis)
0 votos
Excel's
AVERAGE()
ignorará las celdas vacías o no numéricas (aunque no las celdas de error)0 votos
Tal vez pueda compartir sus datos. Sólo con tu descripción escrita no está muy claro lo que quieres hacer.