การตรวจสอบข้าม GAM เพื่อทดสอบข้อผิดพลาดการทำนาย


10

คำถามของฉันเกี่ยวกับเกมในแพ็คเกจ mgcv R เนื่องจากขนาดตัวอย่างเล็กฉันต้องการตรวจสอบข้อผิดพลาดการทำนายโดยใช้การตรวจสอบความถูกต้องแบบลาก่อน มันสมเหตุสมผลหรือไม่ ฉันมีแพคเกจหรือรหัสที่ฉันสามารถทำได้หรือไม่? errorest()ฟังก์ชั่นในIPREDแพคเกจไม่ทำงาน ชุดข้อมูลการทดสอบอย่างง่ายคือ:

library(mgcv)
set.seed(0)
dat <- gamSim(1,n=400,dist="normal",scale=2)
b<-gam(y~s(x0)+s(x1)+s(x2)+s(x3),data=dat)
summary(b)
pred <- predict(b, type="response")

ขอบคุณมากสำหรับความช่วยเหลือของคุณ!


คุณสามารถดูฟังก์ชั่นCVgam inside-r.org/packages/cran/gamclass/docs/CVgamฉันหวังว่านี่จะช่วยได้
user051514

คำตอบ:


3

ผมชอบแพคเกจcaretสำหรับสิ่งที่ต้องการนี้ แต่โชคร้ายที่ฉันเพิ่งอ่านที่คุณไม่สามารถระบุformulaในgamว่ามัน

"เมื่อคุณใช้รถไฟกับโมเดลนี้คุณจะไม่สามารถระบุสูตรเกมได้ (ในเวลานี้) caret มีฟังก์ชั่นภายในที่แสดงสูตรตามจำนวนระดับที่ไม่ซ้ำกันที่ผู้ทำนายแต่ละคนมีกล่าวอีกนัยหนึ่ง คำศัพท์เหล่านี้เรียบเนียนและเป็นเอฟเฟกต์หลักแบบเส้นตรงแบบเก่า "

แหล่งที่มา: /programming/20044014/error-with-train-from-caret-package-using-method-gam

แต่ถ้าคุณให้trainเลือกเงื่อนไขที่ราบรื่นในกรณีนี้มันจะสร้างโมเดลของคุณอย่างแน่นอน การวัดประสิทธิภาพเริ่มต้นในกรณีนี้คือ RMSE แต่คุณสามารถเปลี่ยนได้โดยใช้summaryFunctionอาร์กิวเมนต์ของtrainControlฟังก์ชัน

ฉันคิดว่าหนึ่งในข้อเสียเปรียบหลักของ LOOCV คือเมื่อชุดข้อมูลมีขนาดใหญ่จะใช้เวลาตลอดไป เนื่องจากชุดข้อมูลของคุณมีขนาดเล็กและใช้งานได้ค่อนข้างรวดเร็วฉันคิดว่าเป็นตัวเลือกที่สมเหตุสมผล

หวังว่านี่จะช่วยได้

library(mgcv)
library(caret)

set.seed(0)

dat <- gamSim(1, n = 400, dist = "normal", scale = 2)

b <- train(y ~ x0 + x1 + x2 + x3, 
        data = dat,
        method = "gam",
        trControl = trainControl(method = "LOOCV", number = 1, repeats = 1),
        tuneGrid = data.frame(method = "GCV.Cp", select = FALSE)
)

print(b)
summary(b$finalModel)

เอาท์พุท:

> print(b)
Generalized Additive Model using Splines 

400 samples
  9 predictors

No pre-processing
Resampling: 

Summary of sample sizes: 399, 399, 399, 399, 399, 399, ... 

Resampling results

  RMSE      Rsquared 
  2.157964  0.7091647

Tuning parameter 'select' was held constant at a value of FALSE

Tuning parameter 'method' was held constant at a value of GCV.Cp

> summary(b$finalModel)

Family: gaussian 
Link function: identity 

Formula:
.outcome ~ s(x0) + s(x1) + s(x2) + s(x3)

Parametric coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)   7.9150     0.1049   75.44   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

Approximate significance of smooth terms:
        edf Ref.df       F  p-value    
s(x0) 5.173  6.287   4.564 0.000139 ***
s(x1) 2.357  2.927 103.089  < 2e-16 ***
s(x2) 8.517  8.931  84.308  < 2e-16 ***
s(x3) 1.000  1.000   0.441 0.506929    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

R-sq.(adj) =  0.726   Deviance explained = 73.7%
GCV =  4.611  Scale est. = 4.4029    n = 400

1

ใน mgcv library pdf มันบอกว่า;

"ด้วยโครงสร้างของแบบจำลองที่ระบุโดยสูตรแบบจำลองเกม gam () จะพยายามค้นหาความเรียบที่เหมาะสมสำหรับแต่ละแบบจำลองที่ใช้โดยใช้เกณฑ์ข้อผิดพลาดในการทำนายหรือวิธีการอิงตามความน่าจะเป็น GACV) เมื่อไม่ทราบพารามิเตอร์มาตราส่วนหรือตัวประมาณความเสี่ยงแบบไม่ลำเอียง (UBRE) เมื่อทราบ

"gam ใน mgcv แก้ปัญหาการประมาณค่าพารามิเตอร์ให้เรียบโดยใช้เกณฑ์การตรวจสอบทั่วไป (GCV): nD / (n - DoF) 2

หรือ

เกณฑ์การประเมินความเสี่ยงแบบไม่เอนเอียง (UBRE): D / n + 2sDoF / n - s "

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.