【问题标题】:Insert multiple variables in the lda function from a list R从列表 R 在 lda 函数中插入多个变量
【发布时间】:2020-10-12 09:50:42
【问题描述】:

我有 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 要求的格式

【问题讨论】:

  • 您能否解释一下为什么下面答案中给出的解决方案对您不起作用?

标签: r list lda


【解决方案1】:

除了提供公式外,还可以分别提供参数xgrouping中的特征和类:

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 自行解决。

【讨论】:

    猜你喜欢
    • 2017-12-31
    • 2022-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 2021-05-24
    • 2012-10-24
    相关资源
    最近更新 更多