Matlab でいくつかの回帰を実行しています。私の最初の 3 つの回帰は次のとおりです。
tbl1=table(Y1,X1);
mdl1=fitlm(tbl1,'Y1~X1');
mdl12=fitglm(tbl1,'Y1~X1','Distribution','binomial','link','probit');
mdl13=fitglm(tbl1,'Y1~X1','Distribution','binomial');
- Y1 は私の従属変数で、2 進数で、0 または 1 の値しか取りません。
- 独立変数 X1 は、1 列の論理変数です。これはダミーで、1 と 0 の値しか取りません。
これらの 3 つの異なるモデルが動作しています。
以前に、さまざまな効果 (年、業界、従業員数など) を制御するダミーのグループを作成しました。たとえば、次のようになります。
group1=cell2mat(A(:,5));
[~, ~, ugroup1] = unique(group1)
D1=dummyvar(ugroup1);
D1(:,1)=[0]; %Define reference group
D1=logical(D1);
または
group2=cell2mat(A(:,6));
x2 = [0 10 20 25 30 35 40 45 50 55 60 70 100 300];
[n2, idx2] = histc(group2, x2);
D2 = bsxfun(@eq, idx2, 1:length(x2)-1);
D2(:,1)=[0];
全部で 94 個のダミーがあり、4 つの異なる論理配列 (D1-48 レベル、D2-13 レベル、D3-6 レベル、D4-27 レベル) にグループ化されています。
私が今やろうとしているのは、それらを上記の回帰に追加することです:
tbl1=table(Y1,X1,D1,D2,D3,D4);
mdl1=fitlm(tbl1,'Y1~X1+D1+D2+D3+D4');
mdl12=fitglm(tbl1,'Y1~X1+D1+D2+D3+D4','Distribution','binomial','link','probit');
mdl13=fitglm(tbl1,'Y1~X1+D1+D2+D3+D4','Distribution','binomial');
しかし、私は常にエラーが発生します:
1.Error using classreg.regr.FitObject/selectVariables (line 402) Predictor variables must be numeric vectors, numeric matrices, or categorical vectors. 2.Error in classreg.regr.TermsRegression/selectVariables (line 370) model = selectVariables@classreg.regr.ParametricRegression(model); 3.Error in classreg.regr.FitObject/doFit (line 217) model = selectVariables(model);
たとえば、変数のタイプを変更したり、追加したりするなど、さまざまなオプションを試してきましtbl1.D1=nominal(D1);
たが、常にエラーが発生します。ダミーグループを「紹介」する方法に関係があるに違いないと思います。
誰か助けてくれませんか?ありがとうございました。
私はこれを試しました(すべての変数がdoubleに変更されました):
Y=[Y1];
x=[X1 D1 D2 D3 D4];
mdl23=fitglm(x,Y,'Distribution','binomial');
それは機能しますが、それが正しいかどうかはわかりません。次の警告が表示されます。
警告: 反復制限に達しました。
ダミーレベルを大幅に下げたので、その理由がわかりません。