R / mgcv: Warum produzieren te () und ti () Tensorprodukte unterschiedliche Oberflächen?


11

Das mgcvPaket für Rhat zwei Funktionen zum Anpassen von Tensorproduktwechselwirkungen: te()und ti(). Ich verstehe die grundlegende Arbeitsteilung zwischen den beiden (Anpassen einer nichtlinearen Wechselwirkung vs. Zerlegen dieser Wechselwirkung in Haupteffekte und eine Wechselwirkung). Was ich nicht verstehe, ist warum te(x1, x2)und ti(x1) + ti(x2) + ti(x1, x2)kann (leicht) unterschiedliche Ergebnisse liefern.

MWE (angepasst von ?ti):

require(mgcv)
test1 <- function(x,z,sx=0.3,sz=0.4) { 
  x <- x*20
 (pi**sx*sz)*(1.2*exp(-(x-0.2)^2/sx^2-(z-0.3)^2/sz^2)+
             0.8*exp(-(x-0.7)^2/sx^2-(z-0.8)^2/sz^2))
}
n <- 500

x <- runif(n)/20;z <- runif(n);
xs <- seq(0,1,length=30)/20;zs <- seq(0,1,length=30)
pr <- data.frame(x=rep(xs,30),z=rep(zs,rep(30,30)))
truth <- matrix(test1(pr$x,pr$z),30,30)
f <- test1(x,z)
y <- f + rnorm(n)*0.2

par(mfrow = c(2,2))

# Model with te()
b2 <- gam(y~te(x,z))
vis.gam(b2, plot.type = "contour", color = "terrain", main = "tensor product")

# Model with ti(a) + ti(b) + ti(a,b)
b3 <- gam(y~ ti(x) + ti(z) + ti(x,z))
vis.gam(b3, plot.type = "contour", color = "terrain", main = "tensor anova")

# Scatterplot of prediction b2/b3
plot(predict(b2), predict(b3))

Die Unterschiede sind in diesem Beispiel nicht sehr groß, aber ich frage mich nur, warum es überhaupt Unterschiede geben sollte.

Sitzungsinfo:

 > devtools::session_info("mgcv")
 Session info
 -----------------------------------------------------------------------------------
 setting  value                       
 version  R version 3.3.1 (2016-06-21)
 system   x86_64, linux-gnu           
 ui       RStudio (0.99.491)          
 language en_US                       
 collate  en_US.UTF-8                 
 tz       <NA>                        
 date     2016-09-13                  

 Packages      ---------------------------------------------------------------------------------------
 package * version date       source        
 lattice   0.20-33 2015-07-14 CRAN (R 3.2.1)
 Matrix    1.2-6   2016-05-02 CRAN (R 3.3.0)
 mgcv    * 1.8-12  2016-03-03 CRAN (R 3.2.3)
 nlme    * 3.1-128 2016-05-10 CRAN (R 3.3.1)
r  gam  mgcv  conditional-probability  mixed-model  references  bayesian  estimation  conditional-probability  machine-learning  optimization  gradient-descent  r  hypothesis-testing  wilcoxon-mann-whitney  time-series  bayesian  inference  change-point  time-series  anova  repeated-measures  statistical-significance  bayesian  contingency-tables  regression  prediction  quantiles  classification  auc  k-means  scikit-learn  regression  spatial  circular-statistics  t-test  effect-size  cohens-d  r  cross-validation  feature-selection  caret  machine-learning  modeling  python  optimization  frequentist  correlation  sample-size  normalization  group-differences  heteroscedasticity  independence  generalized-least-squares  lme4-nlme  references  mcmc  metropolis-hastings  optimization  r  logistic  feature-selection  separation  clustering  k-means  normal-distribution  gaussian-mixture  kullback-leibler  java  spark-mllib  data-visualization  categorical-data  barplot  hypothesis-testing  statistical-significance  chi-squared  type-i-and-ii-errors  pca  scikit-learn  conditional-expectation  statistical-significance  meta-analysis  intuition  r  time-series  multivariate-analysis  garch  machine-learning  classification  data-mining  missing-data  cart  regression  cross-validation  matrix-decomposition  categorical-data  repeated-measures  chi-squared  assumptions  contingency-tables  prediction  binary-data  trend  test-for-trend  matrix-inverse  anova  categorical-data  regression-coefficients  standard-error  r  distributions  exponential  interarrival-time  copula  log-likelihood  time-series  forecasting  prediction-interval  mean  standard-error  meta-analysis  meta-regression  network-meta-analysis  systematic-review  normal-distribution  multiple-regression  generalized-linear-model  poisson-distribution  poisson-regression  r  sas  cohens-kappa 

4
Ernsthaft Leute!? Während die Implementierung eindeutig mgcv-spezifisch ist (mir ist keine andere Standard-Software für GAMs bekannt, die diese ANOVA-ähnliche Zerlegung bivariater Glättungen ermöglicht), sind das Problem und die Antwort eindeutig statistisch. Die Modelle, die angepasst werden, sind unter der Haube aufgrund der zusätzlichen Strafmatrizen, die beim Zerlegen der Randbegriffe aus der Komponente "Interaktion" entstehen, nicht dieselben. Dies ist nicht spezifisch für mgcv.
Stellen Sie Monica wieder her - G. Simpson

1
@ GavinSimpson Ich habe eine Frage zu Meta über die Aktualität oder auf andere Weise dieser Frage gestellt
Silverfish

Antworten:


15

Dies ist oberflächlich das gleiche Modell, aber in der Praxis gibt es beim Anpassen einige subtile Unterschiede. Ein wichtiger Unterschied besteht darin, dass das Modell mit ti()Begriffen im Vergleich zum te()Modell mehr Glättungsparameter schätzt :

> b2$sp
te(x,z)1 te(x,z)2 
3.479997 5.884272 
> b3$sp
    ti(x)     ti(z)  ti(x,z)1  ti(x,z)2 
 8.168742 60.456559  2.370604  2.761823

und dies liegt daran, dass den beiden Modellen mehr Strafmatrizen zugeordnet sind; Im ti()Modell haben wir einen pro "Term" im Vergleich zu nur zwei im te()Modell, einen pro Randglättung.

Ich sehe Modelle mit ti()als verwendet, um zu entscheiden, ob ich oder möchte . Ich kann diese Modelle nicht vergleichen, wenn ich Begriffe verwende . Sobald ich festgestellt habe, ob ich benötige kann ich das Modell mit anpassen, wenn ich es benötige, oder mit separat für jeden Randeffekt, wenn ich nicht benötige .y^=β0+s(x,y)y^=β0+s(x)+s(y)te()ti()s(x,y)te()s()s(x,y)

Beachten Sie, dass Sie die Modelle durch Anpassen mit method = "ML"(oder "REML", aber nicht mit "festen" Effekten vergleichen können, es "REML"sei denn, alle Begriffe sind vollständig bestraft, was standardmäßig nicht der Fall ist, aber sagen würde mit select = TRUE).

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.