删除regstats函数的零列

时间:2012-07-17 21:49:56

标签: matlab

我在一个相当大的数据集上执行线性回归分析(y = xb,用给定的[nx1]向量y和[nxm]矩阵x求解b),使用matlab统计的regstats()函数工具箱并循环通过一系列矩阵/向量对。问题是如果存在全零的列,则regstats返回NaN,因为它无法执行回归。在我的所有x-matrices中都有一列零,但它们并不总是出现在相同的列号中。由于我的x-matrices中的每一列代表一个真实世界的变量,我不能简单地删除零列并运行回归。我需要删除零,记住哪些列已被删除,运行回归,然后将0值合并到适当位置的b向量结果中。这样,我的所有结果都以相同的顺序表示相同数量的变量,在特定变量未包含在回归中的位置使用零。我用一小组测试数据手动完成了这个,但现在我需要运行大约800个回归对,所以我需要一些方法来自动搜索和替换零列。

2 个答案:

答案 0 :(得分:1)

IZEROS = find(all(M==0));

IZEROS将是包含全零的列的索引列表。

答案 1 :(得分:1)

allzero = all(x == 0, 1);
goodcols = find(~allzero);

b = zeros(m,1);
b(goodcols) = % solution to problem, taking into account only goodcols