2015-09-05 67 views
0

R中運行DFA我試圖運行一組物質X網站數據的CV DFA(種列,網站都行)與名爲「ZONE」一排分組。錯誤而在預測功能

我使用的是股票劇本我已經成功地使用過,但現在我越來越從預測功能,我不能讓首長或尾巴一個新的錯誤。

我的代碼只是:

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( 「預測」): 施加到的一個目的爲 '預測' 不適用方法班級「名單」

我的數據和以前使用此代碼的形式相同。 我哪裏錯了? 任何幫助表示讚賞,謝謝!

更新:我已經想通了,這個問題涉及到代碼的交叉驗證部分。是否有額外的規則來交叉驗證我在R中編碼時遺漏的LDA?

+0

我想你想用'data2.x'而不是''中data2.lda.x' predict' – pcantalupo

+0

做出這樣的轉變並沒有發揮作用,但不幸的是謝謝你你的評論。但是,當我放棄交叉驗證(移除CV = TRUE)時,代碼完美無缺。我知道這是一個正確的命令,是否有其他規則使用留下一個交叉驗證,我錯過了? – Jesse001

回答

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))) 
1

您的問題是predict要求其第一個參數模型對象。當您運行ldaCV=T選項,它返回一個列表對象不是一個模型對象。該lda文件說

如果CV = TRUE的返回值是組件類,在MAP 分類(倍),和後,後驗概率爲 類的列表。

否則,它是類的一個對象「LDA」包含 以下組件:

+0

謝謝你的迴應,這有助於我理解問題所在。但是,如果是這種情況,那麼你應該如何實施簡歷選項?如果不進行交叉驗證,DFA幾乎沒有價值。 新的問題:什麼是編寫一個模式,我想預測CV = TRUE選項的正確方法是什麼? – Jesse001

+0

您可以創建沒有CV = TRUE選項的模型,並在此模型上使用'predict'。 CV = TRUE選項可讓您檢查模型的準確性。然後由您決定是否要放棄此模型並生成新模型。 – pcantalupo