1 votos

R - Trazado de una trayectoria de muestra tridimensional en yuima?

Pido disculpas si este no es el lugar apropiado para publicar esto - esta es mi primera contribución a Quantitative Finance Stack Exchange. Espero que alguien pueda ayudarme con el siguiente problema. Estoy usando yuima para modelar un proceso de difusión tridimensional:

model <- setModel(drift = c("((-1)/(2-x1))-1/2","0","0"),                    
                  diffusion = matrix(c("1","0","0","0","1","0","0","0","1"), 3, 3),
                  solve.variable = c("x1","x2","x3"))

y luego simularlo y trazarlo:

sampling <- setSampling(Initial = 0, Terminal = 10, n = 1000)
yuima <- setYuima(model = model, sampling = sampling)
simulation <- simulate(yuima,xinit = 1)
plot(simulation)

que parece funcionar. Sin embargo: esto genera un parcela de cada serie temporal x1 , x2 y x3 a lo largo del tiempo cuando en realidad lo que estoy tratando de visualizar es cómo la trayectoria tridimensional (con coordenadas polares x1 , x2 y x3 ) se vería así.

A menos que haya una versión de plot3D o similar en yuima (Lo he buscado en Google sin suerte), lo que realmente me ayudaría sería que hubiera una forma de convertir las (tres) series temporales simulation en una matriz o una lista, en cuyo caso estoy bastante seguro de que podría obtener la trama deseada.

Cualquier ayuda será muy apreciada. Todo lo mejor.

Edición: la respuesta que he seleccionado ha solucionado mi problema, pero para futuras referencias estos son los contenidos de simulate :

    > print(str(simulate))
Formal class 'standardGeneric' [package "methods"] with 8 slots
  ..@ .Data     :function (object, nsim = 1, seed = NULL, xinit, true.parameter, space.discretized = FALSE, increment.W = NULL, increment.L = NULL, 
    method = "euler", hurst, methodfGn = "WoodChan", sampling = sampling, subsampling = subsampling, ...)  
  ..@ generic   : chr "simulate"
  .. ..- attr(*, "package")= chr "yuima"
  ..@ package   : chr "yuima"
  ..@ group     : list()
  ..@ valueClass: chr(0) 
  ..@ signature : chr [1:13] "object" "nsim" "seed" "xinit" ...
  ..@ default   : NULL
  ..@ skeleton  : language (function (object, nsim = 1, seed = NULL, xinit, true.parameter, space.discretized = FALSE, increment.W = NULL, i| __truncated__ ...
NULL

0 votos

Hola: Deberías mostrar el contenido de simulate haciendo print(str(simulate)). espero que no sea demasiado grande. dado eso, yo mismo o alguien más puede mostrarte cómo hacer una matriz o un data.frame de x,y y z.

0 votos

Hola Mark, he editado la pregunta tal y como has sugerido por si le sirve a alguien en el futuro.

0 votos

Gracias JMG. Desgraciadamente, no uso mucho el S4 así que no tengo claro cómo se puede saber por la salida str que el componente era zoo.data y una lista con esos 3 componentes. a los que Pleb accedió. Tal vez sea necesario entonces otro paso y Pleb posiblemente pueda comentarlo para futuros lectores.

0voto

xrost Puntos 129

Puede recuperar las simulaciones del objeto de simulación Yuima a través de las llamadas de campo :

Ser1 <- simulation@data@zoo.data$"Series 1"
Ser2 <- simulation@data@zoo.data$"Series 2"
Ser3 <- simulation@data@zoo.data$"Series 3"

Y luego convertir lo anterior en una matriz utilizando cbind :

Sims_to_matrix <- cbind(Ser1, Ser2, Ser3)

Ahora, puedes utilizar tu herramienta de trazado 3D favorita (p. ej. Plotly ), para conseguir lo que deseas. También puedes construir tus propios gráficos de líneas usando ggplot2 . Espero que esto ayude.

1 votos

Muchas gracias, ¡eso resuelve mi problema!

Finanhelp.com

FinanHelp es una comunidad para personas con conocimientos de economía y finanzas, o quiere aprender. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X