问题描述
我有6个变量,我想测试哪个变量是线性判别分析lda
的最佳组合。
我创建了包含所有组合的列表。
我想遍历此列表并为每个组合运行一个lda
lda公式希望使用+
指定列名,如下所示:
lda(classification~ variable1+variable2,data=mydata)
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)
variable2<-c(1,1)
variable3<-c(1,1)
variable4<-c(1,1)
variable5<-c(1,1)
variable6<-c(1,1)
mydata<-data.frame("classification","variable1","variable2","variable3","variable4","variable5","variable6")
para_combo1<-combn(mydata[2:7],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[,mydata$classification)
请注意,R中的函数 lda 实际上不仅适用于两个变量,而且适用于任意数量的变量(有时称为“多重判别分析”)。因此,无需尝试所有成对的变量组合,但是您可以让 lda 自己解决。