REML 混合モデル: 「十分なメモリを割り当てることができません」エラー メッセージやあ、
REML (ランダム効果) を実行しようとすると、「メモリを割り当てられません」というエラー メッセージが表示されます。 何が問題なのかを理解するのを手伝っていただけますか?
- 私のデータセットのサイズは 1.7 MB、行数 27 K、列数 7 です。
- 私のマシンは Win 10 、12 GB RAM、88 GB の HDD 空き容量です。
- 私のモデルも非常に単純です (変数が 3 つだけ)。
- JMP13.2.1を使用しています
私の期待は、この追加の計算能力は、この比較的小さなタスクには十分すぎるはずであるということでした。 JMP の設定に何か問題があるのではないかと考えています。
これを理解するのを手伝っていただけますか?
前もって感謝します!
Re: REML 混合モデル: 「十分なメモリを割り当てることができません」エラー メッセージありがとう。 これは私にとってまったく新しいことです。 ただし、請求書をもう一度確認したところ、細字には 32 ビットと記載されていました。 これを先に見れなかったのは私の間違いでした。
これで私にとっての問題は終わると思います。 皆様の寛大なご支援に心より感謝申し上げます。それが方法論の間違いではなかったと知るだけで、私の士気は大きく変わります。
私のバージョンではこれ以上スロットルに JMP を使用することはできませんが、皆さんには常に最大限の感謝の気持ちを持ち続けます。
ありがとう。
Re: REML 混合モデル: 「十分なメモリを割り当てることができません」エラー メッセージJMP のシングルユーザー ライセンス バージョンは 32 ビットのみです。 年間ライセンス バージョンは、64 ビットで利用できる唯一のバージョンです。
Re: REML 混合モデル: 「十分なメモリを割り当てることができません」エラー メッセージおそらく JMP テクニカル サポートに連絡する必要があります。 JMP をインストールするとき、マシンの「ビット数」が自動的にチェックされ、適切なバージョンがインストールされます。 お使いの Windows 10 は 64 ビットですか? おそらくそれは、インストールする JMP の「ビット数」を決定するためにチェックされるものです。
Re: REML 混合モデル: 「十分なメモリを割り当てることができません」エラー メッセージ
@Dan_Obermiller
はい。 うまくいきました、ありがとう。JMP は 32 ビットとしてインストールされました。
アンインストール/再インストールを試みました。 それでも、64 ビットを選択するオプションはなく、依然として 32 ビットとして表示されます。 (下のスクリーンショットではグレー表示されています)。 ご提案をいただければ幸いです。

------
@ih
いくら感謝してもしきれません。 おっしゃるとおり、私は 2 番目の画面でタスク マネージャーを開き、モデルを実行しながらそれを観察しました。 メモリまたは CPU 使用率の 50% も捕捉できませんでした。 それでも、私は Amazon の拡張オプションに注目し、それが 32 ビットであることを知る前に、給料に別れを告げていました 
Re: REML 混合モデル: 「十分なメモリを割り当てることができません」エラー メッセージ32 ビットが問題であれば良いのですが、コンピュータのメモリ制限に近づくと、面白いことが起こるようです。 以前、解析を完了できなかったマシンにメモリを追加したことがありますが、アップグレード後は、最初にインストールされていたメモリよりも少ないメモリを使用して解析が完了しました。おそらく、分析のセットアップ時に JMP が一時的に 8 GB 以上を消費する可能性があります。
実際にメモリが不足していることを確認するには、データ テーブルの行数を徐々に増やし、Windows タスク マネージャを監視して、物理メモリの使用率が 100% にどれだけ近づくかを確認します。
メモリが不足している場合でも、まったく運が悪いわけではありません。より大きなテーブルのサブセットに対して分析を実行し、結果を平均することができます。各反復は次のようになります。
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: REML 混合モデル: 「十分なメモリを割り当てることができません」エラー メッセージマシンの仕様を指定しましたが、64 ビット JMP を使用していますか? 場合によっては、32 ビット JMP を使用する人もいるかもしれません。 32 ビット ソフトウェアのみを使用すると、インストールされているメモリの量に関係なく、コンピュータがアクセスできるメモリの量が制限される可能性があります。
Re: REML 混合モデル: 「十分なメモリを割り当てることができません」エラー メッセージはい。 それはまさにその通りです。 それをスクリプトでどのように再現できるかに感銘を受けたと言わざるを得ません。 尊敬します!
モデルを実行しましたが、同じエラー メッセージが再び表示されます。

分析を開始する前、私のコンピューターには約 8 GB の空き RAM がありました。 同じ実験があなたの側で 6 GB しか消費しなかったのに、なぜ JMP はここでそのようなエラー メッセージを返すのでしょうか?他に注意すべき記憶対策はありますか?
どうもありがとう!
Re: REML 混合モデル: 「十分なメモリを割り当てることができません」エラー メッセージあなたは私より変数が 1 つ多くありますが、それでも 6 GB 強のメモリを使用して、同様の分析と思われるものを 12 分で完了しました。このテーブルは今あなたのものに似ていますか?
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 )
)
)
)
);そうであれば、これはあなたが行ったのと同じ分析になるはずです。
//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: REML 混合モデル: 「十分なメモリを割り当てることができません」エラー メッセージどうもありがとう! ここでのスクリプトは非常にスムーズに実行されます。 私が感銘を受けた!
ただし、私のデータは 5,400 店舗であり、それぞれの店舗に 5 つの観測値があり、27,000 行であることを指摘しておきます。 どのように見えるかの例を添付します (最初のいくつかのオブジェクト)。それぞれの時代において、その店がどのような経営をしていたのかに注目します。ここで、5 つの期間にわたって、コストを応答変数として、管理の種類を予測変数としてモデル化したいと考えています。 上で述べたように、これらのストアが 5,400 あるため、obs は 27,000 になります。 これは繰り返しの措置であるというふうに理解をしております。
これは GUI を使用して行う方法です。

そして、これは本格的なデータを使用するときに表示されるエラー メッセージです。

お時間を割いてご協力いただきましたことに改めて感謝いたします。
Re: REML 混合モデル: 「十分なメモリを割り当てることができません」エラー メッセージ以下のスクリプトは、店舗数を減らして分析を再作成しますか?Windows では、JMP は 5.6 GB のメモリを消費し、1 つのプロセッサで 60,000 行 (600 ストア) を分析するのに 6 分 11 秒かかりました。
| 行 | 消費メモリ(MB) |
| 10,000 | 650 |
| 20,000 | 1,272 |
| 30,000 | 2,294 |
| 40,000 | 3,775 |
| 50,000 | 5,592 |
| 60,000 | 6,662 |
脚本:
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: REML 混合モデル: 「十分なメモリを割り当てることができません」エラー メッセージやあ、
どうもありがとうございます! 返信が遅くなり申し訳ございません。 解決の深淵に迷い込み、希望を失いかけている。
モデルとデータは次のようになりますこれですJMP によって提供されます。例の詳細に従って、私のデータには 5400 を少し超える店舗があり、それぞれに 5 つの観測値 (時間に対して) が含まれています。
例のように、私の予測子変数と変量効果は、位置 (1, 2) の別のカテゴリカル変数にネストされたカテゴリカル (1, 2) です。 時間は 5 つの間隔で表されます (したがって、被験者ごとに 5 つの観測値が得られます)。
JMP の例と同じ手順に従いましたが、常にエラー メッセージが表示されます。 ネストなしで試してみましたが、再びエラーが発生します。
再度、感謝します!
Re: REML 混合モデル: 「十分なメモリを割り当てることができません」エラー メッセージあなたがフィッティングしているモデルについて詳しく教えていただけますか? 変量効果としてカテゴリ変数はありますか? もしそうなら、レベルはいくつありますか?
フィル