Los márgenes después de una regresión aparentemente no relacionada demasiado lenta en Stata -- stata campo con margins camp Relacionados El problema

Margins after seemingly unrelated regression too slow in Stata


1
vote

problema

Español

Tengo un conjunto de datos de 3 millones de OBS. Necesito estimar un LPM con Sur, y obtener los efectos marginales.

He utilizado gsem... vce(cluster x) , luego margins, ... force . Pero se tarda mucho tiempo en obtener el resultado de los márgenes (más de 2 horas). Necesito errores estándar para CI, por lo que no puedo usar la opción Set-Content : The process cannot access the file 'F:Event DataExchange.txt' because it is being used by another process. 2 .

¿Hay otras formas en que puedo mejorar la velocidad?

Original en ingles

I have a 3 million obs data set. I need to estimate a LPM with SUR, and get the marginal effects.

I used gsem... vce(cluster x), then margins, ... force. But it takes a very long time to get the margins result (more than 2 hours). I do need to standard errors for CI, so I can't not use the nose option.

Is there other ways I can improve the speed?

     
   
   

Lista de respuestas

0
 
vote
vote
La mejor respuesta
 

El código exacto depende de qué efectos marginales quiere decir exactamente. Puede calcular los efectos parciales con findall()9 , lo que es más probable que sea más rápido que for network in root.findall('.//{http://www.test.com/esc/esc}network'): name = network.find('{http://www.test.com/esc/esc}name') 0 .

Como ejemplo, supongamos que estimamos este modelo: model

El efecto parcial de X1 en Y se puede obtener tomando el derivado parcial con respecto a X1: derivado

Podemos obtener el efecto de x1 en Y a los medios de X2 y X3 al conectar los medios. Para hacer esto en Stata:

  for network in root.findall('.//{http://www.test.com/esc/esc}network'):     name = network.find('{http://www.test.com/esc/esc}name') 1  

Resultado:

  for network in root.findall('.//{http://www.test.com/esc/esc}network'):     name = network.find('{http://www.test.com/esc/esc}name') 2  

Como puede ver, esto es lo mismo que los resultados obtenidos por los márgenes:

  for network in root.findall('.//{http://www.test.com/esc/esc}network'):     name = network.find('{http://www.test.com/esc/esc}name') 3  

Aquí hay una comparación de velocidad que muestra que for network in root.findall('.//{http://www.test.com/esc/esc}network'): name = network.find('{http://www.test.com/esc/esc}name') 4 es 14 veces más rápido que for network in root.findall('.//{http://www.test.com/esc/esc}network'): name = network.find('{http://www.test.com/esc/esc}name') 5 En este caso con 3 millones de observaciones:

  for network in root.findall('.//{http://www.test.com/esc/esc}network'):     name = network.find('{http://www.test.com/esc/esc}name') 6  
 

Exact code depends on which marginal effects you mean exactly. You can calculate partial effects with lincom, which will most likely by faster than margins.

As an example, suppose we estimate this model: model

The partial effect of x1 on y can be obtained by taking the partial derivative with respect to x1: derivative

We can get the effect of x1 on y at the means of x2 and x3 by plugging in the means. To do this in Stata:

// Get data webuse regress  // Run the regression qui reg y c.x1##c.(x2 x3)  // Get the sample means of x2 and x3  sum x2 if e(sample), meanonly scalar m_x2 = r(mean) sum x3 if e(sample), meanonly scalar m_x3 = r(mean)  // Calculate partial effect lincom x1 + m_x2 * c.x1#c.x2 + m_x3*c.x1#c.x3 

Result:

. lincom x1 + m_x2 * c.x1#c.x2 + m_x3*c.x1#c.x3   ( 1)  x1 - .2972973*c.x1#c.x2 + 3019.459*c.x1#c.x3 = 0  ------------------------------------------------------------------------------            y |      Coef.   Std. Err.      t    P>|t|     [95% Conf. Interval] -------------+----------------------------------------------------------------          (1) |   1.409372   1.005254     1.40   0.163    -.5778255    3.396569 ------------------------------------------------------------------------------ 

As you can see, this is the same as the results obtained by margins:

. qui reg y c.x1##c.(x2 x3)  . margins, dydx(x1) atmeans  Conditional marginal effects                    Number of obs     =        148 Model VCE    : OLS  Expression   : Linear prediction, predict() dy/dx w.r.t. : x1 at           : x1              =    3.014865 (mean)                x2              =   -.2972973 (mean)                x3              =    3019.459 (mean)  ------------------------------------------------------------------------------              |            Delta-method              |      dy/dx   Std. Err.      t    P>|t|     [95% Conf. Interval] -------------+----------------------------------------------------------------           x1 |   1.409372   1.005254     1.40   0.163    -.5778256    3.396569 ------------------------------------------------------------------------------ 

Here's a speed comparison showing that lincom is 14 times faster than margins in this case with 3 million observations:

clear webuse regress expand 20271  gen lincom = . gen margins = . qui reg y c.x1##c.(x2 x3)  forval i = 1/50 {      timer clear          timer on 1     sum x2 if e(sample), meanonly     scalar m_x2 = r(mean)     sum x3 if e(sample), meanonly     scalar m_x3 = r(mean)     lincom x1 + m_x2 * c.x1#c.x2 + m_x3*c.x1#c.x3     timer off 1      timer on 2     margins, dydx(x1) atmeans     timer off 2          timer list     replace lincom = r(t1) in `i'     replace margins = r(t2) in `i' }  ttest lincom == margins di "On average, lincom is " %4.2f `=r(mu_2) / r(mu_1)' " times faster than margins with `=_N' observations" // On average, lincom is 13.88 times faster than margins with 3000108 observations 
 
 

Relacionados problema

0  Jquery no se lee correctamente hasta que el tamaño de la ventana  ( Jquery not being read properly until window resize ) 
Así que tengo una función que toma el tamaño del contenido (ancho fijo), así como los márgenes y bordes, y cambian el tamaño del contenedor para mantener siem...

121  ¿Es una mala práctica usar márgenes negativos en Android?  ( Is it a bad practice to use negative margins in android ) 
Demo de margen negativo: El escenario Vistas superpuestas al establecer un margen negativo a uno de ellos para que invaque la caja delimitadora de otra...

18  ¿Cómo evitar el doble espacio entre los artículos al usar el reciclaje con STBOGNEDGRIDLAYOUTMANOGER?  ( How to avoid double space between items when using recyclerview with staggeredgr ) 
Estoy usando RecicyLView con STBOGNEDGRIDLAYOUTMANOGER para hacer una lista de dos columnas. Pero cómo establecer un margen derecho entre la columna izquierda...

28  Lista de cajones de navegación Android para abrir la mitad exacta de la pantalla para toda la pantalla del dispositivo  ( Android set navigation drawer list to open exact half of the screen for all devi ) 
Quiero abrir la lista de cajones a la mitad de la pantalla para todo dispositivo diferente. He intentado valores para 200dp layout_margineleft o 100dp a la dr...

1  YUI, ¿cómo eliminar los márgenes para un diseño de 2 columnas?  ( Yui how to remove the margins for a 2 column layout ) 
Quiero que las 2 columnas toquen, es decir. Retire los márgenes, ¿cómo puedo hacer esto? Mi código: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Trans...

4  Internet Explorer margen negativo que no funciona como se esperaba  ( Internet explorer negative margin not working as expected ) 
El tipo que creó el sitio web para mi iglesia dijo que no hay forma de solucionar el problema y que no debemos preocuparnos por eso. Pero creo que está equivo...

1  ¿Por qué mi página está alineando a la izquierda en iPad / iPhone?  ( Why is my page aligning to the left on ipad iphone ) 
Estoy usando xjc h**p://schemas.opengis.net/ows/1.1.0/owsGetCapabilities.xsd 6 para centrar a un div dentro de mi cuerpo. Esto funciona muy bien en los nav...

0  CSS - Estilo específico para un solo elemento  ( Css style specific to single element ) 
Estoy usando jQuery para agregar una clase a algunos elementos. No soy nuevo para agregar clases, ni quitarlas. Pero todavía estoy un tanto intermedio con e...

1  C # Excel Print Martins  ( C sharp excel print margins ) 
Quiero ajustar la configuración de impresión de mi archivo de Excel que genere con un programa que hice en C #. Quiero que la configuración sea: 'Página adecu...

4  Cambio de margen para modo de texto EMACS  ( Changing margin for emacs text mode ) 
La única forma en que encontré cambiar los márgenes en Emacs a mi gusto sin cosas que actúan divertido es esto: (add-hook 'window-configuration-change-hook...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos