我在 Matlab 中运行一些回归。我的前三个回归是:
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 是我的因变量,它是二进制的,它只取值 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);
但它总是会出错。我想这一定与我“介绍”虚拟组的方式有关。
有人可以帮我吗?谢谢你。
我试过这个(所有变量都改为双打):
Y=[Y1];
x=[X1 D1 D2 D3 D4];
mdl23=fitglm(x,Y,'Distribution','binomial');
它有效,但我不确定它是否正确。我收到这个警告:
警告:已达到迭代限制。
我不明白为什么,因为我降低了很多我的虚拟水平。