Modelo mixto de REML: mensaje de error "No se puede asignar suficiente memoria"Hola,
Recibo un mensaje de error de "No se puede asignar memoria" al intentar realizar REML (efectos aleatorios). ¿Podría por favor ayudarme a averiguar qué está mal?
- Mi conjunto de datos tiene un tamaño de 1,7 MB, con 27 K filas y 7 columnas.
- Mi máquina es Win 10, 12 GB de RAM y 88 GB de espacio libre en el disco duro.
- Mi modelo también es bastante simple (solo tres variables).
- Estoy usando JMP 13.2.1
Mi expectativa era que esta capacidad computacional adicional debería ser más que suficiente para esta tarea relativamente pequeña. Estoy pensando que debe haber algún problema con mi configuración de JMP.
¿Podría por favor ayudarme a resolver esto?
¡Gracias de antemano!
Re: Modelo mixto de REML: mensaje de error "No se puede asignar suficiente memoria"Gracias. Esto es completamente nuevo para mí. Sin embargo, revisé la factura nuevamente y la letra pequeña dice 32 bits. Fue mi error que no pude ver esto antes.
Creo que esto concluye el problema para mí. Agradezco sinceramente toda la ayuda que todos ustedes han ofrecido generosamente.El solo hecho de saber que no fue un error en la metodología hace una gran diferencia en mi moral.
Aunque ya no podré usar JMP para acelerar mi versión, siempre tendré la mayor gratitud por todos ustedes.
Gracias.
Re: Modelo mixto de REML: mensaje de error "No se puede asignar suficiente memoria"Tiene la versión de licencia de usuario único de JMP, que es solo de 32 bits. Nuestra versión de licencia anual es la única versión disponible en 64 bits.
Re: Modelo mixto de REML: mensaje de error "No se puede asignar suficiente memoria"Probablemente debería ponerse en contacto con el soporte técnico de JMP. Al instalar JMP, debería verificar automáticamente el "bitness" de su máquina e instalar la versión adecuada. ¿Tu copia de Windows 10 es de 64 bits? Tal vez eso es lo que se comprueba para determinar el "bitness" de JMP a instalar.
Re: Modelo mixto de REML: mensaje de error "No se puede asignar suficiente memoria"
@Dan_Obermiller
Sí. Lo lograste, gracias.JMP se instaló como 32 bits.
He intentado desinstalar/reinstalar. Sin embargo, todavía se presenta como 32 bits sin la opción de elegir 64 bits. (en gris en la captura de pantalla a continuación) . Cualquier sugerencia sería muy apreciada.

------
@ih
No puedo agradecerte lo suficiente. A su punto, abrí el Administrador de tareas en una segunda pantalla y lo observé mientras ejecutaba el modelo. Ni siquiera capturó el 50% de la memoria o el uso de la CPU. Aún así, estaba mirando las opciones de expansión en Amazon y me despedí del cheque de pago antes de que supiéramos que es la cosa de 32 bits 
Re: Modelo mixto de REML: mensaje de error "No se puede asignar suficiente memoria"Con suerte, el problema es el de 32 bits, pero parecen suceder cosas divertidas cuando te acercas al límite de memoria de tu computadora. Una vez agregué memoria a una máquina que no pudo completar un análisis y, después de actualizar, el análisis se completó usando menos memoria de la que se instaló inicialmente.Quizás JMP consuma momentáneamente más de 8 GB al configurar el análisis.
Para confirmar que realmente se quedó sin memoria, puede intentar aumentar gradualmente el número de filas en la tabla de datos y ver el Administrador de tareas de Windows para ver qué tan cerca está del 100 % del uso de la memoria física.
Si tiene poca memoria, no está totalmente de suerte, puede hacer su análisis en subconjuntos de la tabla más grande y luego promediar los resultados.Cada iteración podría verse así:
dt = current data table();
//Make a list of store numbers
FilterStoreTabluate = dt << Tabulate(
Add Table( Row Table( Grouping Columns( :Store ) ) )
);
//Get store numbers as data table, close tablate
dtFilterStore = FilterStoreTabluate << Make Into Data Table;
FilterStoreTabluate << Close Window();
//Make a column with random numbers
dtFilterStore << New Column(
"Rank",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( Random Uniform() )
);
//Select 2500 stores
dtFilterStore << New Column(
"Keep",
Numeric,
"Nominal",
Format( "Best", 12 ),
Formula( Col Rank( :Rank ) < 2500 ),
Set Selected
);
//Join the list to your original data table
dtSubsetWhole = dt << Join(
With( dtFilterStore ),
Select(
:Store,
:Time,
:Geo,
:Type of Management,
:Base Cost,
:Cost
),
SelectWith( :Keep ),
By Matching Columns( :Store = :Store ),
Drop multiples( 0, 0 ),
Include Nonmatches( 1, 0 ),
Preserve main table order( 1 )
);
//close the list of stores
dtFilterStore << Close Window();
//Select only stores selected to 'keep'
dtSubsetFilter = dtSubsetWhole << Data Filter(
Location( {938, 189} ),
Add Filter( columns( :Keep ), Where( :Keep == 1 ) )
);
//Make data table with only stores you want to keep. Simply excluding where Keep = 0 might work as well.
dtSubset = dtSubsetFilter << Show Subset;
//Run the fit modelRe: Modelo mixto de REML: mensaje de error "No se puede asignar suficiente memoria"Proporcionó las especificaciones de su máquina, pero ¿está utilizando JMP de 64 bits? En ocasiones, las personas pueden estar usando JMP de 32 bits. Usar solo software de 32 bits puede limitar la cantidad de memoria a la que puede acceder su computadora, a pesar de la cantidad instalada.
Re: Modelo mixto de REML: mensaje de error "No se puede asignar suficiente memoria"Sí. Eso es bastante parecido. Debo decir que estoy impresionado de cómo podrías recrearlo con un guión. ¡Saludos!
Ejecuté el modelo y recibo el mismo mensaje de error nuevamente:

Antes de comenzar el análisis, mi computadora tenía alrededor de 8 GB de RAM libres. Si el mismo experimento consumió solo 6 GB de su parte, ¿por qué JMP devuelve este mensaje de error aquí?¿Hay otra medida de memoria que deba vigilar?
¡Muchas gracias!
Re: Modelo mixto de REML: mensaje de error "No se puede asignar suficiente memoria"Tienes una variable más que yo, pero aun así completé lo que creo que es un análisis similar en 12 minutos con poco más de 6 GB de memoria.¿Esta mesa se parece a la tuya ahora?
Random Reset(123);
//Make some data
dt = New Table( "RandomEffect Example",
Add Rows( 27000 ), //Set the number of rows here
New Column(
"Store",
Character,
"Nominal",
Format( "Best", 12 ),
Formula( Char( Sequence( 1, 5500, 1, 5 ) ) )
),
New Column(
"Time",
Numeric,
"Ordinal",
Format( "Best", 12 ),
Formula( Sequence( 1, 5, 1, 1 ) )
),
New Column(
"Geo",
Numeric,
"Nominal",
Format( "Best", 12 ),
Formula( If( Random Normal() > 0, 1, 2 ) )
),
New Column(
"Type of Management",
Numeric,
"Nominal",
Format( "Best", 12 ),
Formula( If( Random Normal() > 0, 1, 2 ) )
),
New Column(
"Base Cost",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula(
If( Row() == 1 | :Store != Lag( :Store, 1 ),
Round( Random Uniform( 1000, 2000 ), 0 ),
Lag( :Base Cost, 1 )
)
)
),
New Column(
"Cost",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula(
Round(
:Base Cost + If( :Type of Management == 1,
50 + 50 * :Time,
-50 * :Time
) + If( :Geo == 1,
500 + 10 * :Time,
-10 * :Time
) + Random Normal( 0, 200 )
)
)
)
);Si es así, este debería ser el mismo análisis que hiciste:
//Analysis
dt << Fit Model(
Y( :Cost ),
Effects( :Time, :Type of Management, :Time * :Type of Management ),
Random Effects( :Store[:Geo] ),
NoBounds( 1 ),
Personality( "Standard Least Squares" ),
Method( "REML" ),
Emphasis( "Minimal Report" ),
Run(
:Cost << {Summary of Fit( 1 ), Analysis of Variance( 0 ),
Parameter Estimates( 1 ), Lack of Fit( 0 ), Plot Actual by Predicted( 0 ),
Plot Regression( 0 ), Plot Residual by Predicted( 0 ),
Plot Effect Leverage( 0 )}
)
);Re: Modelo mixto de REML: mensaje de error "No se puede asignar suficiente memoria"¡Muchas gracias! El script funciona bastante bien aquí. ¡Estoy impresionado!
Sin embargo, permítame señalar que mis datos son 5400 tiendas, cada una con 5 observaciones, eso es 27K filas. Adjunto un ejemplo de cómo se ve (primeras observaciones).En cada periodo de tiempo, tomamos nota del tipo de gestión que tuvo esa tienda.Ahora quiero modelar el costo como variable de respuesta, mientras que el tipo de gestión como predictor, durante los cinco períodos de tiempo. Como se mencionó anteriormente, tenemos 5400 de estas tiendas, por lo tanto, 27K obs. Tengo entendido que este es un caso de medidas repetidas.
Así es como lo estoy haciendo a través de la GUI.

Y este es el mensaje de error que aparece al usar los datos completos:

Te agradezco de nuevo tu tiempo y ayuda.
Re: Modelo mixto de REML: mensaje de error "No se puede asignar suficiente memoria"¿La siguiente secuencia de comandos recrea su análisis excepto con menos tiendas?En Windows, JMP consumió 5,6 GB de memoria y tardó 6 minutos y 11 segundos en un procesador para analizar 60 000 filas (600 tiendas).
| filas | Memoria consumida (MB) |
| 10,000 | 650 |
| 20,000 | 1,272 |
| 30,000 | 2,294 |
| 40.000 | 3,775 |
| 50,000 | 5,592 |
| 60.000 | 6,662 |
Guion:
Random Reset(123);
//Make some data
dt = New Table( "RandomEffect Example",
Add Rows( 5400 ), //Set the number of rows here
New Column(
"Store",
Numeric,
"Nominal",
Format( "Best", 12 ),
Formula( Sequence( 1, 5500, 1, 10 ) )
),
New Column(
"Type",
Numeric,
"Nominal",
Format( "Best", 12 ),
Formula( Sequence( 0, 1, 1, 5 ) )
),
New Column(
"Time",
Numeric,
"Ordinal",
Format( "Best", 12 ),
Formula( Sequence( 1, 5, 1, 1 ) )
),
New Column(
"Base Sales",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula(
If( Row() == 1 | :Store != Lag( :Store, 1 ),
Round( Random Uniform( 1000, 2000 ), 0 ),
Lag( :Base Sales, 1 )
)
)
),
New Column(
"Sales",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula(
Round(
:Base Sales + If( :Type == 1,
50 + 50 * :Time,
-50 * :Time
) + Random Normal( 0, 200 )
)
)
)
);
//Analysis
dt << Fit Model(
Y( :Sales ),
Effects( :Type, :Time, :Type * :Time ),
Random Effects( :Store[:Type] ),
NoBounds( 1 ),
Personality( "Standard Least Squares" ),
Method( "REML" ),
Emphasis( "Minimal Report" ),
Run(
:Sales << {Summary of Fit( 1 ), Analysis of Variance( 0 ),
Parameter Estimates( 1 ), Lack of Fit( 0 ), Plot Actual by Predicted( 0 ),
Plot Regression( 0 ), Plot Residual by Predicted( 0 ),
Plot Effect Leverage( 0 ), {:Type * :Time << {LSMeans Plot( 1 )}}}
)
);
Re: Modelo mixto de REML: mensaje de error "No se puede asignar suficiente memoria"Hola,
¡Muchas gracias! Pido disculpas por la demora en la respuesta. Perdido en el abismo de resolver esto y al borde de perder la esperanza.
El modelo y los datos son similares a Éste ofrecido por JMP.Siguiendo los detalles del ejemplo, mis datos tienen un poco más de 5400 tiendas, cada una con 5 observaciones (por tiempo).
Como en el ejemplo, mi variable predictora y el efecto aleatorio son categóricos (1, 2) anidados en otra variable categórica de ubicación (1, 2). El tiempo está en cinco intervalos (de ahí las cinco observaciones por sujeto).
Seguí los mismos pasos que el ejemplo de JMP, pero siempre recibo el mensaje de error. Incluso probé sin el anidamiento y el error vuelve a aparecer.
¡Gracias de nuevo!
Re: Modelo mixto de REML: mensaje de error "No se puede asignar suficiente memoria"¿Puede decir más sobre el modelo que está ajustando? ¿Tienes una variable categórica como efecto aleatorio? Si es así, ¿cuántos niveles tiene?
phil