【问题标题】:Matlab - regressionMatlab - 回归
【发布时间】:2012-03-17 09:52:58
【问题描述】:

我收到警告:X 在机器精度范围内的等级不足。此外,我得到的系数是复数,即使输入都是实数。为什么会这样?知道如何摆脱这种情况吗?

【问题讨论】:

  • 你能告诉我们你正在调用什么函数吗?
  • [b, bint, r, rint, stats] = 回归(输出,输入);这够了吗?输出和输入或多或少是从文件中加载的。尺寸(输出)= 877835 1 尺寸(输入)= 877835 8

标签: matlab regression


【解决方案1】:

我想你的输入向量有太多线性相关的列。执行rank(input) 并查看输出内容。如果小于 8,则需要删除在 input 矩阵中找到的一些自变量。此外,您可能希望包含有关您如何到达input 矩阵的更多信息,例如:

input = [ fuel engine_speed fuel.*engine_speed ];  % or even
input = [ x1 x2 x1.*x2 ];

如果您有一个低秩矩阵,请尝试查找相关列。这是我推荐的一种快速方法(我相信有人知道更好的方法):

[R,jb] = rref(input);
full_rank_input = input(:,jb);
rank(input)

应该给你一个带有rank(full_rank_input) == num_columns的矩阵。

【讨论】:

  • 我的排名 = 4,非常小。也许我有太多的数据点?解决此问题的最佳方法是什么?
  • 你没有太多的数据点,你有太多的 X 变量。您需要选择要删除的内容。
  • 这确实是一个统计问题(不是编程问题)——也许在 Stack Exchange 统计数据上会做得更好?
猜你喜欢
  • 2011-10-11
  • 2011-10-11
  • 2016-10-21
  • 2013-11-17
  • 2012-06-06
  • 2021-06-07
  • 2013-10-25
  • 2018-03-04
  • 2018-04-25
相关资源
最近更新 更多