在列表R中的lda函数中插入多个变量



我有6个变量,我想测试哪一个是线性判别分析lda的最佳组合。

我创建了一个包含所有组合的列表。

我想循环浏览这个列表,并为每个组合运行lda

lda公式希望用+指定列名,如下所示:

lda(classification~ variable1+variable2, data=mydata)

然而,如果我在lda函数中插入列表的值,我会得到一个错误

unlist(mylist[i])
"variable1"     "variable2"
Error in model.frame.default(formula = mylist ~ unlist(mylist[i]),  : 
variable lengths differ

可重复的示例(变量是恒定的,用于说明目的(

classification<-c("a","b","c","d","e","f")
variable1<-c(1,1,1,1,1,1)
variable2<-c(1,1,1,1,1,1)
variable3<-c(1,1,1,1,1,1)
variable4<-c(1,1,1,1,1,1)
variable5<-c(1,1,1,1,1,1)
variable6<-c(1,1,1,1,1,1)
mydata<-data.frame("classification","variable1","variable2","variable3","variable4","variable5","variable6")
para_combo1<-combn(mydata[2:7],1, simplify = FALSE)
para_combo2<-combn(mydata[2:7],2, simplify = FALSE)
para_combo3<-combn(mydata[2:7],3, simplify = FALSE)
para_combo4<-combn(mydata[2:7],4, simplify = FALSE)
para_combo5<-combn(mydata[2:7],5, simplify = FALSE)
para_combo6<-combn(mydata[2:7],6, simplify = FALSE)
para_combo<-c(para_combo1,para_combo2, para_combo3, 
para_combo4,para_combo5, para_combo6)
#manual example
lda_table<-lda(classification~ variable1+variable2, data= mydata)
#example I would loop
lda_table<-lda(classification~ para_combo[7] , data= mydata)

我不知道如何将我的组合编码为lda需要的格式

除了提供公式外,您还可以分别提供参数x分组中的特性和类:

lda.result <- lda(x=mydata[,c(1,3)], grouping=mydata$classification)
# or simply:
lda.result <- lda(mydata[,c(1,3)], mydata$classification)

注意,R中的函数lda实际上不仅适用于两个变量,而且适用于任意数量的变量(有时称为"多重判别分析"(。因此,没有必要尝试所有的变量组合,但可以让lda自己解决。