Tuesday 31 October 2017

Moving Average Panel Data Stata


Esta estructura de datos es bastante inapropiada para el propósito. Asumiendo un id de identificador que usted necesita para remodelar. p. ej. Entonces una media móvil es fácil. Utilice tssmooth o simplemente genere. p. ej. Más sobre por qué su estructura de datos es bastante inapropiada: No sólo el cálculo de un promedio móvil necesita un bucle (no necesariamente involucrando egen), sino que estaría creando varias nuevas variables adicionales. Usarlos en cualquier análisis subsecuente sería algo entre incómodo e imposible. EDIT III dar un bucle de muestra, mientras que no se mueve de mi postura que es mala técnica. No veo una razón detrás de su convención de nombrar por lo que P1947 es un medio para 1943-1945 Supongo que es sólo un error tipográfico. Supongamos que tenemos datos para 1913-2012. Por medios de 3 años, perdemos un año en cada extremo. Eso podría escribirse más concisamente, a expensas de una ráfaga de macros dentro de macros. Usando pesos desiguales es fácil, como arriba. La única razón para usar egen es que no se da por vencido si hay fallos, lo que hará lo anterior. Como una cuestión de integridad, tenga en cuenta que es fácil de manejar faltas sin recurrir a egen. Y el denominador Si faltan todos los valores, esto se reduce a 0/0, o falta. De lo contrario, si falta algún valor, agregamos 0 al numerador y 0 al denominador, lo cual equivale a ignorarlo. Naturalmente el código es tolerable como arriba para los promedios de 3 años, pero para ese caso o para el promediado durante más años, reemplazaríamos las líneas por encima por un lazo, que es lo que hace egen. Stata: Análisis de Datos y Software Estadístico Nicholas J , Y sus limitaciones El comando más obvio de Statarsquos para calcular promedios móviles es la función ma () de egen. Dada una expresión, crea un promedio móvil de esa expresión. De forma predeterminada, se toma como 3. debe ser impar. Sin embargo, como indica la entrada manual, egen, ma () no se puede combinar con varlist:. Y, por esa sola razón, no es aplicable a los datos de los grupos especiales. En cualquier caso, se encuentra fuera del conjunto de comandos específicamente escritos para series de tiempo ver series de tiempo para más detalles. Métodos alternativos Para calcular las medias móviles de los datos del panel, hay al menos dos opciones. Ambos dependen de que el conjunto de datos haya sido tsset de antemano. Esto vale mucho la pena: no sólo puede ahorrarse repetidamente especificando la variable de panel y la variable de tiempo, pero Stata se comporta de manera inteligente dada lagunas en los datos. 1. Escriba su propia definición utilizando generate Usando operadores de series de tiempo como L. y F.. Dar la definición de la media móvil como el argumento a una declaración de generar. Si lo hace, naturalmente, no está limitado a los promedios móviles ponderados (no ponderados) centrados calculados por egen, ma (). Por ejemplo, los promedios móviles de tres periodos ponderados por igual estarían dados por y algunos pesos pueden ser fácilmente especificados: Usted puede, por supuesto, especificar una expresión como log (myvar) en lugar de un nombre de variable como myvar. Una gran ventaja de este enfoque es que Stata hace automáticamente lo correcto para los datos del panel: los valores de avance y retraso se calculan dentro de paneles, tal como la lógica dicta que deberían ser. La desventaja más notable es que la línea de comandos puede ser bastante larga si el promedio móvil implica varios términos. Otro ejemplo es una media móvil unilateral basada sólo en valores anteriores. Esto podría ser útil para generar una expectativa adaptativa de lo que una variable se basará puramente en la información hasta la fecha: ¿qué podría alguien prever para el período actual basado en los últimos cuatro valores, utilizando un esquema de ponderación fijo? Especialmente utilizado con series de tiempos trimestrales.) 2. Utilice egen, filter () de SSC Utilice el filtro de función egen escrito por el usuario () del paquete egenmore en SSC. En Stata 7 (actualizado después del 14 de noviembre de 2001), puede instalar este paquete después de que ayuda egenmore señala los detalles en filter (). Los dos ejemplos anteriores serían renderizados (en esta comparación el enfoque de generar es tal vez más transparente, pero veremos un ejemplo de lo contrario en un momento). Los retrasos son un numlist. Los conductores son retardos negativos: en este caso -1/1 se expande a -1 0 1 o el plomo 1, retrasa 0, retraso 1. Los coeficientes, otro numlist, multiplican los artículos retrasados ​​o principales relevantes: en este caso esos artículos son F1.myvar. Myvar y L1.myvar. El efecto de la opción normalizar es escalar cada coeficiente por la suma de los coeficientes para que coef (1 1 1) normalize sea equivalente a coeficientes de 1/3 1/3 1/3 y coef (1 2 1) normalizar es equivalente A coeficientes de 1/4 1/2 1/4. Debe especificar no sólo los rezagos, sino también los coeficientes. Debido a que egen, ma () proporciona el caso igualmente ponderado, la razón principal para egen, filter () es apoyar el caso desigualmente ponderado, para el cual debe especificar coeficientes. También podría decirse que obligar a los usuarios a especificar coeficientes es un poco más de presión sobre ellos para pensar qué coeficientes quieren. La principal justificación para pesos iguales es, suponemos, la simplicidad, pero los pesos iguales tienen propiedades de dominio de frecuencia pésimas, por mencionar sólo una consideración. El tercer ejemplo anterior podría ser cualquiera de los cuales es casi tan complicado como el enfoque de generar. Hay casos en que egen, filter () da una formulación más simple que generar. Si quieres un filtro binomial de nueve términos, que los climatólogos encuentren útil, entonces parece quizás menos horrible que, y más fácil de conseguir que justo, así como con el enfoque de generar, egen, filter () funciona correctamente con los datos del panel. De hecho, como se indicó anteriormente, depende del conjunto de datos que haya sido tsset de antemano. Una punta gráfica Después de calcular sus promedios móviles, es probable que desee ver un gráfico. El comando escrito por el usuario tsgraph es inteligente acerca de conjuntos de datos tsset. Instálelo en un Stata 7 actualizado por ssc inst tsgraph. ¿Qué pasa con subconjunto con si ninguno de los ejemplos anteriores hacer uso de si las restricciones. De hecho, egen, ma () no permitirá si se especifica. Ocasionalmente la gente quiere usar si al calcular promedios móviles, pero su uso es un poco más complicado de lo que suele ser. ¿Qué esperaría de un promedio móvil calculado con if. Identificemos dos posibilidades: Interpretación débil: No quiero ver ningún resultado para las observaciones excluidas. Interpretación fuerte: Ni siquiera quiero que uses los valores de las observaciones excluidas. He aquí un ejemplo concreto. Suponga como consecuencia de alguna condición if, las observaciones 1-42 están incluidas pero no las observaciones 43 sobre. Pero el promedio móvil de 42 dependerá, entre otras cosas, del valor de observación 43 si el promedio se extiende hacia atrás y hacia adelante y es de longitud por lo menos 3, y dependerá de algunas de las observaciones 44 en adelante en algunas circunstancias. Nuestra conjetura es que la mayoría de la gente iría para la interpretación débil, pero si eso es correcto, egen, filter () no apoya si cualquiera. Siempre se puede ignorar lo que donrsquot quieren o incluso establecer valores no deseados a falta después mediante el uso de reemplazar. Una nota sobre los resultados faltantes en los extremos de la serie Debido a que los promedios móviles son funciones de retrasos y derivaciones, egen, ma () produce falta donde no existen los retrasos y las derivaciones, al principio y al final de la serie. Una opción nomiss obliga al cálculo de promedios móviles más cortos y no centrados para las colas. En contraste, ni generar ni egen, filter () hace, o permite, nada especial para evitar resultados faltantes. Si falta alguno de los valores necesarios para el cálculo, faltará ese resultado. Es a los usuarios a decidir si y qué cirugía correctiva se requiere para estas observaciones, presumiblemente después de mirar el conjunto de datos y teniendo en cuenta cualquier ciencia subyacente que se puede llevar a cabo. Estadística para los investigadores: Trabajo con grupos Esta es la sexta parte de la Stata Para la serie de Investigadores. Para obtener una lista de los temas tratados en esta serie, consulte la Introducción. Si eres nuevo en Stata, recomendamos leer los artículos en orden. Las tareas que requieren trabajar con grupos son comunes y pueden variar desde el muy simple (quotCalculate el mpg medio de los automóviles nacionales y los coches extranjeros por separado) a la muy compleja (quotModel rendimiento del estudiante en una prueba estandarizada, teniendo en cuenta que los estudiantes son Agrupados en clases que se agrupan en escuelas que se agrupan en distritos. Afortunadamente, trabajar con grupos es una de las mayores fortalezas de Statas. En este artículo discutiremos bien las herramientas para trabajar con grupos y, al mismo tiempo, trataremos de darle más experiencia utilizando la sintaxis de Statas para obtener resultados útiles. En la siguiente sección (Datos jerárquicos) introduciremos un marco teórico para pensar sobre los datos agrupados, pero tendrá más sentido si usted ha tenido alguna experiencia trabajando con grupos primero. Bien comience por pasar por algunas herramientas básicas que se utilizan para trabajar con grupos, y algunos trucos para usarlos. Al hacerlo, utilice uno de los conjuntos de datos de ejemplo de esta serie, households. dta. Asegúrese de haber copiado esos archivos de X: SSCC TutorialsStataResearch o haberlos descargado. Y ponerlos en una ubicación conveniente como U: StataResearch. Asegúrese de que su directorio de trabajo actual está configurado en esa ubicación: (o dondequiera que los ponga). A continuación, inicie un archivo do: borrar todo el registro de captura cerrar establecer más fuera de registro utilizando groups1.log, reemplazar Youll desea ejecutar su archivo hacer con frecuencia en esta sección. Considere la posibilidad de mantener abierta una ventana de explorador de datos para que pueda ver fácilmente lo que hace el archivo a sus datos. Este conjunto de datos contiene información sobre veinte personas ficticias que viven en seis hogares diferentes. Esta estructura de datos es una de las más comunes encontradas en el SSCC. Una variable que puede requerir explicación es rel2head. O quotrelationship con el jefe de familia. quot Es una variable categórica que toma tres valores, con etiquetas de valor aplicado. Escriba la lista de etiquetas para verlas. Esto es típico de los datos del mundo real (excepto que los datos reales suelen tener muchas más clases de relaciones). La herramienta más importante para trabajar con grupos es por. Recuerde que si lo pone por varlist. Antes de un comando, Stata primero dividirá el conjunto de datos en un grupo para cada valor de la variable by (o cada combinación única de las variables by si hay más de una) y, a continuación, ejecute el comando por separado para cada grupo. Para una revisión más detallada, consulte la sección sobre en Uso y sintaxis. Aquí hay algunos ejemplos de cosas que puede hacer con. Cálculo de las estadísticas resumidas sobre los grupos Encuentre la edad promedio de los adultos en cada hogar: por hogar: suma la edad si edad 18 (Puede obtener los mismos resultados de forma más compacta con la pestaña del hogar si edad18, suma (edad) Nueva variable: por hogar: egen el hogarIncometotal (ingresos) Tenga en cuenta que el ingreso del hogar es el mismo para todos los individuos que viven en un hogar dado. Eso es porque es una característica de la casa, no el individuo. Bueno hablar más sobre esta distinción en los datos jerárquicos. Identificar las características de un grupo Crear un indicador para determinar si un hogar tiene hijos o no, independientemente del número: gen niño (agelt18) por hogar: egen hasChildrenmax (niño) Si un hogar no tiene hijos, el valor máximo del niño será cero. Si tiene alguno, el máximo será uno. En este caso, es probable que el niño sea una variable útil por derecho propio. Pero si no lo necesita, puede hacer todo el proceso en una línea con: por el hogar: egen hasChildrenmax (agelt18) Ahora en lugar de encontrar el máximo de una variable, youre encontrando el máximo de una expresión, pero el resultado es el mismo : El máximo será uno para el hogar entero si el hogar tiene niños en él y cero en caso contrario. Contar las observaciones que cumplen una condición Encuentre el número de niños en cada hogar: por hogar: egen numChildrentotal (niño) Aquí se aprovecha el hecho de que el total de una variable indicadora es el número de observaciones para las cuales la variable indicadora es verdadera. De nuevo, el total (niño) podría haber sido total (agelt18). Resultado Difundir Supongamos que necesitamos almacenar la media de edad de los adultos en cada hogar como una variable. El punto de partida obvio sería: por el hogar: egen meanAdultAgemean (edad) si agegt18 Sin embargo, meanAdultAge recibe una falta para todos los niños en el conjunto de datos. Esto se debe a que la condición if hace dos cosas en este comando: controla qué observaciones se utilizan para calcular la media que se va a almacenar en meanAdultAge. Sino también las observaciones que significa que se almacena pulg Si necesitamos que los hogares meanAdultAge estar disponible en todas las observaciones para ese hogar (y lo hacemos generalmente), entonces necesitamos quotspreadquot el resultado a las otras observaciones. Por familia: egen tempmean (meanAdultAge) drop meanAdultAge rename temp meanAdultAge Todas las observaciones en cada hogar que tienen un valor para meanAdultAge tienen el mismo valor. Así, la función mean () devuelve ese valor, pero lo hace para todas las observaciones en el hogar. (Recuerde que cuando mean () encuentra valores faltantes, básicamente los ignora y calcula la media de los valores no faltantes). Así, la variable temp contiene el valor apropiado de meanAdultAge para todas las observaciones, adultos y niños. A continuación, soltar la antigua variable meanAdultAge y renombrar temp meanAdultAge. Si planeamos con antelación podemos guardar una línea de código en comparación con lo anterior: por hogar: egen tempmean (edad) si agegt18 por hogar: egen meanAdultAgemean (temp) drop temp A veces se llama quotspreadingquot un resultado: si puedes encontrar el derecho Respuesta para algunas de las observaciones en un grupo, a continuación, se puede extender a los demás. Usted podría hacer la difusión con cualquiera de varias funciones egen: min (). Max (). Etc, pero la media () es quizás la más intuitiva. Ejercicios Crear una variable de indicador para hogares sin hijos usando la variable numChildren que creó anteriormente. Defiende tu elección de usar o no en el proceso. (Solución) Encuentre la edad del adulto más joven en cada hogar en el momento en que nació su primer hijo. (Sugerencia: esto es una característica del hogar, no un individuo.) (Solución) Encuentre el ingreso familiar promedio de las personas en hogares monoparentales y hogares biparentales. (Solución) n y N La mayoría de los comandos de Stata son realmente bucles: haz algo a la observación uno, luego hazlo a la observación dos y así sucesivamente. A medida que Stata trabaja a través de este bucle, rastrea con qué observación está trabajando con una variable interna llamada n. Puede usar esta variable en sus comandos: solo enumerará la observación cinco, porque la condición n5 sólo es verdadera cuando Stata está trabajando con la observación cinco. N se vuelve aún más útil cuando se combina con by. Supongamos que queríamos hacer una lista de la primera observación en cada hogar: por familia: l si n1 Sucede que la primera observación es el jefe de familia en cada caso, lo que no es inusual. Pero ¿qué pasa si en lugar de tener rel2head sólo conocía el jefe de hogar por su ubicación en el hogar Entonces youd tienen que tener mucho cuidado con la clasificación. El algoritmo de clasificación por defecto de Statas no es quotstable, lo que quiere decir que si ordenas por familia, puede cambiar el orden de las observaciones dentro del hogar. Si el orden de las observaciones importa, debe agregar la opción estable a cualquier orden de ordenación. De esta manera Stata usará un algoritmo de clasificación diferente que es más lento pero no cambiará el orden de observaciones dentro de un grupo. Pero habiendo hecho eso siempre se puede identificar el jefe de hogar con una combinación de por el hogar: y si n1. Otra variable interna, N. contiene el número de observaciones en el conjunto de datos. Es también el número de observación de la última observación. Puede usarlo en comandos como n: por hogar: l si nN Enumera la última observación en cada hogar. Creación de identificadores dentro del grupo A menudo, querrás tener un identificador dentro del grupo para que puedas saber siempre qué observación es cuál, incluso después de un tipo equivocado. En este caso, el identificador dentro del grupo podría lógicamente ser llamado persona: por familia: gen personn La variable persona corresponderá al número de observación de la persona dentro de su hogar en el orden actual. Si desea un identificador exclusivo a nivel mundial, ejecute el comando anterior sin tener que utilizarlo en el hogar. Encontrar el tamaño de un grupo como n. N honores por grupos. Así, N contiene el número de observaciones en el grupo por el que se trabaja actualmente. Puede encontrar fácilmente el tamaño de la familia con: por el hogar: tamaño de la generaciónN Suscritos Considere el comando: Al llevarlo a cabo, Stata observa una observación a la vez y establece newIncome para esa observación igual al ingreso para la misma observación. Los subíndices le permiten ver el valor de una variable para cualquier observación que desee. Intentar: ingreso1 significa quotre valor de los ingresos para la observación 1.quot Así nuevo Ingreso2 será de 60.000 para todas las observaciones (no es que sea un resultado útil). Distribución de las características de una observación especial Considere tratar de identificar a los hogares encabezados por mujeres: por familia: gen femaleHeadfemale1 Dado que la primera persona en cada hogar es la cabeza, el hogar tiene un jefe femenino si y sólo si la primera persona es femenina. ¿Qué sucede si el jefe de familia es el último en lugar de primero? Sólo cambie a: por el hogar: gen femaleHeadfemaleN ¿Qué sucede si los jefes de familia no se encuentran en un lugar determinado dentro del hogar Use sort para hacerlos la primera persona en el hogar: Por el hogar: gen femaleHeadfemale1 ¿Qué pasa si el código para quothead de householdquot werent el valor más bajo de rel2head. Lo que sigue siempre funcionará: gen isHead (rel2head1) tipo de hogar isHead por el hogar: gen femaleHeadfemaleN ¿Qué pasa si algunos hogares no tienen una cabeza, y usted necesita femaleHead para estar desaparecido para esos hogares Hacer lo anterior, pero añadir una condición if a la última Este método general funcionará cada vez que necesite seleccionar las características de una fila especial dentro de un grupo (el encuestado en una encuesta, el mes en el que se graduó una asignatura, etc.): Crear Una variable de indicador que es una para la fila especial y cero para todas las demás filas Ordenar por el ID de grupo y la nueva variable de indicador La fila especial será la última y se puede acceder con N mientras comienza con por Si desea que el especial La observación de ser primero en lugar de última, puede utilizar gsort (generalizada): gsort casa-esHead Con gsort puede poner un signo menos delante de un nombre de variable y las observaciones se ordenarán en orden descendente por esa variable en lugar de ascendente . Comprobación de si una variable varía dentro de un grupo La variable de ingreso familiar debe tener el mismo valor para todos los individuos dentro de un hogar dado. Usted puede comprobar que con: ordenar el hogar del hogarIngresar por el hogar: afirmar el hogarIncome1homeholdIncomeN Debido a que las observaciones dentro de un hogar están ordenadas por el ingreso del hogar. El valor más pequeño será el primero y el valor más grande será el último. Si los valores primero y último son iguales, entonces sabe que todos los valores son iguales. Ejercicios ¿Cómo podría comprobar que cada hogar tiene uno y sólo un jefe de hogar (Solución)? Crear una variable de indicador para saber si el valor de la edad de los hogares varía. Úselo para navegar sólo aquellos hogares cuya edad varía. (Solución) Cálculos basados ​​en una observación Vecinos Los subíndices pueden contener expresiones matemáticas, incluyendo ny N. Inicie un nuevo archivo do que cargue el conjunto de datos llamado escuelas. Esto contiene números de inscripción para diez escuelas ficticias (y no terriblemente plausibles). Definir bien a un grupo de estudiantes como todos en su grado, el grado por encima de ella, y el grado por debajo de ella. Para encontrar el tamaño de cada grupo de pares de calificaciones, escriba lo siguiente: por la escuela: gen peerGroupstudentsstudentsn1studentsn-1 El resultado falta para el primer grado porque no tiene un grado antes de él, y para el grado doce porque no tiene un grado después de él. Por lo tanto, los estudiantes n-1 o studentsn1 dan valores faltantes para ellos. Afortunadamente Stata sólo devuelve un valor faltante en estos casos en lugar de dar un quotindex fuera de error limitsquot o algo similar. Ejercicios ¿Qué pasaría si algunas escuelas no tuvieran una observación para algunos grados (Solución) Implementar una definición extendida de peerGroup donde los compañeros de los alumnos de primer grado Y los alumnos de primer y segundo grado, y los compañeros de los alumnos de duodécimo grado son los alumnos de undécimo y duodécimo (es decir, llenar los valores faltantes). (Solución) Los datos del panel de datos del panel, o datos con múltiples individuos observados varias veces, pueden tratarse como datos agrupados aunque un quotgroupquot en este caso sea un individuo. (Esta es la razón por la cual introducimos una terminología más general en los datos jerárquicos.) Comience otro archivo do que cargue un conjunto de datos llamado empleo. Consta de cinco personas observadas durante veinte meses, registrándose cada mes el estado de empleo de cada persona. Identificación de hechizos Una persona típica en este panel se emplea por un tiempo, luego se encuentra desempleada durante un tiempo, etc. Cada período de empleo continuo o desempleo se llama quotspellquot y una primera tarea común con tales datos es identificar los hechizos. Comienza por identificar los meses que comienzan un nuevo hechizo, es decir, los meses en que la situación laboral de una persona es diferente de lo que era el mes anterior: por persona: inicio general (empleado en el empleo 1) Para el primer mes en que una persona es observada, La cantidad empleada n-1 no existe y, por lo tanto, falta. Puesto que el empleado nunca falta (cómo usted comprueba eso) esto garantiza que el primer mes que una persona se observa se marca como el comienzo de un nuevo hechizo. A continuación viene algo que debe agregar a su bolsa de trucos: por persona: gen spellsum (start) La función sum () encuentra las sumas corrientes, es decir, la suma de una variable para todas las observaciones hasta e incluyendo la observación actual. Puesto que el comienzo es uno siempre que un hechizo comienza y cero de otra manera, la suma (comienzo) para una observación es el número de hechizos que han comenzado hasta ese punto8212 y que sirve como un ID mágico espléndido. Una vez que haya identificado los hechizos, puede tratarlos como grupos. Sin embargo, estos ID de hechizo sólo tienen sentido dentro del contexto de una persona (cada persona tiene su propio hechizo número uno). Por lo tanto, el apropiado es por hechizo de persona. Y la primera vez que lo use tendrá que decir bysort. Pero todo lo que has aprendido todavía se aplica. Por ejemplo, encontrar la duración de un hechizo es exactamente como encontrar el tamaño de un hogar: bysort persona hechizo: gen duraciónN Ejercicios Piense de nuevo en el comando: por persona: gen start (employedemployedn-1) ¿Qué pasaría si omitió el by . (Solución) Cree variables que contengan el mes de inicio, el año de inicio, el mes de finalización y el año de finalización de cada hechizo. (Solución) Calcula la longitud media del conjuro para cada persona. Asegúrese de que la media se calcula sobre los hechizos, no meses. (Solución) Última revisión: 1/4 / 2017Annunción 04 Nov 2017, 19:36 Queridos todos, Estoy trabajando con un conjunto de datos de panel desequilibrado donde el panel var es el número de fondo y el tiempo var es el mes. Por lo tanto, estoy trabajando con series de tiempo mensuales pero con lagunas. Lo que quiero es calcular la tasa de Sharpe de 3 años y también los jensens alfa de 3 años para cada fondo. Por lo tanto, si estoy en el año 1992 me gustaría calcular la relación de Sharpe para ese año utilizando las observaciones mensuales de los años 1992 1991 1990. Para ello, necesito la media y sd de los excesos de rendimiento de cada fondo durante ese período. Además, me gustaría estimar el Jensens Alpha ejecutando el modelo CAPM usando de nuevo las observaciones mensuales de los años 1992, 1991 y 1990. Para ello, podría usar el comando statsby y utilizar los coeficientes de una regresión en curso durante ese período. He tenido probado muchos comandos como rollreg, movavg, ma etc y también algunos lugareños con foreach / forvalues ​​pero no puedo emplearlos como yo no tienen un panel equilibrado y no quiero eliminar los fondos porque yo podría tener una o dos lagunas. Este es un ejemplo de mi conjunto de datos o ryear mes mktrf smb hml umd ExcessR s ---------------------------------- ----------------------------------------- 2 1997 1. 2 1997 2 -. 0049 -0,0261,0469 -0,0204. 2 1997 3 -0.0503 -.0032 .0386 .0094 -.0181431 2 1997 4 .0404 -.0519 -.0102 .0489 .0117428 2 1997 5 .0674 .0483 -.0438 -.0519 .0372053 ---- -------------------------------------------------- --------------------- 2 1997 6 .041 .015 .0072 .0259 .0310222 2 1997 7 .0733 -.0252 -.0013 .0384 .0402394 2 1997 8 -.0415 .0734 .0137 -.0252 -0292168 2 1997 9 .0535 .0268 -.0025 .0145 .0381404 2 1998 1 .0015 -.0094 -.0207 .001 .0056473 ------ -------------------------------------------------- ------------------- 2 1998 2 .0703 .0032 -.0086 -.011 .0395531 2 1998 3 .0476 -.0099 .0123 .0214 .0277491 2 1998 4 .0073 .0048 .0027 .0078 .0005439 2 1998 5 -.0307 -.0354 .0412 .0189 -.0093562 2 1998 6 .0318 -.0315 -.0222 .0726 .002362 -------- -------------------------------------------------- ----------------- 2 1998 7 -.0246 -.0492 -.0115 .0371 -.0232616 2 1998 8 -.1608 -.0575 .0524 .0187 -.091043 2 1998 9 .0615 -.0015 -.0388 -.0063 .0222817 2 1998 10 .0713 -0.32 -.0277 -.0535 .0311223 2 1998 11 .061 .0114 -.0343 .0118 .0300834 ---- -------------------------------------------------- --------------------- 2 1998 12 .0616 -.003 -0,047 .0904 .0168859 7 1994 1 .0287 .0014 .021 .0001 .0183894 7 1994 2 -0.0256 .0272 -.0141 -.0026 -.0170168 7 1994 3 -.0478 -.0096 .0134 -.0132 -.0656004 7 1994 4 .0068 -.0091 .0169 .0041 -.0032034 - -------------------------------------------------- ----------------------- 7 1994 5 .0058 -.0201 .0018 -.0216 -.0093189 7 1994 6 -0.0303 -.0048 .0168 -.0083 -.0506594 7 1994 7 0,0282 0,0098 0,0019 0,0199595 -.0178 7 8 1994 0,0401 0,0145 0,0154 0,0419298 -.0347 7 1994 9 -.0231 0,0268 0,0131 -.0181 -.0135341 -------------------------------------------------- ------------------------- 7 1994 10 .0134 -.022 -.0236 .0145 .0129598 7 ​​1994 11 -0404 -.0017 - .0005 -.0019 -.0433825 7 1994 12 .0086 .0005 .0026 .035 .0152948 05 Nov 2017, 11:35 Muchas gracias por sus publicaciones. En cuanto a la relación de sharpe este es el código que escribí y solucionar mi problema. Gen MeanVWExcRetGr. Orden crspfundno ryear mes forval i1990 (1) 2017 local mi-2 por crspfundno. egen Meanimean (VWExcRetGr) si ryearlti ryeargtm amp reemplazar MeanVWExcRetGrMeani si ryeari No es perfecto, pero tengo mis medios en una columna ahora por lo que cada año tengo el mismo valor de rodadura significa dentro de mis observaciones mensuales (egen). Estoy diciendo que no es perfecto porque dentro de los comandos no especifico que quiero hacer un promedio de los valores sólo en el caso de que tengo 3 años de observaciones. Así que también calcula la media en el caso en el que tengo 2 años de observaciones. La buena noticia es que puedo eliminar mis propias observaciones. Publico lo anterior porque quiero que entiendas lo que necesito exactamente. Quiero tener el alfa y el beta, cada uno en una columna de modo que pueda utilizarlos para regredirlos en otras variables. Por lo tanto, en el año 1995 para el fondo no 100 que tiene 11 observaciones mensuales, por ejemplo, quiero que se repita la salida alfa de la regresión capm / 4 factor de 3 años (1995,1994,1993) 11 filas-celdas de la columna alfa. Lo mismo se aplica para beta. He aplicado el código Mata con algunos cambios egen g grupo (crspfundno) gen alpha. mata mata clara stview (crspfundno. quotcrspfundno quot) stview (ryear. quotryearquot) stview (VWExcRetGr. quotVWExcRetGrquot) stview (mktrf. quotmktrfquot) stview (SMB. quotsmbquot) stview (HML. quothmlquot) stview (UMD. quotumdquot) stview (g. quotgquot) stview (alfa. quotalphaquot) p panelsetup (crspfundno, 1) para iltrows (i1 (p) i) para (OPI, 2 ogtpi, 1 O-) y J (1,1 ,.) XJ (1,5 ,.) B. para (a tgtpi, 1 t--) si (vaya, 1 TB, a 1 ryearo amplificador, 1 - ryeart, 1 lt 2) VWExcRetGrt aa, 1 XX (mktrft, 1, SMBT, 1, hmlt, 1, umdt, 1 , 1) yy (2..veces (y)) ,. XX (2..vueltas (X)) ,. Si (filas (y) gt6) b invsym (cruza (X, X)) cruza (X, y) alphao, 1 b5,1 final pero el resultado es éste y no incluye beta también. ¿Me podría ayudar a fundno mes ryear g de alfa 5487 2001 1 478 -.0045781 5487 2001 2 478 -.0049922 5487 2001 3 478 -.0044039 5487 2001 4 478 -.0058963 5487 2001 5 478 -.0057021 5487 2001 6 478 - .0037893 5487 2001 7 478 -.0046226 5487 2001 8 478 -.0027665 5487 2001 9 478 -.0037288 5487 2002 1 478 5487 2002 0,0009866 0,0019246 2 478 5487 2002 3 478 5487 2002 0.0019994 0.002021 4 478 5487 2002 5 478 .0025631 5487 2002 6 478 .0019815 5487 2002 7 478 .0037848 5487 2002 8 478 .0035144 5487 2002 9 478 .003802 5487 2002 10 478 .0012915 5487 2002 11 478 .0016832 5487 2002 12 478 .0015888 no estoy seguro de si Te entiendo. Sin embargo, repitiendo el consejo en el hilo al que me referí anteriormente sobre no usar código Mata mientras el código Stata está disponible, aquí hay un código adaptado de ese hilo que hará la regresión de balanceo. Le tomará mucho tiempo si tiene un gran conjunto de datos. Avísame si te toma mucho tiempo. Le aconsejo que compruebe los resultados. 06 Nov 2017, 08:51 A Abraham: Realmente rápido código Mata. Sólo necesitaba 1 minuto en lugar de 2 horas. Además, funciona mejor dado que devuelve valores perdidos si solo tengo una observación de un año. Muchas gracias. Una última pregunta. Si necesito la regresión capm, eso significa que sólo VWExcRetGr y mktrf, pero no el smb hml umd, es así como el código debe ser como gen Alpha. Gen bMktrf. Mata mata clear stview stview (ryear, quotryearquot) stview (vwExcRetGr. QuotVWExcRetGrquot) stview (mktrf. quotmktrfquot) stview (bMktrf. QuotbMktrfquot) p panelsetup (crspfundno, 1) para (i1 iltrows (P) i) para (opi, 1 oltpi, 2 o) y VWExcRetGro, 1 X (mktrfo, 1, 1) b. Para (tpi, 1 tltpi, 2 t) si (a amp crspfundnoo, 1 crspfundnot, 1 amp (ryearo, 1-ryeart, 1 lt 2) amp ryearo, 1 gt ryeart, 1) yy VWExcRetGrt, 1 XX (mktrft, 1 1) if (filas (y) gt6) b invsym (cruzar, X) cruzar (X, y) Alphao, 1 b2,1 bMktrfo, 1 b1,1 En su código, calcular la desviación estándar por país y Industria (utilizando resumen), pero luego se reemplaza este valor en SDx de otros coutries (en el bucle interno). Es eso lo que quieres hacer escribí el código Mata asumiendo que quieres calcular la desviación estándar por país e industria. Si desea calcular por país e industria, debe agregar: Aquí está el código Mata (calcula la desviación estándar también cuando la ventana es menor a 4 años): Anuncio Es mi primer post y trataré de ser tan claro como sea posible. El enlace de la base de datos principal se encuentra al final de la publicación. Contexto Estoy usando Stata / SE 12.0 bajo Windows 10. He empezado con Stata hace solo unas semanas y estoy tratando de aprender por mi cuenta para una tarea que se debe en unos días (porque cada tabla o figura me tomó días y Días): reproducir el papel en el que se muestra que las personas nacidas en los últimos trimestres de los años tienen más educación en promedio que los nacidos en el primer Debido a las leyes de escolaridad obligatoria. Las primeras cifras dibujan un gráfico del promedio de años de educación (variable EDUC) para todas las personas nacidas un determinado año (variable YOB para el año de nacimiento) durante un trimestre determinado (QOB). Hay una tendencia general de aumento y para detrend los datos, utilizan una media móvil (figura IV), que es donde he estado bloqueado durante los últimos 5 días. Problema En la base de datos, hay 27 variables entre las cuales v4 renombrado EDUC, v27 renombrado YOB (año de nacimiento) y v18 renombrado QOB (trimestre de nacimiento). Lo que se necesita para el promedio móvil es, para cada conjunto de personas nacidas en el año c y cuarto j, calcular el número promedio de años de educación no para este año y trimestre, sino para el trimestre inmediatamente anterior, 2 trimestres antes, Más tarde y dos trimestres más tarde (explicado p. 985 del documento). Por ejemplo, si miro a los hombres nacidos entre 1930 y 1939 como en esta figura (figura IV del artículo: onedrive. live/redirresi. Ntphoto2cpng), tengo que empezar con la cohorte nacida en 1930, 3er trimestre y calcular la Promedio de años de educación de los nacidos en 1930, 2º trimestre (nacido un cuarto antes de la cohorte dada), igual para los nacidos en 1930, 1er trimestre (nacido 2 trimestres antes de la cohorte dada), igual para los nacidos en 1930, Cuarto trimestre (una cuarta parte después de la cohorte dada), e igual para los nacidos en 1931, 1er trimestre (2 trimestres después de la cohorte dada). Entonces el promedio móvil se obtiene sumando estos 4 valores y dividiéndolos por 4. Todo este proceso debe repetirse para cada cohorte entre 1930, 3er trimestre y 1939, 2do trimestre. Do-File Para el archivo-do (onedrive. live/redirresid6919D329B3BF1EF23227ampauthkeyAO2cxEN AGpZMgsMampithintfile2cdo), comencé con el modelo de las otras figuras y traté de usar foreach loop y muchas otras cosas (no recuerdo los mensajes de error / no sabía que iba Para publicar aquí), pero todavía no averiguar cómo decir Stata: quotfor cada YOBQn. Calcular la media (EDUC) de YOBQ n-1, YOBQ n-2, YOBQ n1, YOBQ n2. Para hacer la suma y dividir por 4 después de que debería ser más fácil. Se me ha dado una pista excepcional del asistente de enseñanza: intenta el comando tssmooth. Primero tendrás que crear una variable de tiempo para la cual el comando de grupo egen será muy útil. Pero según mi investigación sobre quotegenquot y quottssetquot en los manuales de datos y en el libro Cameron amp Trivedi, quotEconometrics using Stataquot (last link): Www. stata / manuals14 / degen. Tfolder2cdta www. stata / manuals14 / gsw11.pdf www. stata / manuals14 / u11.p. Languagesyntax www. stata / manuals14 / u13.p. Susubscripciones onedrive. live/redirresi. Intfile2cpdf Debo poner los datos antes de tssmooth pero no he pasado esta etapa ya que aparentemente la notación n no está permitida con quotegenquot (error r (101) quotweights no permitidoquot) y todavía estoy muy confundido con la forma de combinar egen, tsset Y tssmooth. Sería genial si alguien pudiera ayudarme con cómo resolver los pesos no permitidos y cómo combinar los comandos quotegenquot, quottssetquot y quottssmoothquot. Muchas gracias Postscript: aquí está la base de datos por el camino onedrive. live / redirresi. Tfolder2cdta Nota: Tengo el archivo do para las figuras y tablas más importantes del artículo, excepto la tabla I pero este archivo probablemente no es necesario / solo para información: onedrive. live/redirresi. Hintfile2cdo Última edición por Amarylis Durand 25 mar 2017, 01:55. 25 Mar 2017, 22:50 Esta es una versión más corta de mi pregunta: cómo evitar el error a continuación (r451 en negrita) y cómo decirle a Stata que el promedio móvil de quotmedstay1quot debe calcularse para cada valor de tps / por YOB QOB Para todos los nacidos el mismo año y el mismo trimestre, ordenar por el aumento de años y trimestres y calcular el número promedio de años de educación por YOB QOB. Ordenar: egen medstay1 mean (EDUC) / generar una nueva variable YOBNew porque el comando yq requiere que el primer argumento esté entre 1000 y 9999 y nuestros datos para YOB en el Censo de 1980 se encuentran entre 30 y 49 en lugar de 1930 y 1949 / gen YOBNewYOB Reemplace YOBNew YOB1900 si CENSUS80 / genera una variable de tiempo que tiene el formato requerido en la ayuda tsset / gen tpsyq (YOBNew, QOB) formato tq tps / la siguiente instrucción devuelve r451. Los valores de tiempo repetidos en el panel, probablemente porque hay miles de personas nacidas durante el mismo año y el mismo trimestre, obviamente con el mismo número promedio de años de educación. Cómo evitar este error / tsset medstay1 tps / instrucción para tener el promedio móvil MA, pero quiero que el movimiento de media de medstay1 para ser calculado para cada valor de los quottps de variables de tiempo. ¿Qué comando me permitiría hacer esto o se hace automáticamente / tssmooth ma MA medstay1. Window (2 0 2) Espero que alguien pueda ayudar.

No comments:

Post a Comment