【问题标题】:Logistic regression in matlab using mnrfit使用mnrfit在matlab中进行逻辑回归
【发布时间】:2019-07-11 18:34:29
【问题描述】:

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

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

我的数据是 double 并且我的 Y 值是 floats,例如0.6667。有没有办法可以调整我的数据以使用 mnrfit 功能?

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

【问题讨论】:

  • 您可以尝试将 Y 乘以一个足够大的数字,然后将结果四舍五入。
  • @Bebs 有better ways,而不必知道这个数字需要多大......

标签: matlab regression


【解决方案1】:

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。

    李>

【讨论】:

  • 不错。事实上,如果有更多的值来查看它们是否像伪连续或稀疏一样“连接”,那将是很好的。谁知道...
  • @Bebs 您可以使用其他回归技术来做到这一点,但 mnrfit 不行。
  • @Wolfie 谢谢!我把我的 Y 变成了一个消除错误的分类数组,但是情节看起来不对。那是因为 Y 是连续的,而不是 1 或 0?你知道适合多项逻辑回归的函数吗?我做了很多研究,但似乎找不到合适的...
猜你喜欢
  • 2018-06-29
  • 2015-12-19
  • 2015-02-21
  • 2018-08-11
  • 1970-01-01
  • 2018-04-25
  • 2016-01-06
  • 2015-12-18
  • 2013-05-02
相关资源
最近更新 更多