tablas regresion lineal histograma graficos español eliminar econometria comandos matrix regression stata

matrix - regresion - manual stata econometria



Stata: combina coeficientes/errores estándar de varias regresiones en un solo conjunto de datos(el número de variables puede variar) (1)

Ya he hecho una pregunta sobre el almacenamiento de coeficientes y errores estándar de varias regresiones en un solo conjunto de datos.

Permítanme reiterar el objetivo de mi pregunta inicial:

Me gustaría ejecutar varias regresiones y almacenar sus resultados en un archivo DTA que luego podría usar para el análisis. Mis limitaciones son:

  1. No puedo instalar módulos (estoy escribiendo código para otras personas y no estoy seguro de qué módulos han instalado)
  2. Algunos de los regresores son variables de factores.
  3. Cada regresión difiere solo por la variable dependiente, por lo que me gustaría almacenar eso en el conjunto de datos final para hacer un seguimiento de a qué regresión corresponden los coeficientes / varianzas.

La solución sugerida por Roberto Ferrer estaba funcionando bien en mis datos de prueba, pero resulta que no funciona tan bien en otro tipo de datos. La razón es que mi muestra cambia ligeramente de una regresión a la siguiente, y alguna variable de factor no toma el mismo número de valores en cada regresión. Esto da como resultado que los efectos fijos (creados sobre la marcha usando i.myvar como regresor) no tengan la misma cardinalidad.

Digamos que decido poner los efectos fijos de año (como en: interceptos específicos de un año) utilizando i.year pero en una regresión no hay observación para el año 2006. Eso significa que esta regresión particular tendrá un regresor menos (el maniquí correspondiente al año == 2006 no se crea), y como resultado una matriz más pequeña que almacena los coeffs.

Esto da como resultado un error de conformabilidad cuando se intenta apilar las matrices juntas.

Me preguntaba si había una manera de hacer que la solución inicial sea robusta a un número variable de regresores. (¿Tal vez guardar cada regresión como dta, luego fusionar?)

Todavía estoy sujeto a la restricción de que no puedo confiar en paquetes externos.


Puede seguir la estrategia de append conjuntos de datos, haciendo pequeños cambios al código en la pregunta que hace referencia:

clear set more off save test.dta, emptyok replace foreach depvar in marriage divorce { // test data sysuse census, clear generate constant = 1 replace marriage = . if region == 4 // regression reg `depvar'' popurban i.region constant, robust noconstant // regressions matrix result_matrix = e(b)/vecdiag(e(V)) // grab coeffs and their variances in a 2xK matrix matrix rownames result_matrix = `depvar''_b `depvar''_v // add rownames to the two extra rows // get original column names of matrix local names : colfullnames result_matrix // get original row names of matrix (and row count) local rownames : rowfullnames result_matrix local c : word count `rownames'' // make original names legal variable names local newnames foreach name of local names { local newnames `newnames'' `=strtoname("`name''")'' } // rename columns of matrix matrix colnames result_matrix = `newnames'' // from matrix to dataset clear svmat result_matrix, names(col) // add matrix row names to dataset gen rownames = "" forvalues i = 1/`c'' { replace rownames = "`:word `i'' of `rownames''''" in `i'' } // append append using "test.dta" save "test.dta", replace } // list order rownames list, noobs

El resultado es lo que quieres Sin embargo, el problema es que el conjunto de datos se vuelve a cargar cada vez que pasa el ciclo; carga datos tantas veces como regresiones que estime.

Es posible que desee echar un vistazo a la post y verificar si puede administrar una solución más eficiente. statsby también podría funcionar, pero necesita encontrar una forma inteligente de cambiar el nombre de las variables almacenadas.