1

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

4

2 回答 2

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

IZEROS将是全为零的列的索引列表。

于 2012-07-17T21:57:33.910 回答
1
allzero = all(x == 0, 1);
goodcols = find(~allzero);

b = zeros(m,1);
b(goodcols) = % solution to problem, taking into account only goodcols
于 2012-07-17T21:57:58.913 回答