Tôi đang điều chỉnh một số mô hình phụ gia tổng quát bằng cách sử dụng mgcv
gói trong R và tôi muốn thử nghiệm giữa hai mô hình; cho dù tôi có thể loại bỏ một thuật ngữ hay không. Tôi, tuy nhiên, nhận được kết quả mâu thuẫn (như tôi có thể nói).
Một mô hình, m1
với một thuật ngữ trơn tru x
được thêm vào, dường như phù hợp hơn về , AIC, giải thích sai lệch và khi so sánh các mô hình sử dụng phép thử F. Tuy nhiên, tầm quan trọng của thuật ngữ trơn tru không đáng kể (cũng không phải là khi tôi thêm vào mô hình dưới dạng hiệp phương tuyến tính, thay vì spline).
Là sự giải thích của tôi về các bài kiểm tra điều khoản trơn tru chính xác? Nhiều như tôi có thể hiểu trang trợ giúp, là các bài kiểm tra là gần đúng, nhưng có một sự khác biệt khá lớn ở đây.
Các mô hình đầu ra
m1 <- gam(out ~ s(x) + s(y) + s(z), data=dat)
> summary(m1)
#
# Family: gaussian
# Link function: identity
#
# Formula:
# out ~ s(x) + s(y) + s(z)
#
# Parametric coefficients:
# Estimate Std. Error t value Pr(>|t|)
# (Intercept) -7.502e-16 1.209e-01 0 1
#
# Approximate significance of smooth terms:
# edf Ref.df F p-value
# s(x) 4.005 4.716 1.810 0.136
# s(y) 8.799 8.951 4.032 4.01e-05 ***
# s(z) 7.612 8.526 5.649 4.83e-07 ***
# ---
# Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
#
# R-sq.(adj) = 0.213 Deviance explained = 24.8%
# GCV = 6.9741 Scale est. = 6.6459 n = 455
> AIC(m1)
#[1] 2175.898
> m2 <- gam(out ~ s(y) + s(z), data=dat)
> summary(m2)
#
# Family: gaussian
# Link function: identity
#
# Formula:
# out ~ s(y) + s(z)
#
# Parametric coefficients:
# Estimate Std. Error t value Pr(>|t|)
# (Intercept) 1.705e-15 1.228e-01 0 1
#
# Approximate significance of smooth terms:
# edf Ref.df F p-value
# s(y) 8.726 8.968 5.137 6.78e-07 ***
# s(z) 8.110 8.793 5.827 1.55e-07 ***
# ---
# Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
#
# R-sq.(adj) = 0.187 Deviance explained = 21.7%
# GCV = 7.144 Scale est. = 6.8639 n = 455
> AIC(m2)
#[1] 2187.168
> anova(m1, m2, test="F")
# Analysis of Deviance Table
#
# Model 1: out ~ s(x) + s(y) + s(z)
# Model 2: out ~ s(y) + s(z)
# Resid. Df Resid. Dev Df Deviance F Pr(>F)
# 1 433.58 2881.6
# 2 437.16 3000.7 -3.5791 -119.1 5.0073 0.0009864 ***
EDIT : thêm mô hình từ ý kiến
> summary(m3 <- gam(out ~ s(x) + s(y) + s(z), data=dat, select=TRUE))
#Family: gaussian
#Link function: identity
#Formula:
#out ~ s(x) + s(y) + s(z)
#Parametric coefficients:
# Estimate Std. Error t value Pr(>|t|)
#(Intercept) -1.588e-14 1.209e-01 0 1
#Approximate significance of smooth terms:
# edf Ref.df F p-value
#s(x) 4.424 9 1.750 0.00161 **
#s(y) 8.260 9 3.623 5.56e-06 ***
#s(z) 7.150 9 5.329 4.19e-09 ***
#---
#Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
#R-sq.(adj) = 0.212 Deviance explained = 24.7%
#GCV = 6.9694 Scale est. = 6.6502 n = 455
select
, nhưng tôi thậm chí không chắc chắn hơn về cách giải thích điều này. Nó dẫn đến một mô hình với số liệu thống kê phù hợp gần như giống nhau ( kém hơn một chút ) về r2, aic, v.v. nhưng giá trị p cho thuật ngữ s (x) bây giờ thấp hơn nhiều. Vì vậy, nếu tham số không bị thu hẹp, những gì đang thay đổi.
select = TRUE
không?
mgcv::gam
không bị phạt hồi quy. Đặtselect = TRUE
và sau đó các điều khoản có thể được loại bỏ khỏi mô hình trong khi lắp. Tuy nhiên, nếu mục tiêu của bạn là dự đoán, tôi khuyên bạn nên sử dụng bộ dữ liệu thử nghiệm và đào tạo độc lập hoặc ít nhất là xác thực chéo.