分类响应变量预测

机器算法验证 r 物流 方差分析 分类数据 多项分布
2022-04-08 15:16:40

我有以下类型的数据(用 R 编码):

v.a = c('cat', 'dog', 'dog', 'goat', 'cat', 'goat', 'dog', 'dog')
v.b = c(1, 2, 1, 2, 1, 2, 1, 2)
v.c = c('blue', 'red', 'blue', 'red', 'red', 'blue', 'yellow', 'yellow')
set.seed(12)
v.d = rnorm(8)
aov(v.a ~ v.b + v.c + v.d) # Error

我想知道 的值v.b或 的值v.c是否有能力预测 的值v.a我会运行方差分析(如上所示),但我认为它没有任何意义,因为我的响应变量不是序数(它是分类的)。我应该怎么办?

2个回答

您可以使用任何分类器。包括线性判别式、Bill 指出的多项式 logit、支持向量机、神经网络、CART、随机森林、C5 树,有各种各样的模型可以帮助您预测v.a使用v.bv.c. 这是使用随机森林的 R 实现的示例:

# packages
library(randomForest)

#variables
v.a= c('cat','dog','dog','goat','cat','goat','dog','dog')
v.b= c(1,2,1,2,1,2,1,2)
v.c= c('blue', 'red', 'blue', 'red', 'red', 'blue', 'yellow', 'yellow')

# model fit
# note that you must turn the ordinal variables into factor or R wont use
# them properly
model <- randomForest(y=as.factor(v.a),x=cbind(v.b,as.factor(v.c)),ntree=10)

#plot of model accuracy by class
plot(model)

在此处输入图像描述

# model confusion matrix
model$confusion

显然,这些变量没有显示出很强的关系。

这是一个更部分的实际答案,但在深入理论之前做一些练习对我有用

这个ats.ucla.edu链接是一个参考,可能有助于以更实用的方式开始了解多项逻辑回归(如 Bill 所指出的)。
它提供了可重现的代码来理解包中的功能multinom并简要介绍了输出解释。nmetR

考虑这段代码:

va = c('cat','dog','dog','goat','cat','goat','dog','dog') 
     # cat will be the outcome baseline
vb = c(1,2,1,2,1,2,1,2)
vc = c('blue','red','blue','red','red','blue','yellow','yellow') 
     # blue will be the vc predictor baseline
set.seed(12)
vd = round(rnorm(8),2)

data = data.frame(cbind(va,vb,vc,vd))

library(nnet)
fit <- multinom(va ~ as.numeric(vb) + vc + as.numeric(vd), data=data)

# weights:  18 (10 variable)
initial  value 8.788898 
iter  10 value 0.213098
iter  20 value 0.000278
final  value 0.000070 
converged

fit

Call:
multinom(formula = va ~ as.numeric(vb) + vc + as.numeric(vd), 
    data = data)

Coefficients:
     (Intercept) as.numeric(vb)     vcred  vcyellow as.numeric(vd)
dog    -1.044866       120.3495 -6.705314  77.41661      -21.97069
goat   47.493155       126.4840 49.856414 -41.46955      -47.72585

Residual Deviance: 0.0001656705 
AIC: 20.00017 

这是您可以解释对数线性拟合多项逻辑模型的方式:

ln(P(va=cat)P(va=dog))=b10+b11vb+b12(vc=red)+b13(vc=yellow)+b14vd ln(P(va=cat)P(va=goat))=b20+b21vb+b22(vc=red)+b23(vc=yellow)+b24vd

以下是有关如何解释模型参数的摘录:

  • 变量 vd 增加一个单位与“狗”对“猫”的对数几率减少 21.97069 (b14)。

第二行的逻辑相同,但考虑到“山羊”与“猫”与 (b24=-47.72585)。

  • 如果从 vc="blue" 移动到 vc="red"(b12)。

......

文章还有很多,但我认为这部分是核心。


参考:

R 数据分析示例:多项 Logistic 回归。加州大学洛杉矶分校:统计咨询集团。
来自http://www.ats.ucla.edu/stat/r/dae/mlogit.htm(2013年 11 月 5 日访问)。