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.
0 votos
@markleeds El
simulation
es una clase S4 que contiene atributos/campos/ranuras. Para obtener las ranuras delsimulation
objeto que escribestr(simulation)
. Observará quesimulation
es una clase llamada yuima.data y contiene un atributo llamadodata
. Dentro de este atributo, se puede observar otro atributo llamadozoo.data
que contiene una lista de tres objetos de serie temporal llamados "Serie 1", "Serie 2", "Serie 3". Supuse que estos eran los datos de salida, ya que los únicos otros datos que contenía la clase, eran los datos originales. Además, se puede acceder a los atributos a través de@
.1 votos
Gracias Pleb. Es muy apreciado y útil.