2013-11-15 79 views
0

我正在使用軟件包「pls」和「ChemometricswithR」製作一個PLS模型。我能夠執行模型,但我有一個問題。我進行了一次假驗證,如果我要求係數,我只能看到一個方程(我假設所有方程的平均值是在驗證中留下一個驗證的)。PLS係數與r

有沒有辦法看到所有的「n」方程(其中n是我的矩陣中的觀測值的數目)與所有的斜率係數?

這是我使用的模型:Mod2中< -plsr(SH_uve〜matrix_uve,NCOMP = 11,數據= dataset_uve,驗證= 「LOO」,刀切= TRUE)

回答

0

這會更容易,如果你回答給了更多的信息,你如何調用函數等?基於你所說的你在做什麼,我假設你正在使用包「pls」和「ChemometricswithR」的函數crossval()PCA()。我對這些函數並不熟悉,但文檔中指出係數爲「(僅在 jackknife爲TRUE時)具有摺疊迴歸係數的陣列。尺寸分別對應於預測器,響應,組件數量和段數「。所以我會說確保jackknife=TRUE,並且您在crossval()中指定了正確的段數。如果你使用不同的功能,你應該編輯你的問題並添加相關信息。

+0

我用這個函數 MOD2 <-plsr(SH_uve〜matrix_uve,NCOMP = 11,數據= dataset_uve,確認= 「LOO」,刀切= TRUE) 我沒有用crossval()....在你看來,我應該怎麼做?與206段交叉(我的觀察)?我不明白crossval()函數中有什麼段... – user2997766

+0

好吧,看看這些函數看起來有些重疊。交叉狀態描述mvr對象的「獨立」交叉驗證函數,它們爲交叉類型'yarn.cv < - crossval(yarn.pcr,segments = 10)'提供了這個例子,其中'yarn.pcr < - pcr(密度〜msc(NIR),6,data = yarn)'。所以也許嘗試'crossval(mod2,segments = 206,jackknife = TRUE)'並且繼續瀏覽文檔,這可能會有更好的方式來做你想做的事。 – CCurtis

+0

好的我試過了。我使用:crossval(mod2,segments = 206,jackknife = TRUE),並且出現此錯誤: dimnames(cvCoef)< - c(dimnames(coef(object)),list(paste(「Seg」,: 'dimnames'[3]的長度不等於數組範圍 – user2997766

0

好的,我找到了解決方案。

我使用的模型是:

mod2<plsr(SH_uve~matrix_uve,ncomp=11,data=dataset_uve,validation="LOO",jackknife = TRUE) 

的係數矩陣是mod2的陣列內。我用下面的命令調用了矩陣:

coefficients<-mod2$validation$coefficients[,,11,]並且我得到了用於離開一交叉驗證的所有等式的係數矩陣。