Calculer la corrélation glissante entre deux variables dans une série chronologiquesalut
J'ai un ensemble de données qui se présente sous la forme d'une série chronologique avec des moyennes quotidiennes de données (la première colonne est la date). Je regarde actuellement ce qui est en corrélation avec une variable spécifique dans l'ensemble de données (appelez-la colonne X). Je voudrais vérifier si la corrélation dépend du temps, par exemple s'il y a des périodes avec une corrélation OK et d'autres périodes sans corrélation / faible ("activé" et désactivé pour des périodes différentes).
Ma première pensée a été de calculer la corrélation mobile / glissante entre la colonne X et les autres colonnes, par exemple pour les 7 derniers jours, le mois dernier, ...). Mes questions sont doubles:
1) Serait-ce un bon moyen de vérifier cela, ou y a-t-il une analyse intégrée dans JMP que je ne connais pas?
2) Si je devais calculer la «corrélation glissante» pour une série chronologique, comment pourrais-je la programmer dans la formule de la colonne?
D'avance: merci pour l'aide à un débutant!
Jens
AnalytiqueTableau de donnéesScriptingRe: Calculer la corrélation glissante entre deux variables dans une série chronologiqueJe vous suggère de vous pencher sur l'analyse des séries temporelles disponible dans JMP.Vous pouvez trouver de la documentation dans la bibliothèque de documentation JMP
Aide => Bibliothèque de documentation JMP
Si vous souhaitez poursuivre votre proposition de corrélation glissante, voici une formule qui peut être utilisée pour calculer cela.Cet exemple utilise la table de données Big Class de la bibliothèque d'exemples de données JMP
Aide => Exemple de bibliothèque de données
If( Row() >= 7,
y = :height[Index( Row() - 6, Row() )];
x = :weight[Index( Row() - 6, Row() )];
lin = Linear Regression( y`, x` );
Sqrt( lin[3]["RSquare"] );
)

Ci-joint un exemple de tableau de données avec la formule appliquée
Re: Calculer la corrélation glissante entre deux variables dans une série chronologiquesalut @JensD ,
Je suis tout à fait d'accord avec @txnelson , vous devriez vous pencher sur la plateforme des séries temporelles, c'est idéal pour examiner la corrélation croisée des données temporelles entre deux signaux. J'ai beaucoup utilisé cela pour comparer les signaux de données de production avec les données de contrôle qualité afin de trouver des décalages temporels.
Lorsque vous exécutez cette plate-forme, vous placez l'une des colonnes comme Y, Time Series et l'autre comme Input List (et choisissez que les délais d'autocorrélation représentent environ la moitié du nombre de lignes de votre table de données). Ensuite, vous voudrez exécuter l'utilitaire de corrélation croisée sous le bouton chaud à côté de l'analyse de la fonction de transfert.
Aussi, en s'appuyant sur quoi @txnelson écrit pour son code, vous pouvez même créer une variable de table (par exemple, rowlag) et lui donner une valeur et modifier sa formule de colonne pour être:
If( Row() >= :rowlag,
y = :height[Index(Row()-:rowlag+1, Row())];
y = :weight[Index(Row()-:rowlag+1, Row())];
lin = Linear Regression(y`, x`);
Sqrt(lin[3]["RSquare"]);
)
De cette façon, chaque fois que vous modifiez la valeur de rowlag dans la table de données, il mettra à jour cette colonne avec les valeurs de corrélation afin que vous puissiez facilement tester différents décalages sans changer la formule de colonne à chaque fois.
Bonne chance!,
DS
Re: Calculer la corrélation glissante entre deux variables dans une série chronologiqueMerci à vous deux, @txnelson et @DiedrichSchmidt .
Je vais essayer les deux alternatives pour voir les différences.
Jens