LOESS qui permet les discontinuités


14
  • Existe-t-il une technique de modélisation comme LOESS qui autorise zéro, une ou plusieurs discontinuités, où le moment des discontinuités n'est pas connu a priori?
  • Si une technique existe, existe-t-il une implémentation existante dans R?

1
discontinuités à des valeurs x connues ou à des valeurs x inconnues? (x connu est assez facile)
Glen_b -Reinstate Monica

@glen J'ai mis à jour la question: je m'intéresse aux situations où le moment des discontinuités n'est pas connu a priori.
Jeromy Anglim

Cela peut être une question théorique / stupide, mais vous dites "timing": est-ce pour une utilisation avec des séries chronologiques? Je crois que la plupart des réponses ci-dessous supposent cela ("point de changement, etc."), bien que LOESS puisse être appliqué dans des situations non chronologiques, avec des discontinuités. Je pense.
Wayne

Réponses:


15

Il semble que vous souhaitiez effectuer une détection de points de changement multiples suivie d'un lissage indépendant au sein de chaque segment. (La détection peut être en ligne ou non, mais votre application n'est probablement pas en ligne.) Il y a beaucoup de documentation à ce sujet; Les recherches sur Internet sont fructueuses.

  • DA Stephens a écrit une introduction utile à la détection des points de changement bayésiens en 1994 (App. Stat. 43 # 1 pp 159-178: JSTOR ).
  • Plus récemment, Paul Fearnhead a fait du bon travail (par exemple, inférence bayésienne exacte et efficace pour plusieurs problèmes de points de changement , Stat Comput (2006) 16: 203-213: PDF gratuit ).
  • Il existe un algorithme récursif, basé sur une belle analyse de D Barry & JA Hartigan
    • Modèles de partition de produit pour les modèles de point de changement, Ann. Stat. 20: 260-279: JSTOR ;
    • A Bayesian Analysis for Change Point Problems, JASA 88: 309-319: JSTOR .
  • Une implémentation de l'algorithme Barry & Hartigan est documentée dans O. Seidou & TBMJ Ourda, Détection de points de changement multiples basée sur la récursion dans la régression linéaire multivariée et application aux flux fluviaux, Water Res. Res., 2006: PDF gratuit .

Je n'ai pas cherché attentivement les implémentations R (j'en avais codé une dans Mathematica il y a un moment) mais j'apprécierais une référence si vous en trouvez une.


3
J'ai trouvé le package bcp R jstatsoft.org/v23/i03/paper qui implémente l'algorithme Barry & Hartigan
Jeromy Anglim

@Jeromy: Merci pour le package R et pour avoir inséré les liens vers les références.
whuber

7

faites-le avec la régression en ligne brisée de koencker, voir page 18 de cette vignette

http://cran.r-project.org/web/packages/quantreg/vignettes/rq.pdf

En réponse au dernier commentaire de Whuber:

Cet estimateur est défini comme ceci.

, x ( i )x ( i - 1 )xR ,x(i)x(i1)i

,ei:=yiβix(i)β0

, z - = max ( - z , 0 ) ,z+=max(z,0)z=max(z,0)

, λ 0τ(0,1)λ0

min.βRn|τ,λi=1nτei++i=1n(1τ)ei+λi=2n|βiβi1|

donne le quantile souhaité (c'est-à-dire dans l'exemple, τ = 0,9 ). λ dirige le nombre de points de rupture: pour λ grand, cet estimateur se réduit à aucun point de rupture (correspondant à l'estimateur de régression quantique linéaire classique).ττ=0.9λλ

Splines de lissage quantile Roger Koenker, Pin Ng, Stephen Portnoy Biometrika, Vol. 81, n ° 4 (déc., 1994), pp. 673-680

PS: il existe un document de travail à accès ouvert portant le même nom et portant les mêmes noms, mais ce n'est pas la même chose.


C'est une bonne idée: merci pour la référence. Cependant, les résidus de cet ajustement particulier semblent assez mauvais, ce qui me fait me demander dans quelle mesure il identifie les points de changement potentiels.
whuber

whuber: je ne sais pas combien vous connaissez la théorie de la régression quantile. Ces lignes ont un avantage majeur sur les splines: elles ne supposent aucune distribution d'erreur (c'est-à-dire qu'elles ne supposent pas que les résidus sont gaussiens).
user603

@kwak Cela semble intéressant. Ne pas supposer qu'une distribution d'erreur normale serait utile pour l'une de mes applications.
Jeromy Anglim

En effet, ce que vous obtenez de cette estimation sont des quantiles conditionnels réels: en un mot, ce sont des splines / régressions LOESS ce que les boîtes à moustaches sont pour le couple (moyenne, sd): une vue beaucoup plus riche de vos données. Ils y conservent également leur validité dans un contexte non gaussien (comme les erreurs asymétriques, ...).
user603

@kwak: Les résidus sont fortement corrélés avec la coordonnée x. Par exemple, il existe de longues séries de résidus négatifs ou de petits résidus positifs. Qu'ils aient une distribution gaussienne ou non, alors, cela n'a pas d'importance (et n'est pas pertinent dans toute analyse exploratoire): cette corrélation montre que l'ajustement est mauvais.
whuber

6

Voici quelques méthodes et packages R associés pour résoudre ce problème

L'estimation du battage d' ondelettes en régression permet des discontonuités. Vous pouvez utiliser le package wavethresh dans R.

De nombreuses méthodes basées sur les arbres (non loin de l'idée d'ondelettes) sont utiles lorsque vous avez des discontinuités. Par conséquent, package treethresh, package tree!

Dans la famille des méthodes de " maximum de vraisemblance locale " ... entre autres: Travaux de Pozhel et Spokoiny: Lissage des poids adaptatifs (package aws) Travail de Catherine Loader: package locfit

Je suppose que tout noyau plus fluide avec une bande passante variant localement fait le point, mais je ne connais pas le package R pour cela.

note: je ne comprends pas vraiment quelle est la différence entre LOESS et la régression ... est-ce l'idée que dans les algorithmes LOESS devraient être "en ligne"?


1
Re LOESS: Ma terminologie n'est peut-être pas tout à fait correcte. Par LOESS, je fais référence aux modèles qui prédisent Y à partir de X en utilisant une forme d'ajustement de courbe localisée. par exemple, comme on le voit dans la plupart de ces graphiques: google.com/…
Jeromy Anglim

2

Il devrait être possible de coder une solution dans R en utilisant la fonction de régression non linéaire nls, les splines b (la fonction bs dans le package spline, par exemple) et la fonction ifelse.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.