2

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');

それは機能しますが、それが正しいかどうかはわかりません。次の警告が表示されます。

警告: 反復制限に達しました。

ダミーレベルを大幅に下げたので、その理由がわかりません。

4

1 に答える 1