【问题标题】:How to generate Classification Analysis tables in R?如何在 R 中生成分类分析表?
【发布时间】:2015-12-20 06:55:58
【问题描述】:

到目前为止,我已经完成了判别分析。我生成了后验概率、结构载荷和组质心。

我有 1 个分组变量:历史

我有 3 个判别变量:mhpg、运动和控制

这是目前的代码

td <- read.delim("H:/Desktop/TAB DATA.txt")
td$history<-factor(td$history)
fit<-lda(history~mhpg+exercise+control, data=td)
git<-predict(fit)
xx<-subset(td, select=c(mhpg, control, exercise))
cor(xx,git$x)
aggregate(git$x~history,data=td,FUN=mean)
tst<-lm(cbind(mhpg,control,exercise)~history,data=td)

上面的代码基本上是用于判别分析的。

现在我想为分类分析生成频率分类和百分比分类表。

我尝试的代码(我从其他人那里采样但无济于事)是:

td[6] <- git$class
td$V6<-factor(td$V6)
ftab<-table(td$history,dt$V6)
prop.table(ftab,1)

第 6 列是我的分组变量历史记录。

尝试将 td$V6 设为具有因子的分类变量时出现以下错误

Error in `$<-.data.frame`(`*tmp*`, "V6", value = integer(0)) : 
  replacement has 0 rows, data has 50

谁能引导我朝着正确的方向前进?我真的不知道为什么示例代码突然使用了大写 V。下面是数据。第 6 列是分组变量,历史。第 5 列是判别变量,控制。第 7 列是判别变量,运动。第 8 列是判别变量,mhpg。

1   3   6   0   2   0   4   2   4   3   0   6   0
1   4   5   0   0   1   2   5   4   6   1   4   1
1   4   4   0   2   1   1   8   6   7   1   2   1
2   4   9   0   2   1   0   6   7   8   1   4   1
2   4   3   1   4   1   2   6   6   6   1   4   1
2   5   7   0   1   1   3   6   7   7   1   1   1
2   5   8   0   1   1   1   6   6   7   1   5   1
2   6   7   0   1   1   0   9   8   8   1   3   1
2   6   4   1   2   1   2   5   7   6   1   5   1
3   4   10  0   1   1   1   8   5   7   1   4   1
3   4   4   0   1   1   1   8   9   8   1   3   1
3   4   7   0   1   0   1   6   3   4   0   8   0
3   5   4   1   4   1   2   5   4   5   0   5   1
3   5   7   0   2   1   1   7   5   7   1   4   1
3   5   6   0   0   1   0   10  9   10  1   3   1
3   5   6   0   2   1   1   9   10  9   1   2   1
3   5   5   1   2   1   2   5   4   4   0   9   1
3   6   2   1   4   1   3   6   4   4   0   7   1
3   6   3   1   2   1   2   7   5   5   0   6   1
3   6   5   1   2   1   2   6   7   6   1   6   1
3   6   7   1   3   1   3   5   4   4   0   8   1
3   6   5   1   2   1   2   5   3   3   0   10  1
3   7   8   0   0   1   1   7   6   7   1   5   1
3   7   5   1   2   1   1   5   5   5   0   6   1
3   7   6   1   2   0   4   3   1   2   0   9   0
3   8   6   1   2   1   1   6   5   5   0   7   1
3   8   9   0   0   1   0   7   5   6   1   3   1
4   5   5   1   2   1   1   5   6   5   0   6   1
4   5   5   1   2   0   2   3   3   4   0   8   0
4   6   8   0   0   1   2   8   7   7   1   4   1
4   6   6   1   3   1   2   5   4   4   0   7   0
4   6   5   1   3   1   2   4   3   2   0   8   0
4   7   2   0   3   0   4   3   6   6   1   4   1
4   7   4   1   3   0   3   4   2   1   0   7   0
4   7   7   1   3   0   4   4   5   5   0   7   0
4   7   6   1   3   0   3   3   6   5   0   4   0
5   7   5   1   1   0   4   1   7   4   0   7   1
5   8   1   1   3   0   3   4   8   7   1   5   0
5   8   3   1   3   0   3   4   5   6   1   5   1
5   9   4   1   4   0   3   2   7   5   0   5   1
5   9   6   1   4   0   3   4   6   6   1   7   0
5   10  4   1   3   0   3   4   2   3   0   6   0
1   1   8   0   1   0   2   5   6   5   0   6   1
1   2   7   0   1   1   1   7   8   9   1   5   0
1   2   7   0   1   1   0   7   5   6   1   5   1
1   3   5   0   1   1   2   7   8   8   1   5   0
2   3   3   1   2   1   2   6   7   6   1   6   0
2   3   6   1   1   1   2   7   6   4   0   7   0
2   4   6   1   3   1   3   6   5   5   0   6   0
2   5   4   1   3   1   3   4   4   3   0   6   0

【问题讨论】:

  • 什么是colnames(td)?我想V6 是您借用其代码的人的数据集中的列名。
  • @dd3 是的,我希望我知道样本数据是什么样的,但不幸的是我不知道。无论如何,我仍然提供了判别分析的代码,我的问题是要求分类分析表

标签: r classification


【解决方案1】:

试试:

tbl <- table(td$history,git$class)
tbl
#     0  1
#   0 13  2
#   1  1 34

prop.table(tbl)
#        0    1
#   0 0.26 0.04
#   1 0.02 0.68

这些是分类表。

关于为什么你的“借来的”代码没有运行,有太多的可能性。

首先,如果您导入没有列名的数据集,R 将分配名称Vn,其中 n 为 1、2、3 等。但如果是这种情况,您的代码将不会按照您所指的那样运行列historycontrol 等。所以至少这些必须正确命名。

第二,在行中:

ftab<-table(td$history,dt$V6)

您指的是dt$V6。 AFAICT 没有dt(这是错字吗?)。

【讨论】:

  • 是的,所有的列都必须有一个标题,我在excel中分别给了它们。 dt 实际上是一个错字。但是您提供了正确的代码。也许 V9 引用了没有标题的数据集中的分组变量,并且因为 git$class 是案例的预测分组,如果示例代码在使用时引用另一个数据集,那么当绘制为表格时,长度必然会不匹配git$class 尤其适用于这个数据集。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-09
  • 1970-01-01
  • 2021-04-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多