Skip to content

[R-es] Agregar ruido a una serie de tiempo

7 messages · Carlos Andres Perez Angarita, Francisco Rodríguez, rubenfcasal

#
Es posible agregar ruido a una serie de tiempo

Tengo series de tiempo que tienen un comportamiento funcional, quisiera
agregar ruido para que parezcan señales mas reales. Normalmente las series
de tiempo se suavizan a traves de filtros, es posible hacer el proceso
inverso con algun paquete de R

Gracias por la atención

CARLOS ANDRES PEREZ
#
Hola buenos días:
Yo cuando he tenido que hacer estos trabajos, lo que hacía era coger la serie temporal como un vector y construía un vector aleatorio de igual longitud con una distribución dada, por ejemplo generando números según una normal 0, sigma (si la serie está centrada en 0) y la sumaba directamente
Te remito un ejemplo trivial para ver si he entendido realmente la pregunta
t = 1:50y1 <- cos(t)mu = mean(y1)
#Serie cíclica centrada en 0y1 = y1-mua <- 0.3*rnorm(20)
#Serie con ruido normal de intensidad 0.3y2 <- y1 + aplot (y1, type="l", col = "blue")plot (y2, type="l", col = "blue")
Un saludo

  
  
#
Bueno, realmente no es necesaria que la serie esté centrada en este caso, ya que estoy sumando un ruído blanco
Un saludo

From: fjroar en hotmail.com
To: caaperezan en gmail.com; r-help-es en r-project.org
Date: Wed, 5 Nov 2014 13:00:49 +0000
Subject: Re: [R-es] Agregar ruido a una serie de tiempo

Hola buenos d?as:
Yo cuando he tenido que hacer estos trabajos, lo que hac?a era coger la serie temporal como un vector y constru?a un vector aleatorio de igual longitud con una distribuci?n dada, por ejemplo generando n?meros seg?n una normal 0, sigma (si la serie est? centrada en 0) y la sumaba directamente
Te remito un ejemplo trivial para ver si he entendido realmente la pregunta
t = 1:50y1 <- cos(t)mu = mean(y1)
#Serie c?clica centrada en 0y1 = y1-mua <- 0.3*rnorm(20)
#Serie con ruido normal de intensidad 0.3y2 <- y1 + aplot (y1, type="l", col = "blue")plot (y2, type="l", col = "blue")
Un saludo
_______________________________________________
R-help-es mailing list
R-help-es en r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es
#
Muchas gracias francisco, por su aporte y colaboracion, mi objetivo es
modificar una serie de tiempo, y al agregarle ruido con el objetivo de
generar dispersion cuando realize PCA (Analisis de componentes
principales), de este modo las muestras se disperzan

CARLOS ANDRES

El 5 de noviembre de 2014, 8:13, Francisco Rodríguez <fjroar en hotmail.com>
escribió:

  
  
#
Hola a todos,

     En el caso de datos temporales los errores suelen ser dependientes. 
Se que hay por ahí funciones de paquetes para simular este tipo de datos 
(e.g.  e1071::rwiener). Yo en casos sencillos suelo emplear una 
aproximación más directa. Por ejemplo introducir dependencia a partir de 
la factorización de Cholesky de la matriz de covarianzas. A continuación 
incluyo un código de ejemplo:

# Datos funcionales (se puede pensar como un proceso temporal siendo x 
el tiempo)
n <- 100
p <- 50
x <- seq(0, 1, length = p)

# Media
mu <- sin(2*pi*x)

# Covarianzas (dependiendo de la distancia entre los datos)
x.dist <- as.matrix(dist(x))
x.cov <- exp(-x.dist)     # covariograma exponencial
# Alternativamente considerar más parámetros: x.var*exp(-x.dist/x.scale)

# Factorización de la matriz de covarianzas
U <- chol(x.cov)

# Simulación
set.seed(1)
z <- matrix(rnorm(n * p), nrow = p)
y <- mu + t(U) %*% z

matplot(x, y, type="l")
lines(x, mu, lwd=2)

     Un saludo,
         Rubén.


El 05/11/2014 14:13, Francisco Rodríguez escribió:
#
Algo asi quisiera
Es propable agregar ruido a una señal o serie de tiempo? Con algun paquete R



CARLOS ANDRES

El 5 de noviembre de 2014, 10:20, Carlos Andres Perez Angarita <
caaperezan en gmail.com> escribió:

  
  
#
Hola Carlos buenos días:
Como ves he reproducido (más o menos) el gráfico en R, en principio no conozco qué ecuación estás utilizando, a nivel de reproducir, si no ofreces más datos del problema, que sepas que sí se puede hacer. Te paso el código con lo que he montado tu problema:
#Estos 2 parámetros define como quieres tu ruidoInterpola_Ruido = 100Intensidad_Ruido = 0.2
t <- 0:Interpola_Ruidot <- t/(Interpola_Ruido / 10)
#Construyo la función linealy <- 0.4 * t - 1
#Meto un salto en la función linealy <- ifelse(t >= 6, y = y - 2, y)
#Intoduzco un ruido blanco. Se puede pensar si se quiere con#alguna dependencia temporal, pero voy a lo sencilloset.seed(1)y_ruido = y + Intensidad_Ruido * rnorm((Interpola_Ruido + 1))
#Preparo los datos para su representaciónconjunto <- cbind(y,y_ruido)
#Represento las 2 series simultaneamentematplot (t, conjunto, type = "l")

help(matplot)


Por supuesto, este código es generalizable para que se pueda "jugar" con muchas señales y características asociadas a esta y muy posiblemente haya algún paquete relacionado con el problema, aunque en principio lo desconozco.
Para montar, este ejemplo en concreto, no hace falta más que el R básico, pero posiblemente alguien informe mejor si hay algo específico al respecto
Un saludo
Date: Wed, 5 Nov 2014 16:46:53 -0500
Subject: Re: [R-es] Agregar ruido a una serie de tiempo
From: caaperezan en gmail.com
To: fjroar en hotmail.com
CC: r-help-es en r-project.org

Algo asi quisieraEs propable agregar ruido a una señal o serie de tiempo? Con algun paquete R


CARLOS ANDRES
El 5 de noviembre de 2014, 10:20, Carlos Andres Perez Angarita <caaperezan en gmail.com> escribió:
Muchas gracias francisco, por su aporte y colaboracion, mi objetivo es modificar una serie de tiempo, y al agregarle ruido con el objetivo de generar dispersion cuando realize PCA (Analisis de componentes principales), de este modo las muestras se disperzan
CARLOS ANDRES
El 5 de noviembre de 2014, 8:13, Francisco Rodríguez <fjroar en hotmail.com> escribió:



Bueno, realmente no es necesaria que la serie esté centrada en este caso, ya que estoy sumando un ruído blanco
Un saludo

From: fjroar en hotmail.com
To: caaperezan en gmail.com; r-help-es en r-project.org
Date: Wed, 5 Nov 2014 13:00:49 +0000
Subject: Re: [R-es] Agregar ruido a una serie de tiempo

Hola buenos d?as:
Yo cuando he tenido que hacer estos trabajos, lo que hac?a era coger la serie temporal como un vector y constru?a un vector aleatorio de igual longitud con una distribuci?n dada, por ejemplo generando n?meros seg?n una normal 0, sigma (si la serie est? centrada en 0) y la sumaba directamente
Te remito un ejemplo trivial para ver si he entendido realmente la pregunta
t = 1:50y1 <- cos(t)mu = mean(y1)
#Serie c?clica centrada en 0y1 = y1-mua <- 0.3*rnorm(20)
#Serie con ruido normal de intensidad 0.3y2 <- y1 + aplot (y1, type="l", col = "blue")plot (y2, type="l", col = "blue")
Un saludo
_______________________________________________
R-help-es mailing list
R-help-es en r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es 		 	   		  



 		 	   		  
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20141106/a390d90c/attachment-0001.html>
------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: Ejemplo_R.JPG
Type: image/jpeg
Size: 23036 bytes
Desc: no disponible
URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20141106/a390d90c/attachment-0001.jpe>