No.15899 メモリーのエラーについて  【統計大好き】 2011/12/08(Thu) 04:34

こんばんは。

Rを使っているのですが,

エラー: サイズ 219.9 Mb のベクトルを割り当てることができません

というエラーがでてしまいました。
おそらく,メモリー数が多すぎるからだと思います。
しかし,これを改善することができません。
どうすれよいか分かる方がいらっしゃいましたら,教えていただけませんでしょうか?
お願い致します。

No.15900 Re: メモリーのエラーについて  【青木繁伸】 2011/12/08(Thu) 08:34

Windows ですか?
RjpWiki http://www.okada.jp.org/RWiki/ の「単語検索」で,「メモリー」と「割り当て」で and 検索すればいくつか解決策が示されています。

No.15903 Re: メモリーのエラーについて  【統計大好き】 2011/12/08(Thu) 14:26

ご返信ありがとうございます。
書いてあったように,メモリーと割り当てで検索しましたが,ありませんでしたと結果がでてしまいました。
私は何か間違えたのでしょうか?

No.15905 Re: メモリーのエラーについて  【青木繁伸】 2011/12/08(Thu) 14:39

単語検索のリンクは上の方にあるやつですよ。
検索欄に
メモリー 割り当て
のように,二語の間に半角を置いて書きましたか?
ユーザ名とパスワードを入力して下さいというウインドウでは,「ユーザ名」欄に -0.889 を入力して,OK をクリックするんですよ。「そもそも,そんなウインドウ出ないんだけど」ということなら,間違えたところをクリックしているんですね。
下の方の Google 検索欄じゃないですよ。


No.15906 Re: メモリーのエラーについて  【青木繁伸】 2011/12/08(Thu) 14:42

全角空白で区切ろうなんてのは,間違った考え方
英数記号は半角で入力するのが常識
半角空白は1個でなくてもかまわない


No.15907 Re: メモリーのエラーについて  【青木繁伸】 2011/12/08(Thu) 21:51

後進のため,どこで間違えていたか教えてくださいね。

No.15909 メモリーのエラーについて  【統計大好き】 2011/12/09(Fri) 01:25

ご返信ありがとうございます。
結局半角にしていなかったミスでした。
しかし,色々と探しましたが,ダメでした。
今,変数選択をしたく思っているのですが,メモリー不足なので,少し変数を少なくし,その中で変数選択をし,それに無くしていた変数を付け加えてもう一度変数選択しようと思うのですが,それでかまわないでしょうか?
それとも,あまり影響を与えていないもの(p値の大きいもの)を削除して変数選択した方がよいでしょうか?

No.15910 Re: メモリーのエラーについて  【青木繁伸】 2011/12/09(Fri) 06:41

> 色々と探しましたが,ダメでした。

どんなふうにダメだったのですか?あなたの OS が何なのかもお返事がありませんし,コメントするには情報不足です。

同 じように膨大なデータを重回帰分析しようとしていた例があったでしょう?あなたの場合も同じなんですか?数千の変数で数万件のデータ?あそこにも書いて あったでしょうけど,数万件のデータを全部使う必要はないだろうと言うことですけど。分析に使用する変数の方を減らして分析するよりは,件数を減らして (データをサンプリングして)分析する方がよいでしょう。サンプリングを変えて何回か分析し,共通して選択される変数(積集合。あるいは和集合)を使って 全件で分析してみるなどのような対処をすると良いでしょう。

No.15911 Re: メモリーのエラーについて  【統計大好き】 2011/12/09(Fri) 13:06

ご返信ありがとうございます。

OSを書くのを忘れていました。WindowsVistaです。

僕の場合はデータ数が多いのではありません。
総あたりを行って,変数を選択しようとしていますが,Rで行うと変数の数が23個で行うと,エラーがでてしまったため,一度全てで重回帰させて,それぞれのp値の中で高い3つ程を減らして,変数の数を減らして総あたりをさせるとうまくいきました。

これでよいのでしょうか?

No.15912 Re: メモリーのエラーについて  【統計大好き】 2011/12/09(Fri) 13:08

追加

エラーについての追加です。

メモリー数が元々1014だったので,memory.limitでメモリー数を最大の4095まで増やしたのですが,うまくいかなかったので,もうどうすることもできませんでした。

No.15913 Re: メモリーのエラーについて  【青木繁伸】 2011/12/09(Fri) 13:59

> 総あたりを行って,変数を選択しようとしていますが,Rで行うと変数の数が23個で行うと,エラーがでて

そういうことも最初に書いておいて頂けるとよいですね。

変数が23個だと,2^23個の重回帰モデルを計算しないといけませんね。
2^23=8388608 となり,そう多くはないですが結構時間がかかりそうですね。

ま た,このような大規模な分析を行うには,細かい工夫もしなければならないでしょう。とくに,R はデータ(オブジェクト)をメモリ中に持ち続けるので,不要になったメモリのガーベージ・コレクションも能動的に行わないといけないなど。C などでこの分析のためのプログラムを書くようなことも必要になるかも。

No.15914 Re: メモリーのエラーについて  【統計大好き】 2011/12/09(Fri) 14:17

ご返信ありがとうございます。

分かりました,ガーベージ・コレクションについてもこれから調べていこうと思います。

ただ,明らかにp値が大きいものが数個あるので,それらの説明変数は削除しても大丈夫でしょうか?

No.15915 Re: メモリーのエラーについて  【青木繁伸】 2011/12/09(Fri) 14:40

http://aoki2.si.gunma-u.ac.jp/R/All_possible_subset_selection.html
にあるプログラムで,1000行23変数のデータで総当たり法をやりましたが,メモリーエラーなんかはでませんでした。(そりゃそうですよね,たかが23変数の重回帰分析でメモリーエラーが起きていたら,使い物になりませんもの)

なにかおかしなことしているのかな?

> 明らかにp値が大きいものが数個あるので,それらの説明変数は削除しても大丈夫でしょうか?

変数をひとつずつ抜いたり,組合せを変えたりした結果を比べて,総合的に判断する必要があるでしょう。

No.15918 Re: メモリーのエラーについて  【統計大好き】 2011/12/10(Sat) 02:13

ご返信ありがとうございます。

あれ?なぜメモリーエラーがでないんでしょうか?青木先生のプログラムを使いました。
僕の場合はしかも,100行足らずです。ちなみに青木先生が1000行23変数の総当たりをさせたときには,どの位時間はかかりましたか?私が,20変数で行ったときには6時間弱だったので,それの8乗と考えると,2日ほどだと思うのですが。
このようなエラーが出ました。

エラー: サイズ 736.0 Mb のベクトルを割り当てることができません
追加情報: 警告メッセージ:
1: In All.possible.subset.selection(data1[1:24]) :
Reached total allocation of 1014Mb: see help(memory.size)
2: In All.possible.subset.selection(data1[1:24]) :
Reached total allocation of 1014Mb: see help(memory.size)
3: In All.possible.subset.selection(data1[1:24]) :
Reached total allocation of 1014Mb: see help(memory.size)
4: In All.possible.subset.selection(data1[1:24]) :
Reached total allocation of 1014Mb: see help(memory.size)

変数をひとつずつ抜いたり,組合せを変えたりした結果を比べて,総合的に判断する必要があるでしょう。
→これを行うのは,ほとんど不可能ではないでしょうか?
 23変数のうち抜く一つの変数を選ぶのに23通りありますし,二つとなると   23*11通りありますし,それらをそれぞれ総当たりするのにかなり時間を要しますし。

No.15919 Re: メモリーのエラーについて  【青木繁伸】 2011/12/10(Sat) 08:45

> ほとんど不可能ではないでしょうか?

そのような見積が出来るのですから,実行不可能でしょう。

総当たりで出来ないのなら他の方法で我慢するしかないでしょう。つまり,ステップワイズ変数選択。

No.15920 Re: メモリーのエラーについて  【統計大好き】 2011/12/10(Sat) 10:01

ご返信ありがとうございます。

やはりそうですよね。

分かりました。今からステップワイズ変数選択について勉強します。

ありがとうございました。

また,メモリー不足についてもなぜ23変数で出来ないのかももう少し粘って色々試行錯誤してやってみようと思います。

No.15921 Re: メモリーのエラーについて  【統計学初心者】 2011/12/10(Sat) 11:02

あれからステップワイズについて調べて,青木先生のプログラムを使って行ってみました。
そして,AICによるステップワイズとstepAICは同じだというHPも多数あったので,stepAIC関数を使って行ってみると,結果が異なってしまいました。
これはなぜでしょうか?
ちなみにAICの値はstepAIC関数で行った方が小さかったです。それも200くらい差がありました。

No.15922 Re: メモリーのエラーについて  【青木繁伸】 2011/12/10(Sat) 12:10

> AICの値はstepAIC関数で行った方が小さかったです。それも200くらい差がありました。

No. 15721 から始まるスレッド参照。

No.15929 Re: メモリーのエラーについて  【統計大好き】 2011/12/11(Sun) 05:15

ご返信ありがとうございます。
AICの作り方そのものが異なるのですね。
よく分かりました。
ありがとうございました。

● 「統計学関連なんでもあり」の過去ログ--- 045 の目次へジャンプ
● 「統計学関連なんでもあり」の目次へジャンプ
● 直前のページへ戻る