在预测函数中在R中运行DFA时出错

时间:2015-09-05 20:01:27

标签: r

我尝试在一组物种X站点数据(物种是列,站点是行)上运行cv DFA,其中一个分组行名为" ZONE"。

我使用过之前成功使用的股票脚本,但现在我从预测功能中得到了一个我无法做出正面或反面的新错误。< / p>

我的代码很简单:

data2.lda<-lda(ZONE~SP1+SP2+SP3+SP4+SP5+SP6+SP7+SP8+SP9+SP10+SP11+SP12+SP13+SP14+SP15
,data=data2.x, Cna.action="na.omit",CV=TRUE)

list(data2.lda)

data2.lda.p<-predict(data2.lda,newdata=data2.lda.x(,c[2:17]))$class
data2.lda.p

我收到的错误是:

  

UseMethod出错(&#34;预测&#34;):    没有适用的方法来预测&#39;应用于类&#34;列表&#34;

的对象

我的数据与之前使用此代码的格式相同。 我哪里做错了? 感谢任何帮助,谢谢!

更新:我已经发现问题涉及代码的交叉验证部分。在R中进行编码时,是否有其他交叉验证LDA的规则?

2 个答案:

答案 0 :(得分:1)

您的问题是predict需要一个模型对象作为其第一个参数。使用lda选项运行CV=T时,它将返回列表对象而不是模型对象。 lda文档说

  

如果CV = TRUE,则返回值是包含组件类MAP的列表   分类(一个因子),以及后验,后验概率   课程。

     

否则它是类&#34; lda&#34;的对象。含有   以下组件:

答案 1 :(得分:0)

根据PCantalupo的回答,我设法达到了我的目标。需要在预测模型期间应用交叉验证过程,而不是原始模型。功能代码是:

data2.lda<-lda(ZONE~SP1+SP2+SP3+SP4+SP5+SP6+SP7+SP8+SP9+SP10+SP11+SP12+SP13+SP14+SP15
,data=data2.x, Cna.action="na.omit")

list(data2.lda)

data2.lda.p<-predict(data2.lda,CV=TRUE,newdata=data1[c(2:17)])$class
data2.lda.p
tab<-table(data2.lda.p,data2[,1])
tab
summary(table(data2.lda.p,data2[,1]))
diag(prop.table(tab,1))
sum(diag(prop.table(tab)))