1

質問があります。他の場所で答えを探しましたが、問題を解決できませんでした。誰かが私を助けることができますか?

N(数値)、X(係数)、E(数値)の3つの変数を持つ約100万レコードのデータセットがあります。変数 X には約 100 のレベルがあります。同じコードを実行しようとしましたが、X を別の共変量 Y (レベルが 4 つしかない) に置き換えると、問題なく動作します。多分それは変数X自体と関係がありますか?たとえば、X の一部のレベルでは発生頻度が実際には低いですが、これは Y には当てはまりません。これは問題ですか (bigglm はデータをチャンクに分割するため、各チャンクがすべてのレベルの X を所有しているわけではないため)。

私のマシンには 2 GB の RAM しかありません。目的の 1 つは、R でパッケージを使用して、より大きなデータセットでコードを再現する場合でも機能するようにすることです。

詳細が必要な場合は、私に尋ねてください。提供します。

str(data) は次のようになります:

'data.frame'    :   967821 obs. of  13 variables:
 $ E            : num  0.6694 0.418 0.0546 0.1612 0.071 ...
 $ Y            : Factor w/ 4 levels "1","2","3","4": 1 1 3 2 1 1 1 1 1 4 ...
 $ ??           : Factor w/ 2 levels "??",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ ??           : Factor w/ 38 levels "??","??",..: 37 29 11 21 24 23 16 36 19 36 ...
 $ ??           : num  77 43 66 72 96 43 45 78 53 65 ...
 $ ??           : num  7.29 12.42 21.88 5.78 2.62 ...
 $ ??           : Factor w/ 1150 levels "1000","1020",..: 494 1003 456 183 163 1055 881 128 1019 1041 ...
 $ ??           : num  52.5 78 37.7 41.1 64.3 ...
 $ ??           : Factor w/ 31 levels "1","2","3","4",..: 22 11 3 3 11 2 11 11 3 2 ...
 $ ??           : num  34.2 48.9 12.2 19.8 44.3 ...
 $ N            : int  0 0 0 0 0 0 0 0 0 0 ...
 $ ??           : Factor w/ 2 levels "1","2": 1 1 1 2 1 2 2 1 1 1 ...
 $ X            : Factor w/ 89 levels "18","19","20",..: 36 61 21 24 47 36 48 67 17 18 ...

私のコードは次のとおりです。

library(ffbase)
library(biglm)
data = as.ffdf(data)
regglm2=bigglm.ffdf(N~X+offset(log(E)),data=data, family=poisson(), maxit=100, chunksize=10000)

エラーは次のとおりです。

警告メッセージ: in bigglm.function(formula = formula, data = datafun, ...) : 反復が不足し、収束に失敗しました

4

1 に答える 1

1

2 つの質問。マシンのリソースに応じて、どちらかが回答と見なされる可能性があります。

1) コントロールリストの反復回数を増やしましたか? maxitはそれを制御し、デフォルトは小さい数です。25に増やしてみてください

2) 本当に必要bigglmですか? だけで試しましたglmか?それほど大きな物体ではありません。4GB のマシンを使用している場合は、起動構成で最小限のプログラムと Windoze のもの (ディスプレイの下の境界線に沿ったアプレットの名前が何であれ) から開始し、他のプログラムと一緒に R を実行しないでください。

于 2013-08-21T00:30:35.823 に答える