我是一个相对新手的用户,我正在尝试使用klaR包中的partimat()函数来绘制线性判别分析的决策边界,但我一直遇到同样的错误。我已经尝试根据手册以多种不同方式输入参数,但不断收到以下错误:
partimat.default(x,分组,...)出错: 至少需要两个班级
以下是我给出的输入示例:
partimat(sources1 [,C(3:19)],分组= sources1 [2],方法= “LDA”,PREC = 100)
其中我的数据表以名称“sources1”加载,第3列到第19列包含解释变量,第2列包含类。我也尝试过这样输入公式:
partimat(sources1 $组〜sources1 $二氧化钛+ sources1 $ V + sources1 $ CR + sources1 $ CO + sources1 $ NI + sources1 $ RB + sources1 $ SR + sources1 $ Y + sources1 $ ZR + sources1 $ NB + sources1 $ LA + sources1 $ GD + sources1 $ YB + sources1 $ HF + sources1 $ TA + sources1 $个+ sources1 $ U,数据= sources1)
这些是列标题。
我已成功在同一数据集上运行LDA而没有问题,所以我不太确定是什么问题。
答案 0 :(得分:3)
从partimat.default函数getAnywhere(partimat.default)
的源代码中可以看出
if (nlevels(grouping) < 2)
stop("at least two classes required")
因此,您可能尚未将分组列定义为因子变量。如果你试试summary(sources1[,2])
你会得到什么?如果它不是一个因素,请尝试
sources1[,2] <- as.factor(sources1[,2])
或者在方法2中尝试删除公式中每个变量名称上的"sources1$"
,因为您指定了在data
参数中查找这些变量名称的数据框。我认为你有效地指定了两次数据帧,例如,它可能正在寻找
"sources1$sources1$groups"
而不是
"sources1$groups"
如果没有进一步的错误消息或可重复的示例(即在帖子中包含一些数据),很难说真的。
HTH