Modèle mixte REML : message d'erreur "Impossible d'allouer suffisamment de mémoire"Salut,
Je reçois un message d'erreur "Impossible d'allouer de la mémoire" lorsque j'essaie d'effectuer REML (Random Effects). Pourriez-vous s'il vous plaît m'aider à comprendre ce qui ne va pas?
- Mon jeu de données a une taille de 1,7 Mo, avec 27 000 lignes et 7 colonnes.
- Ma machine est Win 10, 12 Go de RAM et 88 Go d'espace libre sur le disque dur.
- Mon modèle est également assez simple (seulement trois variables).
- J'utilise JMP 13.2.1
Je m'attendais à ce que cette capacité de calcul supplémentaire soit plus que suffisante pour cette tâche relativement petite. Je pense qu'il doit y avoir un problème avec mes paramètres JMP.
Pourriez-vous s'il vous plaît m'aider à comprendre cela?
Merci d'avance!
Re : Modèle mixte REML : message d'erreur "Impossible d'allouer suffisamment de mémoire"Merci. C'est complètement nouveau pour moi. Cependant, j'ai vérifié à nouveau la facture et les petits caractères indiquent 32 bits. C'était mon erreur que je n'ai pas vu cela plus tôt.
Je pense que cela conclut le problème pour moi. J'apprécie sincèrement toute l'aide que vous avez généreusement offerte.Le simple fait de savoir que ce n'était pas une erreur de méthodologie fait une grande différence pour mon moral.
Bien que je ne puisse plus utiliser JMP pour la manette des gaz sur ma version, j'aurai toujours la plus grande gratitude pour vous tous.
Merci.
Re : Modèle mixte REML : message d'erreur "Impossible d'allouer suffisamment de mémoire"Vous avez la version de licence mono-utilisateur de JMP qui n'est que de 32 bits. Notre version de licence annuelle est la seule version disponible en 64 bits.
Re : Modèle mixte REML : message d'erreur "Impossible d'allouer suffisamment de mémoire"Vous devriez probablement contacter le support technique de JMP. Lors de l'installation de JMP, il devrait automatiquement vérifier le "bitness" de votre machine et installer la bonne version. Votre copie de Windows 10 est-elle 64 bits ? C'est peut-être ce qui est vérifié pour déterminer le "bitness" de JMP à installer.
Re : Modèle mixte REML : message d'erreur "Impossible d'allouer suffisamment de mémoire"
@Dan_Obermiller
Oui. Vous avez réussi, merci.JMP a été installé en tant que 32 bits.
J'ai essayé de désinstaller/réinstaller. Pourtant, il se présente toujours comme 32 bits sans possibilité de choisir 64 bits. (grisé dans la capture d'écran ci-dessous) . Toutes les suggestions seraient très appréciées.

------
@ih
Je ne peux pas vous remercier assez. À votre avis, j'ai ouvert le gestionnaire de tâches sur un deuxième écran et je l'ai observé pendant que j'exécutais le modèle. Il n'a même pas capté 50% de l'utilisation de la mémoire ou du processeur. Pourtant, je regardais les options d'extension sur Amazon et disais adieu au chèque de paie avant que nous sachions que c'est le truc 32 bits 
Re : Modèle mixte REML : message d'erreur "Impossible d'allouer suffisamment de mémoire"J'espère que 32 bits est le problème, mais des choses amusantes semblent se produire lorsque vous approchez de la limite de mémoire de votre ordinateur. Une fois, j'ai ajouté de la mémoire à une machine qui ne pouvait pas terminer une analyse et après la mise à niveau, l'analyse s'est terminée en utilisant moins de mémoire que celle initialement installée.Peut-être que JMP consomme momentanément plus de 8 Go lors de la configuration de l'analyse.
Pour confirmer que vous manquez réellement de mémoire, vous pouvez essayer d'augmenter progressivement le nombre de lignes dans la table de données et de regarder le Gestionnaire des tâches de Windows pour voir à quel point vous vous rapprochez de 100 % d'utilisation de la mémoire physique.
Si vous manquez de mémoire, vous n'êtes pas totalement malchanceux, vous pouvez faire votre analyse sur des sous-ensembles du tableau plus grand, puis faire la moyenne des résultats.Chaque itération pourrait ressembler à ceci :
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 : Modèle mixte REML : message d'erreur "Impossible d'allouer suffisamment de mémoire"Vous avez fourni les spécifications de votre machine, mais utilisez-vous JMP 64 bits ? À l'occasion, les utilisateurs peuvent utiliser JMP 32 bits. L'utilisation de logiciels 32 bits uniquement peut limiter la quantité de mémoire à laquelle votre ordinateur peut accéder, quelle que soit la quantité installée.
Re : Modèle mixte REML : message d'erreur "Impossible d'allouer suffisamment de mémoire"Ouais. C'est tout à fait ça. Je dois dire que je suis impressionné par la façon dont vous pourriez le recréer par un script. Respects!
J'ai exécuté le modèle et j'obtiens à nouveau le même message d'erreur :

Avant de commencer l'analyse, mon ordinateur disposait d'environ 8 Go de RAM libre. Si la même expérience n'a consommé que 6 Go de votre côté, pourquoi JMP renvoie-t-il un tel message d'erreur ici ?Y a-t-il une autre mesure de mémoire sur laquelle je devrais garder un œil ?
Merci beaucoup!
Re : Modèle mixte REML : message d'erreur "Impossible d'allouer suffisamment de mémoire"Vous avez une variable de plus que moi, mais j'ai quand même terminé ce que je pense être une analyse similaire en 12 minutes avec un peu plus de 6 Go de mémoire.Cette table ressemble-t-elle à la vôtre maintenant ?
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 oui, cela devrait être la même analyse que vous avez faite :
//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 : Modèle mixte REML : message d'erreur "Impossible d'allouer suffisamment de mémoire"Merci beaucoup! Le script fonctionne assez bien ici. Je suis impressionné!
Cependant, permettez-moi de souligner que mes données sont de 5400 magasins, chacun avec 5 observations, soit 27 000 lignes. Je joins un exemple de son apparence (premiers obs).À chaque période, nous prenons note du type de gestion de ce magasin.Maintenant, je veux modéliser le coût en tant que variable de réponse, tandis que le type de gestion en tant que prédicteur, sur les cinq périodes. Comme mentionné ci-dessus, nous avons 5400 de ces magasins, soit 27 000 obs. Je crois comprendre qu'il s'agit d'un cas de mesures répétées.
C'est ainsi que je le fais via l'interface graphique.

Et voici le message d'erreur qu'il affiche lors de l'utilisation des données complètes :

Je vous remercie encore pour votre temps et votre aide.
Re : Modèle mixte REML : message d'erreur "Impossible d'allouer suffisamment de mémoire"Le script ci-dessous recrée-t-il votre analyse, sauf avec moins de magasins ?Sous Windows, JMP consommait 5,6 Go de mémoire et prenait 6 minutes et 11 secondes sur un processeur pour analyser 60 000 lignes (600 magasins).
| Lignes | Mémoire consommée (Mo) |
| 10 000 | 650 |
| 20 000 | 1 272 |
| 30 000 | 2 294 |
| 40 000 | 3 775 |
| 50 000 | 5 592 |
| 60 000 | 6 662 |
Scénario:
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 : Modèle mixte REML : message d'erreur "Impossible d'allouer suffisamment de mémoire"Salut,
Merci beaucoup! Je m'excuse pour le retard de réponse. Perdu dans l'abîme de résoudre ce problème et sur le point de perdre espoir.
Le modèle et les données sont similaires à celui-ci proposé par JMP.Suivant les spécificités de l'exemple, mes données ont un peu plus de 5400 magasins, chacun avec 5 observations (pour le temps).
Comme dans l'exemple, ma variable prédictive et l'effet aléatoire sont catégoriels (1, 2) imbriqués dans une autre variable catégorielle pour l'emplacement (1, 2). Le temps est en cinq intervalles (d'où les cinq observations par sujet).
J'ai suivi les mêmes étapes que l'exemple JMP, mais j'obtiens toujours le message d'erreur. J'ai même essayé sans l'imbrication et l'erreur revient.
Merci encore!
Re : Modèle mixte REML : message d'erreur "Impossible d'allouer suffisamment de mémoire"Pouvez-vous en dire plus sur le modèle que vous installez ? Avez-vous une variable catégorielle comme effet aléatoire ? Si oui, combien de niveaux a-t-il ?
Phil