对于' qda'某些群组中的错误太小

时间:2017-03-06 00:11:45

标签: r error-handling subset

# 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'

我同时使用sqldfsubset功能,但它们不起作用。感谢。

1 个答案:

答案 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)

然后进行剩下的分析。