# 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
功能,但它们不起作用。感谢。
答案 0 :(得分:2)
变量type
是一个有6个级别的因素:&#34; WinF&#34;,&#34; Veh&#34;,Head&#34;,&#34; WinNF&#34;,& #34;精读&#34;和&#34; Tabl&#34;。当你这样做时:
adf <- subset(df, type=="WinF"|type=="WinNF"|type=="Veh"|type=="Head")
您保留这些级别中的4个行,但变量本身仍有6个级别。因此,您的样本中没有表示剩余的2个级别,这是qda
抱怨的内容。
您可以通过将type
转换回字符变量来解决此问题:
adf$type <- as.character(adf$type)
然后进行剩下的分析。