【问题标题】:Is there an advantage to ordering a categorical variable?排序分类变量有优势吗?
【发布时间】:2014-02-05 18:07:51
【问题描述】:

我被告知最好在适当的情况下对分类变量进行排序(例如,短小于中小于长)。我想知道,在将分类变量建模为解释变量的情况下,将分类变量视为有序变量而不是简单分类变量的具体优势是什么?它在数学上是什么意思(最好用通俗的话来说!)?

非常感谢!

【问题讨论】:

  • 好问题 - 希望有人能够给出一个彻底的答案。部分原因与分类变量(R 中的factors)如何用整数表示有关。所以c("Small", "Small", "Small", "Medium", "Large", "Large") 将在内部表示为c(1,1,1,2,3,3)

标签: r modeling categorical-data


【解决方案1】:

除其他外,它还允许您比较这些因素的值:

> ord.fac <- ordered(c("small", "medium", "large"), levels=c("small", "medium", "large"))
> fac <- factor(c("small", "medium", "large"), levels=c("small", "medium", "large"))
> ord.fac[[1]] < ord.fac[[2]]
[1] TRUE
> fac[[1]] < fac[[2]]
[1] NA
Warning message:
  In Ops.factor(fac[[1]], fac[[2]]) : < not meaningful for factors

文档表明从建模的角度来看有相当大的影响:

有序因子与其类的因子不同,但方法和模型拟合函数对这两个类的处理完全不同

但我必须让熟悉这些用例的人提供详细信息。

【讨论】:

    【解决方案2】:

    只有在从数据的角度来看有意义时才应该使用序数数据(数据是自然排序的,就像小、中和大的情况一样)。

    在建模术语中,分类变量具有为每个级别创建的虚拟变量,购买它可以采用的可能值之一。虚拟变量的影响本质上为您提供了该水平与参考水平(没有虚拟变量的水平)相比的影响。一般来说,处理分类变量比处理有序数据更容易。

    序数数据的建模方式与连续数据和分类数据的建模方式不同(除非您将值视为连续数据,这通常是这样做的)。在 R 中,ordinal 包具有多个函数来执行基于累积链接函数的建模(链接函数将数据转换为更接近线性回归的数据)。

    将分类数据重新编码为序数的优点在于,从数据中做出的推论可以更好地代表数据并具有更直观的解释。

    【讨论】:

      【解决方案3】:

      最有用的区别在于显示结果。如果我们有低、中、高级别并创建适当的有序因子,那么箱线图、条形图、表格等将按低、中、高的顺序显示结果。但是,如果我们创建一个无序因子并使用默认排序,那么绘图/表格将按高、低、中的顺序排列;这没有多大意义。

      对于有序和无序因子,默认的对比/虚拟变量编码是不同的(但您可以更改编码,因此这只会影响您使用默认值的情况),这可以更改单个片段的解释,但不会影响总体拟合(对于线性模型和扩展,树等其他工具可能会有所不同)。

      【讨论】:

      • re:您的第一段,您仍然可以通过指定因子水平的顺序来“排序”箱线图等(即您不需要为此使用ordered) .
      • IIRC lm(和其他回归函数,如 lme)对有序因子使用多项式对比,但到目前为止,我只有一次机会对有序因子进行回归。但我记得它非常直接且易于解释。
      猜你喜欢
      • 2012-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-19
      • 1970-01-01
      • 2022-01-17
      • 1970-01-01
      相关资源
      最近更新 更多