簡體   English   中英

在R處的預測功能上運行DFA時出錯

[英]Error while running DFA in R at the predict function

我正在嘗試使用名為“ ZONE”的分組行在一組物種X站點數據(物種是列,站點是行)上運行CV DFA。

我使用的是以前成功使用過的股票腳本,但是現在我從無法實現正負的預測函數中收到一個新錯誤。

我的代碼很簡單:

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(“ predict”)中的錯誤:沒有適用於“預測”的適用方法應用於“列表”類的對象

我的數據與該代碼以前的用法相同。 我哪里做錯了? 任何幫助表示贊賞,謝謝!

更新:我發現問題涉及代碼的交叉驗證部分。 在使用R編碼時,是否還有其他規則可以交叉驗證我所缺少的LDA?

您的問題是, predict需要為其第一個參數使用模型對象。 當您使用CV=T選項運行lda時,它將返回一個列表對象而不是模型對象。 lda文檔說

如果CV = TRUE,則返回值是包含組件類別,MAP分類(一個因子)以及類別的后驗概率和后驗概率的列表。

否則,它是包含以下組件的“ lda”類的對象:

根據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)))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM