在回答有关离散数据和连续数据的问题时,我断言,将分类数据视为连续数据很少有意义。
从表面上看,这似乎是不言而喻的,但是直觉通常不是一个很好的统计指南,或者至少是我的。所以现在我在想:这是真的吗?还是已经建立了从分类数据到某个连续体的转换实际上有用的分析?如果数据是序数会有所不同吗?
在回答有关离散数据和连续数据的问题时,我断言,将分类数据视为连续数据很少有意义。
从表面上看,这似乎是不言而喻的,但是直觉通常不是一个很好的统计指南,或者至少是我的。所以现在我在想:这是真的吗?还是已经建立了从分类数据到某个连续体的转换实际上有用的分析?如果数据是序数会有所不同吗?
Answers:
我将假设“类别”变量实际上代表序数变量;否则将其视为连续变量就没有多大意义,除非它是@Rob指出的二进制变量(编码为0/1)。然后,我想说的是,尽管到目前为止已经开发了许多用于分类数据分析的模型,但问题并不是我们对待变量的方式那么多。例如,请参见《有序分类数据的分析:概述和近期调查》。发展从刘和Agresti--,比下面的测量尺度,我们假设。我的回答将集中在第二点,尽管我将首先简要讨论将数字分数分配给可变类别或水平的问题。
通过使用一个有序变量的简单数值编码,您假定该变量具有区间属性(就Stevens,1946年给出的分类而言)。从测量理论的角度(从心理学角度而言),这通常可能是一个过强的假设,但对于基础研究(即,使用单个项目用清晰的措词表达对日常活动的看法),任何单调得分应给出可比的结果。科克伦(1954)已经指出
只要在不参考实验结果的情况下构建任何分数,都可以给出有效的测试。如果分数集很差,因为它严重扭曲了确实构成有序分类基础的数字刻度,则该测试将不敏感。因此,分数应体现出有关分类的构建和使用方式的最佳见解。(第436页)
(非常感谢@whuber在他的所有评论中都提醒我有关此内容的知识,这使我重新阅读了Agresti的书,该书来自此。)
实际上,一些测试隐式地将此类变量视为区间标度:例如,用于测试线性趋势的统计量(作为简单独立性的替代方法)基于相关方法(M 2 = (n − 1 )r 2, Agresti,2002年,第87页)。
嗯,您还可以决定在不规则范围内重新编码变量,或汇总其某些级别,但是在这种情况下,重新编码的类别之间的强烈不平衡可能会使统计检验(例如上述趋势检验)失真。@Jeromy已经提出了一种在类别之间分配距离的不错选择,即最佳缩放。
现在,让我们讨论我提出的第二点,即基础测量模型。当我看到这样的问题时,我总是在犹豫是否要添加“心理计量学”标签,因为测量量表的构建和分析属于心理计量学理论(Nunnally和Bernstein,1994年,内容整齐)。我不会详细介绍项目响应理论下的所有实际模型,并请感兴趣的读者参考I. Partchev的教程,项目响应理论的可视指南。,对IRT进行简要介绍,并参考末尾列出的有关IRT分类法的参考文献(5-8)。简而言之,您的想法是,您无需假设变量类别之间的任意距离,而是假设一个潜在规模,并估计其在该连续体上的位置以及个人的能力或责任。一个简单的例子值得用数学符号表示,因此让我们考虑以下项目(来自EORTC QLQ-C30与健康相关的生活质量调查表):
你担心吗
它以四点为单位进行编码,范围从“完全不”到“非常”。原始分数是通过将分数分配为1到4来计算的。可以将属于同一等级的项目的得分相加在一起,得出所谓的等级得分,它表示一个人在基本结构上的等级(此处是心理健康成分) )。这样的累加量表分数由于对评分容易(对于从业者或护士)非常实用,但是它们仅是离散的(有序的)量表。
我们还可以考虑认可给定响应类别的概率遵循某种逻辑模型,如上面I. Partchev的教程中所述。基本上,这个想法是一种阈值模型(根据比例或累积赔率模型得出等价的表述),我们对一个响应类别中的赔率进行建模,而不是对前一个赔率或得分高于某些类别,取决于对象在潜在特征上的位置。此外,我们可能会强加回答类别在潜在标度上的均等间隔(这是评级量表模型),这是我们通过分配规则间隔的数字分数来做到的方式(或不)(这是部分信用模型) 。
显然,我们没有在经典测试理论中添加太多内容,在经典测试理论中,序数变量被视为数值变量。但是,我们引入了一个概率模型,在该模型中我们假设一个连续的量表(具有区间属性),并且可以考虑特定的测量误差,并且可以将这些阶乘得分插入任何回归模型中。
参考文献
如果只有两个类别,则将它们转换为(0,1)是有意义的。实际上,通常在将所得的虚拟变量用于回归模型的情况下执行此操作。
如果有两个以上的类别,那么我认为只有在数据为序数时才有意义,然后才在非常特殊的情况下才有意义。例如,如果我要进行回归并将非参数非线性函数拟合到序数和数值变量,则认为可以。但是,如果我使用线性回归,那么我将对序数变量的连续值之间的相对差做出非常强烈的假设,而我通常不愿意这样做。
通常的做法是将具有许多类别的有序类别变量视为连续变量。这样的例子:
所谓“连续处理”是指将变量包含在假设连续随机变量的模型中(例如,作为线性回归中的因变量)。我想问题是要使这个合理的简化假设需要多少个比例尺。
其他一些想法:
许多读者的经验中经常忽略一个非常简单的例子,它涉及学术工作的分数或等级。通常,从本质上讲,单个作业的分数是基于判断的序数度量,即使按照惯例,分数分数是(例如)百分比分数或刻度上的分数最高为5(也可能是小数点)。也就是说,教师可以通读论文,学位论文,论文或论文,并确定该论文应占42%或4,或其他。即使是基于详细评估方案的标记,比例尺也离间隔或比例尺测量尺的根本距离。
但是,许多机构认为,如果您拥有足够的这些标记或等级,则将它们平均(等级平均分数等),甚至进行更详细的分析是完全合理的。因此,在某些时候,序数测量会演变为汇总量表,将其视为连续的。
具有讽刺意味的鉴赏家会注意到,许多系或学校的统计课程经常教导说,这在整个大学范围内都是可疑的,最糟糕的是错误的。
我要提出一个论点,即将真正的绝对非常规变量视为连续有时会有意义。
如果要基于大型数据集构建决策树,则将分类变量转换为虚拟变量的处理能力和内存可能会非常昂贵。此外,某些模型(例如randomForest
R中的模型)无法处理具有多个级别的类别变量。
在这些情况下,基于树的模型应该能够识别极其重要的类别,即使将它们编码为连续变量也是如此。一个人为的例子:
set.seed(42)
library(caret)
n <- 10000
a <- sample(1:100, n, replace=TRUE)
b <- sample(1:100, n, replace=TRUE)
e <- runif(n)
y <- 2*a + 1000*(b==7) + 500*(b==42) + 1000*e
dat1 <- data.frame(y, a, b)
dat2 <- data.frame(y, a, b=factor(b))
y是连续变量,a是连续变量,b是类别变量。但是,在dat1
b中被视为连续的。
将决策树拟合到这两个数据集,我们发现它dat1
比dat2
:
model1 <- train(y~., dat1, method='rpart')
model2 <- train(y~., dat2, method='rpart')
> min(model1$results$RMSE)
[1] 302.0428
> min(model2$results$RMSE)
[1] 294.1411
如果查看这两个模型,您会发现它们非常相似,但是model1错过了b == 42的重要性:
> model1$finalModel
n= 10000
node), split, n, deviance, yval
* denotes terminal node
1) root 10000 988408000 614.0377
2) a< 42.5 4206 407731400 553.5374 *
3) a>=42.5 5794 554105700 657.9563
6) b>=7.5 5376 468539000 649.2613 *
7) b< 7.5 418 79932820 769.7852
14) b< 6.5 365 29980450 644.6897 *
15) b>=6.5 53 4904253 1631.2920 *
> model2$finalModel
n= 10000
node), split, n, deviance, yval
* denotes terminal node
1) root 10000 988408000 614.0377
2) b7< 0.5 9906 889387900 604.7904
4) a< 42.5 4165 364209500 543.8927 *
5) a>=42.5 5741 498526600 648.9707
10) b42< 0.5 5679 478456300 643.7210 *
11) b42>=0.5 62 5578230 1129.8230 *
3) b7>=0.5 94 8903490 1588.5500 *
但是,model1的运行时间大约是model2的1/10:
> model1$times$everything
user system elapsed
4.881 0.169 5.058
> model2$times$everything
user system elapsed
45.060 3.016 48.066
当然,您可以调整问题的参数,以找出dat2
性能远胜于dat1
或dat1
略胜于优的情况dat2
。
我一般不主张将分类变量视为连续变量,但是我发现这样做的情况大大减少了拟合模型所需的时间,而又没有降低其预测准确性。
还有另一种情况有意义:从连续数据中采样数据(例如,通过模数转换器)。对于较旧的仪器,ADC通常为10位,给出名义上为1024类的序数数据,但在大多数情况下可以视为真实数据(尽管在标度的低端附近会出现一些假象)。如今,ADC通常是16位或24位。到您在谈论65536或16777216“类别”时,您确实可以轻松地将数据视为连续数据。