Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
预测变量和响应变量必须具有相同的长度;Matlab_Matlab_Error Handling_Regression - Fatal编程技术网

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

预测变量和响应变量必须具有相同的长度;Matlab,matlab,error-handling,regression,Matlab,Error Handling,Regression,提前谢谢你的帮助 我试图对一组数据使用逐步回归。我将数据放在一个表中,单个预测变量位于表的最右侧(作为一列)。下面是我的代码的样子 mdl = stepwiseglm(dummyTrainingTable,'modelspec',modelTech,'Criterion',criterion); 其中modelTech和criteria是变量,其中包含指示两个名称-值对选项的字符串。我得到以下错误 Error using classreg.regr.FitObject/assignData (

提前谢谢你的帮助

我试图对一组数据使用逐步回归。我将数据放在一个表中,单个预测变量位于表的最右侧(作为一列)。下面是我的代码的样子

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的一个问题,还是我缺少了一些简单的东西

注意,当我将表格转换为矩阵时,逐步GLM运行良好。i、 e

dummyTrainingArray = table2array(dummyTrainingTable);

mdl = stepwiseglm(dummyTrainingArray(:,1:size(dummyTrainingArray,2) - 1), dummyTrainingArray(:,size(dummyTrainingArray,2)),modelTech,'VarNames', ...
    dummyTrainingTable.Properties.VariableNames,'Criterion', criterion);

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

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

我想出了一个解决办法。尽管在线文档说明输入可以是一个表,但当我在我的Matlab版本中查看手册(运行“help stepwiseglm”)时,我发现该函数仅与数据集兼容。然后我将我的表转换为数据集,它运行良好

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

函数的一个奇怪参数(在您发布的调用中)是
'modelspec'
。它看起来不应该是这样,但应该被实际的模型规范所取代,比如
'constant'
'linear'
等。模型规范不是一对ArgName/ArgValue:modelspec可以用作名称-值对。嗯,我现在无法测试。。。但是,如果在成功的
逐步GLM
调用的参数中插入
'modelspec'
文本,它仍然有效吗?如果不是这样,则始终可以打开.m文件、放置断点并逐步调试,直到找出错误所在。更正,不能将模型规范用作名称-值对。这不是问题所在。我同意,这只是个问题。:-)我认为如果你在给出的答案中指定你的MATLAB版本会很有用,因为下一个用户可能会遇到同样的问题,忘记事先检查帮助;我也试过了。我得到这个错误“错误的参数数量”。