Thursday, February 16, 2017

Déménagement Moyenne Sas Exemple

À partir de la version 6.08 du système SAS, PROC EXPAND dans le logiciel SASETS peut être utilisé pour effectuer diverses transformations de données. Ces transformations incluent: les prospects, les retards, les moyennes mobiles pondérées et non pondérées, les sommes mobiles et les sommes cumulatives, pour n'en nommer que quelques-unes. De nombreuses nouvelles transformations ont été ajoutées dans la version 6.12, incluant des spécifications distinctes pour les moyennes mobiles centrées et arrières. Ces nouvelles transformations ont obligé à modifier la syntaxe de certaines des transformations prises en charge avant la version 6.12. Des exemples de la façon de spécifier la syntaxe des moyennes mobiles centrées et arrières utilisant la version 6.11 et antérieure et la version 6.12 et plus tard sont donnés ci-dessous. PROC EXPAND peut calculer soit une moyenne mobile centrée, soit une moyenne mobile vers l'arrière. Une moyenne mobile centrée sur 5 périodes est calculée en faisant la moyenne d'un total de 5 valeurs consécutives de la série (la valeur de la période courante en plus des deux valeurs immédiatement précédentes et deux valeurs immédiatement après la valeur courante). Une moyenne mobile en arrière de 5 périodes est calculée en faisant la moyenne de la valeur de la période courante avec les valeurs des 4 périodes immédiatement précédentes. La syntaxe suivante illustre comment utiliser la spécification TRANSFORM (MOVAVE n) pour calculer une moyenne mobile centrée sur 5 périodes à l'aide de la version 6.11 ou antérieure: Pour calculer une moyenne mobile en arrière de période n en utilisant la version 6.11 ou antérieure, utilisez TRANSFORM (MOVAVE) N LAG k), où k (n-1) 2 si n est impair ou où k (n-2) 2 si n est pair. La syntaxe suivante illustre comment utiliser la spécification TRANSFORM (CMOVAVE n) pour calculer une moyenne mobile centrée sur 5 périodes en utilisant la version 6.12 ou suivante: La syntaxe suivante illustre comment utiliser la spécification TRANSFORM (MOVAVE n) pour calculer une moyenne mobile en arrière de 5 périodes en utilisant la version 6.12 ou ultérieure: Pour plus d'informations, voir Opérations de transformation dans le chapitre EXPAND du Guide de l'utilisateur de SASETS. Si vous n'avez pas accès à SASETS, vous pouvez calculer une moyenne mobile dans l'étape DATA comme illustré dans cet exemple de programme. Informations sur le système d'exploitation et les versionsLe code d'exemple de l'onglet Code complet illustre comment calculer la moyenne mobile d'une variable à travers un ensemble de données entier, sur les dernières N observations d'un ensemble de données ou sur les dernières N observations dans un groupe BY. Ces exemples de fichiers et d'exemples de code sont fournis par SAS Institute Inc. sans garantie d'aucune sorte, expresse ou implicite, y compris, mais sans s'y limiter, les garanties implicites de qualité marchande et d'adéquation à un usage particulier. Les bénéficiaires reconnaissent et acceptent que SAS Institute ne saurait être tenu pour responsable de tout dommage résultant de l'utilisation de ce matériel. En outre, SAS Institute ne fournira aucun support pour les matériaux contenus ici. Ces exemples de fichiers et d'exemples de code sont fournis par SAS Institute Inc. sans garantie d'aucune sorte, expresse ou implicite, y compris, mais sans s'y limiter, les garanties implicites de qualité marchande et d'adéquation à un usage particulier. Les bénéficiaires reconnaissent et acceptent que SAS Institute ne saurait être tenu pour responsable de tout dommage résultant de l'utilisation de ce matériel. En outre, SAS Institute ne fournira aucun support pour les matériaux contenus ici. Calculer la moyenne mobile d'une variable à travers un ensemble de données entier, sur les dernières N observations dans un ensemble de données, ou sur les dernières N observations dans un groupe BY. Dans ce post, je montre un tour pour faire le calcul de la moyenne mobile Être étendu aux autres opérations nécessitant des fonctions de fenêtrage) qui est super rapide. 1. PROC EXPAND 2. DATA ETAPE 3. PROC SQL Mais de nombreux sites peuvent ne pas autoriser SASETS à utiliser PROC EXPAND et faire la moyenne mobile dans DATA STEP nécessite un certain codage et est sujet à erreurs. PROC SQL est un choix naturel pour les programmeurs juniors et dans de nombreux business cases la seule solution, mais SAS39s PROC SQL manque des fonctions de fenêtrage qui sont disponibles dans de nombreux DB pour faciliter le calcul de la moyenne mobile. Une technique que les gens utilisent habituellement est CROSS JOIN, ce qui est très coûteux et pas une solution viable pour les ensembles de données même de taille moyenne. Dans ce post, je montre un truc pour faire le calcul de la moyenne mobile (peut être étendu à d'autres opérations nécessitant des fonctions de fenêtrage) qui est super rapide. Considérons le calcul de la moyenne mobile le plus simple où les observations K à la traîne sont incluses dans le calcul, à savoir MA (K), ici nous mettons K5. On génère d'abord une donnée d'échantillon de 20 obs, où l'ID de variable doit être utilisée pour le fenêtrage et la variable X doit être utilisée dans le calcul MA, puis on applique le CROSS JOIN standard pour examiner d'abord les données résultantes, non groupées, Pour comprendre comment tirer parti de la structure de données. À partir de l'ensemble de données résultant, il est difficile de trouver un indice, maintenant let39s trier par quotbidquot colonne dans cet ensemble de données: à partir de ces données triées, il est clair que nous don39t ont effectivement CROSS JOIN ensemble ensemble de données originales, Nous pouvons générer un ensemble de données quotoperationquot qui contient la valeur de différence et laisser l'ensemble de données d'origine CROSS JOIN avec cet ensemble de données quotoperationquot beaucoup plus petit et toutes les données que nous devons utiliser pour le calcul MA seront là. Maintenant let39s le faire: CROSS JOIN données originales avec quotoperationquot données, trier par (a. idops), qui est en fait quotbid39 dans le jeu de données triées Notez que dans le code ci-dessus, il est nécessaire d'avoir ax multiplier par b. weight de sorte que les données Peut être intercalaire, sinon la même valeur X de la table d'origine sera sortie et le calcul MA sera échoué. La variable de poids explicite ajoute en fait plus de souplesse à l'ensemble du calcul MA. Bien que la définition de 1 pour tous obs résultent en un simple calcul de MA, affecter des poids différents aidera à résoudre le calcul MA plus complexes, comme donner d'autres observations moins de poids pour un MA décomposé. Si un paramètre K différent dans les calculs MA (K) est nécessaire, seul l'ensemble des données opérationnelles doit être mis à jour, ce qui est un travail triviale. Maintenant, le modèle de code réel pour le calcul MA (K) sera: Avec cette nouvelle méthode, il est intéressant de le comparer à l'auto coûteux CROSS JOIN ainsi qu'à PROC EXPAND. Sur mon poste de travail (Intel i5 3.8Ghz, 32 Go de mémoire, 1 To 72K HDD), auto CROSS JOIN est prohibitivement long en temps de fonctionnement (si les données sont grandes) alors que la nouvelle méthode utilise seulement 2X autant de temps que PROC EXPAND, les deux consommations de temps sont Trivial comparant à l'auto CROSS JOIN. La consommation de temps indiquée ci-dessous est en quotsecondquot. Ci-dessous les lecteurs de code peuvent exécuter et comparer vous-mêmes. Publié le 10 mai 2015 par Liang Xie SAS Programming for Data Mining


No comments:

Post a Comment