Matlab多元线性回归返回值全为Nan

一个多元线性回归问题:y = f(a,b,c,d,e,f,g,h,i)
用matlab regress函数拟合
共有2265组观测数据
拟合输出的系数全为Nan 是什么情况
当我减少观测数据时能够得到一组“正常的”输出系数
请教大家是什么问题

ChatGPT尝试为您解答,仅供参考
多元线性回归是一种统计学方法,用于在多个自变量的情况下,根据已知的观测数据估计因变量与自变量之间的关系。

当使用 regress 函数拟合多元线性回归模型时,如果输出的系数全为 Nan,可能是因为矩阵奇异,即不存在逆矩阵。这种情况通常是由于输入数据中的某些错误或缺陷导致的。

可能的原因有:

  • 自变量之间存在完全线性关系。这意味着某些自变量可以用其他自变量的线性组合表示。如果这种情况出现,则矩阵的秩将小于自变量的数量,导致矩阵奇异。
  • 输入数据中存在缺失值或者异常值。如果观测数据中存在缺失或异常值,则可能会导致矩阵奇异。
  • 输入数据中存在较小的数值。如果观测数据中存在较小的数值,则可能会导致矩阵奇异。
  • 输入数据中存在偏差。如果观测数据中存在偏差,则可能会导致矩阵奇异。
  • 回归模型过于复杂。如果回归模型过于复杂,则安可能会导致矩阵奇异。这是因为当模型过于复杂时,很难找到一组系数能够拟合所有的观测数据。

当观测数据减少时能够得到“正常的”输出系数,可能是因为减少的观测数据量使得模型变得更加简单,从而避免了矩阵奇异的情况。


建议您检查输入数据,确保自变量之间没有完全线性关系,并检查是否存在缺失值或异常值。同时,您也可以尝试减少自变量的数量,以使模型变得更加简单。

望采纳。
MATLAB中的regress函数输出的系数全部为Nan,大概率是因为数据中存在较多缺失值或异常值,regress函数会无法计算出有效的回归系数。
肉眼看的一些数据相对于2265条数据来说还是少数,可以通过MATLAB对数据做点缺失和异常分析,代码如下:

missing_values = isnan(x) | isinf(x);
num_missing_values = sum(missing_values);