【问题标题】:stepwise regression: Undefined function ' stepwiselm' for input arguments of type 'cell'逐步回归:“cell”类型的输入参数的未定义函数“stepwiselm”
【发布时间】:2014-09-17 16:42:36
【问题描述】:

我有一个 .txt 文件,我先将其转换为一个表 Ta(Ta=readtable('xxx.txt')) 然后是一个数组 Aa(Aa=table2array(Ta)),.txt 文件包含 220行和 12 列,但表和数组只有 219 行和 1 列。我哪里做错了?

然后,当我尝试进行逐步回归时,我收到错误消息:未定义函数 'stepwiselm' for input arguments of 'cell' 类型。

我的代码是:mdl=stepwiselm(Aa)

在 .txt 文件中,第一个原始文件是文本,例如海拔、高度、产量等。虽然我可以使用这些名称来定义预测变量和响应变量。但是既然这些名字在 Aa 中丢失了,我应该如何编写逐步回归的代码呢?谢谢!

【问题讨论】:

  • 我重新安装了 Matlab,所以现在我有了统计工具箱。然后我创建了一个矩阵 M forA-100spreg-raa01.txt 并逐步运行('M',10),因为我希望第 10 列是 y。在 .txt 中,第 10 列是 'yield',但所有文本都没有显示在 M 中,所以我不知道该怎么写,例如使用'yield'作为因变量,即响应变量和'DEM,grad,HI'作为自变量,即预测变量。Aan我也想计算M的标准偏差,我写了std('M'),但得到了ans = 0 .有什么建议吗?谢谢!
  • 我在一个新窗口中得到了逐步回归结果,一切看起来都可以找到。但在命令窗口中,我收到错误:尝试访问 R(1);索引超出范围,因为 numel(R)=0.Error stepwisefit>stepcalc (line 279) Rrank = sum(abs(diag(R)) > tol*abs(R(1)));Error stepwisefit (line 146) [ B,SE,PVAL,stats] = stepcalc(allx,y,in); Error stepwise>stepmain (line 110) [~,~,~,in,stats,nextstep] = ... Error stepwise>doscale (line 860) in = stepmain(X,y,in,F);评估 uimenu 时出错Callbac。
  • 很难说。它可能与您输入到stepwise 的内容有关,也许y 不应该等于X 的列(即尝试stepwise(M(:,1:9),M(:,10)))? M 到底长什么样子?
  • 我有另一个想法,要逐步创建数据集:A = dataset('File','Araa06.txt'),M 是从 Araa06(第一行文本)转换而来的,然后我得到 2错误:'滥用数据集/读取文件(第 207 行)可变长度必须全部相同'。 '错误数据集(第 351 行)a = readFile(a,fileArg,otherArgs)' 知道为什么会这样吗?
  • @A.Klomp 现在它说“从 A-100spreg2-raa06a.txt 读取的变量名称的数量与数据列的数量不匹配。您可能错误地指定了格式字符串、分隔符或标题行数。错误数据集(第 351 行)a = readFile(a,fileArg,otherArgs)' 但我确实有 12 个列的 12 个名称,我该怎么办?

标签: matlab regression


【解决方案1】:

试试下面的

delim = ' '; 
nrhdr = 1; 
A = importdata('A-100spreg2-raa06a.txt', delim, nrhdr); 

A.data 将是您的数据,A.textdata 将是您的标头。 “.txt”不包含列,因此您需要指定分隔符(我假设是空格)。然后,您可以在 stepwise 函数中使用您的 A.data。

正如您所说,您希望第 10 列为 y,我假设其他列为 X,请使用

stepwise(A.data(:,1:9),A.data(:,10))

除了在数字中创建标签之外,我不会将标题用于任何其他用途。

【讨论】:

  • 谢谢!我将第一行(即变量名称)复制到“A-100spreg2-raa06a.txt”并创建了一个数据集 A,它和逐步函数一样有效。但是为什么在我运行 mdl = stepwiselm(A,'constant','ResponseVar','Yield','PredictorVars',{'DEM','HI','DAI2'}) 之后,我只得到了 DEM 和 HI 的 Pvalue ?
  • 太棒了!您确定在您的数据集对象中提到了 DAI2 吗?或者它可能不喜欢名称中的 2?只是在这里猜测..
  • 如果我写 mdl=stepwiselm(A,'interactions','ResponseVar','Yield','PredictorVars',{'DEM','HI','DAI2'}),那么我在 outpot 中获得了所有预测变量,但它不适用于“常量”,我猜它已从模型中移除,因为它超过了进入/移除的阈值 (0.15)?还是类型 2 错误?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多