stl() décomposition de ne pas accepter univariée ts objet?
Je suis ont des problèmes avec la stl() le temps de la série de décomposition de la fonction dans la R de me dire mon ts objet n'est pas univariée quand il est réellement?
tsData <- ts(data = dummyData, start = c(2012,1), end = c(2014,12), frequency = 12)
> tsData
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2012 22 26 34 33 40 39 39 45 50 58 64 78
2013 51 60 80 80 93 100 96 108 111 119 140 164
2014 103 112 154 135 156 170 146 156 166 176 193 204
> class(tsData)
[1] "ts"
> stl(tsData, s.window = "periodic")
Error in stl(tsData, s.window = "periodic") :
only univariate series are allowed
> dput(dummyData)
structure(list(index = c(22L, 26L, 34L, 33L, 40L, 39L, 39L, 45L,
50L, 58L, 64L, 78L, 51L, 60L, 80L, 80L, 93L, 100L, 96L, 108L,
111L, 119L, 140L, 164L, 103L, 112L, 154L, 135L, 156L, 170L, 146L,
156L, 166L, 176L, 193L, 204L)), .Names = "index", class = "data.frame", row.names = c(NA,
-36L))
Quelqu'un sait comment résoudre ce problème?
Je ne comprends pas pourquoi vous dites que
Ce qui signifie Roland son une variable qui a été converti en un objet timeseries
Merci Steven, mais ce lien n'a pas beaucoup d'pertinente
Pouvez-vous ajouter
assurez-vous dput() a été ajouté à l'op
tsData
est univariée. Il n'est pas.Ce qui signifie Roland son une variable qui a été converti en un objet timeseries
Merci Steven, mais ce lien n'a pas beaucoup d'pertinente
Pouvez-vous ajouter
dput(dummyData)
s'il vous plaît?assurez-vous dput() a été ajouté à l'op
OriginalL'auteur moku | 2015-01-30
Vous devez vous connecter pour publier un commentaire.
Je ne suis pas 100% sûr de ce que la cause exacte du problème, mais vous pouvez résoudre ce problème en passant
dummyData$index
àts
au lieu de la totalité de l'objet:...
Je suppose que lorsque vous transmettez un
data.frame
à ladata
argument dets
, certains attributs supplémentaires report, et bien que cela ne semble pas être un problème avec de nombreuses fonctions qui prennent unts
objet de classe (univariée ou autre), apparemment c'est un problème pourstl
.Edit:
Regarder cela d'un peu plus loin, je pense que le problème a à voir avec la
dimnames
attribut être réalisée au cours de ladummyData
lorsqu'il est passé dans son ensemble. Remarque cet extrait du corps destl
:et de la définition de
matrix
:donc, même si vous êtes de passage à
stl
une des séries chronologiques univariées (l'originaltsData
), autant que la fonction est concerné, un vecteur avec une longueur de 2dimnames
attribut (c'est à dire unmatrix
) est pas univariées de la série. Il semble un peu étrange de faire de la gestion d'erreur de cette façon, mais je suis sûr que l'auteur de la fonction avait une très bonne raison pour cela.OriginalL'auteur nrussell
Pour éviter ces types de problèmes ou d'erreurs, essayez de faire une séries chronologiques univariées juste en formant les données brutes des points ou des valeurs, l'appel de ts() fonction.
Mieux parler vous devriez toujours mettre uniquement les valeurs de vos variables qui ne sont pas l'ensemble de la structure de la variable. Laissez-moi vous expliquer un peu par un exemple très simple:
Imaginez que vous avez une variable X qui est un vecteur (vraisemblablement importés ou formé à partir d'autres sources de données)par un 100x1 dimension, c'est à dire qu'il contient 100 valeurs ou des points de données. Si vous voulez faire une séries chronologiques univariées de ce vecteur de la mauvaise façon de le faire est comme comme comme vous l'avez fait pour votre cas:
ts(X, fréquence=24)
ATTENTION, la bonne façon de le faire est comme ceci:
ts(X[1:100], la fréquence=24)
ou même comme ceci:
ts(X[1:100,1], fréquence=24)
Je l'espère, mon cher ami, que vous ne pouvez l'éviter la prochaine fois vous avez besoin de faire une séries chronologiques univariées..!!
ts
à partir d'une colonne que vous souhaitez lire à partir d'uncsv
fichier? Donc, monX
est le (seul) de colonne d'un fichier. Je suis un newbie à R.Habituellement, vous pouvez utiliser certains de la lecture du fichier de commandes dans R (comme
read.csv
,read.csv2
ou mêmeread.delim
) pour créer un bloc de données à partir de ce fichier. Ensuite, vous pouvez utiliser les valeurs numériques ou du contenu des données créées.cadre e.g par écritX$x1[1:100]
si la première ou la seule colonne est nomméex1
) pour la convertir en une séries chronologiques univariées à l'aide dets()
de commande.OriginalL'auteur Elias
J'ai eu le même message d'erreur et en effet, comme mentionné par nrussell, le problème est que j'ai été en passant un moment de la série, qui a été aussi une matrice.
(Toutefois, le $index chose n'a pas fonctionné pour moi, et R est plaint qu'une ts objet doit avoir une ou plusieurs observations. Je suis assez nouveau sur R et n'ai aucune idée de pourquoi, mais pour moi, l'approche suivante a travaillé)
vous pouvez remédier à cela avec:
Et puis continuer à obtenir le tsl:
Si vous utilisez R Studio, vous pouvez voir que maintenant, votre timeseries est répertorié sous
alors qu'avant, il a probablement été répertorié comme
OriginalL'auteur s-heins
Problème peut être que vous n'êtes pas en précisant fin = c(aaaa,mm).
Si vous utilisez décomposer, vous n'avez pas besoin de spécifier la fin = . Si vous passez au format stl et à l'aide de quelques vieux code, vous aurez besoin d'ajouter ce paramètre (si vous n'avez pas à l'utiliser avec la décomposer).
Ce fixe le "unidimensionnelles" erreur de problème pour moi.
OriginalL'auteur jsm
Une autre façon de résoudre le problème avec les séries chronologiques de données est:
Veuillez comparer
avec
pour voir la différence.
OriginalL'auteur guest