预测变量和响应变量必须具有相同的长度; MATLAB

时间:2014-07-24 16:12:19

标签: matlab error-handling regression

提前感谢您的帮助。

我正在尝试对一组数据使用逐步回归。我有一个表中的数据,在表的最右边有一个预测变量(作为一列)。这是我的代码的样子。

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

2 个答案:

答案 0 :(得分:1)

我找到了解决方案。虽然在线文档说明输入可以是一个表,但当我在我的Matlab版本(运行'help stepwiseglm')中检查手册时,我发现该函数仅与数据集兼容。然后我将表格转换为数据集,运行正常。

编辑,我有Matlab版本 8.2.0.701(R2013b)

答案 1 :(得分:0)

'modelspec'不是函数的有效参数名称。尝试:

mdl = stepwiseglm(dummyTrainingTable, modelTech, 'Criterion', criterion);