Séries chronologiques avec plusieurs sujets et plusieurs variables


8

Je suis développeur web et statisticien débutant.

Mes données ressemblent à ceci

Subject  Week   x1  x2  x3  x4  x5  y1
A        1      .5  .6  .7  .8  .7  10
B        1      .3  .6  .2  .1  .3  8
C        1      .3  .1  .2  .3  .2  6  
A        2      .1  .9  1.5 .8  .7  5
B        2      .3  .6  .3  .1  .3  2
D        2      .3  .1  .4  .3  .5  10  

J'essaie de prédire y1 comme un produit des variables x. Cependant, j'ai des raisons de croire qu'il peut y avoir un décalage dans l'effet des multiples variables x sur y1, c'est-à-dire que les variables x de la semaine 1 pour le sujet A influencent y1 pour le sujet A dans la semaine 2.

Notez que tous les sujets n'auront pas de points de données pour chaque semaine (en fait, la plupart n'en auront pas). Les sujets auront tendance à avoir des points de données pour la semaine 1, 2, 3, 4 par exemple, puis tomberont et ne réapparaîtront pas avant la semaine 7,8,9. Je suis prêt à limiter mon analyse aux points de données où nous avons des données pour les N semaines précédentes étant donné mon hypothèse sur le décalage.

Comme je l'ai dit, je suis un novice et je ne suis pas sûr de la meilleure façon de traiter un ensemble de données de ce formulaire. J'espère effectuer cette analyse soit en R, Python, ou une combinaison des deux. Je ne pense pas que les variables x de la semaine en cours n'auront aucun effet. Je pense qu'ils auront un certain effet, peut-être plus important que les semaines précédentes. Je pense simplement que les semaines précédentes auront un certain effet.

Je m'attends à un décalage de deux à trois semaines. Pour donner un peu de contexte, l'analyse que j'essaie ici concerne le jugement de la qualité du trafic en ligne. Chaque semaine, j'obtiens un score évaluant la qualité d'un certain flux d'utilisateurs que j'envoie sur un site Web donné. J'essaie de trouver des mesures secondaires, telles que la distribution du navigateur, le pourcentage de clics en double, etc. qui me permettront de prédire à l'avance ce score.


Je prévois que ce ne sera pas une réponse complète, mais devrait vous donner un point de départ. Je commencerais par le contenu du chapitre 7 / section 6/7/8 du livre "Bayesian Statistical Modeling" de Peter Congdon. Mon problème impliquait la prédiction d'espace / temps des événements IED et était un peu plus complexe que le vôtre mais les pièces sont toutes là; J'essaie de trouver mon ancien code WinBUGS (que vous pourriez retravailler dans une implémentation R / JAGS). Cependant, il existe du code WinBUGS pour les exemples de Congdon et ils devraient vous fournir un bon point de départ.
Aengus

Étant donné que je suis novice, pensez-vous que vous pourriez décomposer à un niveau élevé ce que je dois faire et ce que cela représente en termes d'analyse? Merci beaucoup et tout code que vous pourriez fournir serait plus qu'apprécié! Je connais python et R.
Spencer

De quel décalage parlez-vous? Juste une semaine ou plusieurs semaines? Vous attendez-vous à ce queyweek n est fonction de la xs d'une seule semaine précédente ou de plusieurs semaines précédentes? Bien que votre exemple soit bien présenté, fournir un ensemble de variables du monde réel vous donnera probablement de meilleures réponses, car les répondeurs pourront voir ce que vous essayez de faire.
naught101

Je m'attends à ce qu'il y ait 2-3 semaines de retard. J'ai édité la question pour donner un exemple réel.
Spencer

Je la considérerais comme une simple régression. Les covariables sont x1 (t), x2 (t), ..., x5 (t) plus vos variables décalées x1 (t-1), x1 (t-2), etc. Selon le degré de sophistication que vous souhaitez obtenir, vous pouvez simplement deviner les décalages et tracer x1 (t-lag) par rapport à y1 et rechercher des relations ou vous pouvez exécuter une autocorrélation.Vous devriez pouvoir faire la première très rapidement dans R en utilisant des trames de données et vous n'avez de nombreux incréments de retard à se soucier. J'ai laissé de côté les sujets, mais je monte à bord. La façon la plus simple de commencer avec celles-ci est de les coder en tant que variables discrètes.
Aengus

Réponses:


1

Comme je l'ai mentionné dans ma note ci-dessus, je traiterais cela comme un problème de régression. Voici un lien pour construire, dans R, les variables lag (et lead) à partir de vos données ( R Head ).

Cette publication contient une brève introduction à l'utilisation des données résultantes dans un modèle de régression. Vous pourriez également vouloir faire un peu de recherche d'arrière-plan sur le package R dynlm (régression linéaire dynamique).


Je lis sur la régression linéaire dynamique et cela semble correspondre à ce que je recherche. Avez-vous des suggestions de lecture?
Spencer

Désolé, pas du haut de ma tête. Vous connaissez probablement déjà le paquet 'dlm' dans R; voici un lien avec un code R lien
Aengus

0

Vous pouvez créer des tableaux où le y1 est décalé de 0,1,2,3,4 semaines.

Ensuite, vous exécutez une analyse sur eux. Par exemple, vous pourriez créer un réseau neuronal qui essaie de prédire y1 à partir de x. Pour quelques idées, vous pouvez essayer Weka .

Ensuite, vous avez une certaine mesure de prédire y1 à partir de x pour chaque décalage. En utilisant cela, vous pouvez trouver le décalage qui convient le mieux.


Alternativement, vous pouvez créer une table qui inclut x de la semaine en cours, x de la semaine précédente, ... et y1. Faites ensuite une analyse de l'influence (par exemple PCA ) pour voir quelle semaine et quelle variable a le plus d'influence.


Je ne pense pas que les variables x de la semaine en cours n'auront aucun effet. Je pense qu'ils auront un certain effet, peut-être plus important que les semaines précédentes. Je pense simplement que les semaines précédentes auront un certain effet. De plus, comme je connais déjà R et python, je préférerais utiliser ces outils.
Spencer

@Spencer Vous trouverez des packages python / R pour tous les outils de Weka. Voir la réponse mise à jour.
j13r
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.