こんにちは、
私はJMP pro 12を使います。
ニューラルネットワーク解析で、AICまたはBICを尤度から取得するにはどうすればよいですか。
よろしく、
アンジェロ
申し訳ありませんが、私はニューラルネットでそれをやったと確信していましたが、それは実際には非線形プラットフォームのためでした。 これがコードです:
dt = Open("$SAMPLE_DATA/Nonlinear Examples/Chemical Kinetics.jmp");
fit = dt << Nonlinear(
Y( :Name( "Velocity (y)" ) ),
X( :Name( "Model (x)" ) ),
Newton,
Finish
);
rep = fit << Report;
matRmse = rep[NumberColBox(5)] << Get As Matrix;
/***************************************************
/ calculate AICc /
***************************************************/
// AIC = N.ln(SS/N) + 2k
// where N = # data points
// k = # parameters + 1
// SS = sum of squares for the residuals
// AICc = AIC + [ 2k(k+1) / (N-k-1) ]
N = NRows(dt);
nParameters = 2;
k = nParameters + 1;
rmse = matRmse[1];
dfSS = N - nParameters;
MS = rmse^2;
SS = dfSS * MS; // this is correct compared to fit model
LL = N*Log(2*Pi()*e()*SS/N);
AIC = LL + 2*k;
AICc = AIC + ( (2*k*(k+1))/(N-k-1) );
/***************************************************
/ calculate BIC /
***************************************************/
BIC = LL + k*Log(N);
このコードでは、対数尤度の値を決定しなければなりませんでしたが、ニューラルネットはこれを提供するので、より簡単になります。 私はあなたがkの値は何かについて考える必要があると思います。 1 +推定されている重みの数(#factors x #nodesになる単層ネットワークの場合)になると思います。
私はこれを行うためにあなたと共有することができるいくつかのコードを持っています - 残念ながら今旅行しています - あなたが他の誰かから返事を受け取らなければ私は月曜日にそれを投稿できるでしょう。
ニューラルの高速な列式からkを取得する方法はありますか?または、モデルがどのように作成されたかを知る必要がありますか?例えば
Names default to here(1);
dt = open("$SAMPLE_DATA/Boston Housing.jmp");
nn = dt << Neural(
Y( :mvalue ),
X(
:crim,
:zn,
:indus,
:chas,
:nox,
:rooms,
:age,
:distance,
:radial,
:tax,
:pt,
:b,
:lstat
),
Informative Missing( 0 ),
Validation Method( "Holdback", 0.3333 ),
Fit( NTanH( 3 ), NLinear( 2 ), NLinear2( 1 ), NGaussian2( 1 ) )
);
nn << (Fit[1] << Save Fast Formulas);
pred = Column(dt, ncols(dt));
pred << Get Formula();
戻り値:
T#1 = Matrix(
{{:crim, :zn, :indus, Design Nom( :chas, [0 1], <<ELSE missing=""></ELSE>
前もって感謝します。