# load the library and data
library('MASS')
library('sqldf')
data(fgl, package = 'MASS')
df <- data.frame(fgl)
# (a)select chosen glass types
#adf <- sqldf("select * from df where type='WinF' or type='WinNF' or type='Veh' or type='Head'")
adf <- subset(df, type=="WinF"|type=="WinNF"|type=="Veh"|type=="Head")
traindata <- adf[1:128,]
testdata <- adf[129:192,]
#typetesting <- adf$type[129:192,]
# LDA
# fit the qad model based on the training
qdamodel = qda(type~RI+Na+Mg+Al+Si+K+Ca+Ba+Fe, data=traindata)
我有一个错误
Error in qda.default(x, grouping, ...) :
some group is too small for 'qda'
我同时使用
sqldf
和 subset
功能,但它们不起作用。谢谢。
最佳答案
变量 type
是一个具有 6 个级别的因子:“WinF”、“Veh”、“Head”、“WinNF”、“Con”和“Tabl”。当你这样做时:
adf <- subset(df, type=="WinF"|type=="WinNF"|type=="Veh"|type=="Head")
您保留其中 4 个级别的行,但变量本身仍然有 6 个级别。因此,您的样本中没有显示剩余的 2 个级别,这就是
qda
提示。您可以通过转换
type
来解决此问题回到字符变量:adf$type <- as.character(adf$type)
然后进行其余的分析。
关于r - 某些组中的错误对于 'qda' 来说太小了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42615643/