提前感谢您的帮助。
我正在尝试对一组数据使用逐步回归。我有一个表中的数据,在表的最右边有一个预测变量(作为一列)。这是我的代码的样子。
mdl = stepwiseglm(dummyTrainingTable,'modelspec',modelTech,'Criterion',criterion);
其中modelTech和criteria是包含指示两个名称 - 值对选项的字符串的变量。我收到以下错误
Error using classreg.regr.FitObject/assignData (line 257)
Predictor and response variables must have the same length.
Error in classreg.regr.TermsRegression/assignData (line 349)
model =
assignData@classreg.regr.ParametricRegression(model,X,y,w,asCat,varNames,excl);
Error in GeneralizedLinearModel/assignData (line 794)
model =
assignData@classreg.regr.TermsRegression(model,X,y,w,asCat,dummyCoding,varNames,excl);
Error in GeneralizedLinearModel.fit (line 1165)
model =
assignData(model,X,y,weights,offset,binomN,asCatVar,dummyCoding,model.Formula.VariableNames,exclude);
Error in GeneralizedLinearModel.stepwise (line 1271)
model = GeneralizedLinearModel.fit(X,y,start.Terms,'Distribution',distr,
...
Error in stepwiseglm (line 148)
model = GeneralizedLinearModel.stepwise(X,varargin{:});
这对我没有意义,因为很明显我的反应和预测变量具有相同的长度;他们在一起坐在一张桌子里。如果他们的长度不一样,他们就不能在桌子上吗?这是Matlab的一个问题,还是只有一些我想念的简单的东西?
注意,当我将表转换为矩阵时,stepwiseglm运行得很好。即,
dummyTrainingArray = table2array(dummyTrainingTable);
mdl = stepwiseglm(dummyTrainingArray(:,1:size(dummyTrainingArray,2) - 1), dummyTrainingArray(:,size(dummyTrainingArray,2)),modelTech,'VarNames', ...
dummyTrainingTable.Properties.VariableNames,'Criterion', criterion);
答案 0 :(得分:1)
我找到了解决方案。虽然在线文档说明输入可以是一个表,但当我在我的Matlab版本(运行'help stepwiseglm')中检查手册时,我发现该函数仅与数据集兼容。然后我将表格转换为数据集,运行正常。
编辑,我有Matlab版本 8.2.0.701(R2013b)
答案 1 :(得分:0)
'modelspec'
不是函数的有效参数名称。尝试:
mdl = stepwiseglm(dummyTrainingTable, modelTech, 'Criterion', criterion);