使用mnrfit在Matlab中进行逻辑回归

时间:2019-02-18 11:25:13

标签: matlab regression

我正在尝试使用mnrfit函数,但出现错误

If Y is a column vector, it must contain positive integer category numbers.

我的数据为 double ,而我的Y值为 floats ,例如0.6667。有没有一种方法可以调整我的数据以使用mnrfit函数?

提前谢谢! 一个没有经验的初学者

1 个答案:

答案 0 :(得分:2)

Y应该是“名义结果”,即不连续,以使用mnrfit。我们不需要将Y转换为整数,只需将其分类即可。就MATLAB而言,分类数组是离散的,无论类别是否用双精度值表示。

X = rand(5,3); % Predictors (should be double or single)
Y = rand(5,1); % Response (doubles, will cause error)

B = mnrfit( X, Y )
% ERROR: If Y is a column vector, it must contain positive integer category numbers. 

B = mnrfit( X, categorical(Y) )
% No error, regression matrix B is output successfully.

请注意,如果您期望连续的响应变量(因此,Y是双精度向量的原因),那么mnrfit可能首先不适合!


请注意,有效数据类型在docs

中指定
  

Y可以是以下之一:

     
      
  • n×k矩阵,其中Y(i,j)是X(i,:)给出的预测变量组合的多项式类别j的结果数。在这种情况下,将在每个预测变量组合处进行观察次数。

  •   
  • 从1到k的标量整数的n×1列向量,指示每个观察的响应值。在这种情况下,所有样本大小均为1。

  •   
  • 一个n乘1的分类数组,指示每个观察值的响应的标称或顺序值。在这种情况下,所有样本大小均为1。

  •