wiki:RandVar
close Warning: Can't synchronize with repository "(default)" (/var/svn/mms does not appear to be a Subversion repository.). Look in the Trac log for more information.

Version 2 (modified by Pedro Gea, 13 years ago) (diff)

--

Paquete RandVar

El paquete RandVar permite la creación de variables aleatorias. Las variables aleatorias se basan en una gramática y en un tipo de distribución o muestra. Por ejemplo, es igualmente posible: crear una variable aleatoria tipo Real con distribución normal, crear una variable aleatoria tipo Serie a partir de una estructura ARIMA o crear una variable aleatoria tipo Matrix basado en una muestra de matrices de igual dimensión.

Variables aleatorias de tipo Real

Para crear una variable aleatoria tipo Real con distribución Normal, se especificará la media y la desviación típica. Por ejemplo:

RandVar::@Real.Normal r1 = RandVar::@Real.Normal::Default(0, 10);

Es posible obtener un ejemplo de esta variable usando el método GetExperiment():

Real ej1 = r1::GetExperiment(?);

De forma similar, utilizando el método GetExperiment() es posible obtener una serie ejemplo a partir de una variable aleatoria tipo Serie, u obtener una matriz ejemplo a partir de una variable aleatoria tipo Matrix.

También podemos crear una variable aleatoria tipo Real a partir de un conjunto de valores reales.

Set sample = [[1, 2, 1.2, 3, 1.1, 1.9, 2.2, 5, 1.3]];
RandVar::@Real.Sample r2 = RandVar::@Real.Sample::Default(sample);

Para conocer la media y la desviación típica usamos GetMean() y GetSigma, por ejemplo:

Real rMean = r2::GetMean(?);
Real rSigma = r2::GetSigma(?);

Variables aleatorias de tipo Matrix

Para crear una variable aleatoria tipo Matrix con distribución normal, podemos especificar (en este orden): la cantidad de filas, cantidad de columnas, la media y la desviación típica. Por ejemplo:

RandVar::@Matrix.Normal m1 = RandVar::@Matrix.Normal::Definition(10, 2, 1, 10);

Podemos crear una variable aleatoria tipo Matrix basados en una muestra como sigue:

RandVar::@Matrix.Sample m2 = RandVar::@Matrix.Sample::Default(
  For(1, 1000, Matrix (Real k) 
  { 
    m1::GetExperiment(?) 
  })
);

Si queremos conocer su media y desviación típica, usamos:

Serie mean = m2::GetMean(?);
Serie stddev = m2::GetVariance(?);

Variables aleatorias de tipo Serie

Podemos crear varias clases de variables aleatorias tipo Serie. Por ejemplo: basados en una distribución normal, a partir de una muestra, a partir de la especificación de una estructura ARIMA, o a partir de una distribución BoxCox Normal.

En el caso de variables aleatorias tipo Serie con distribución Normal pudiera crearse especificando (en ese orden): fechado, fecha inicial, fecha final, media y desviación típica. Por ejemplo:

RandVar::@Serie.Normal ts1 = RandVar::@Serie.Normal::Definition(C, y2008, y2009, 0, 9);

Una alternativa es especificar una Serie con los valores de la media y la desviación típica que puede ser un valor real o una Serie. Ejemplo:

Serie serieMean = ...
Serie serieSigma = ...
...
RandVar::@Serie.Normal ts1 = RandVar::@Serie.Normal::Default(serieMean, 5);
RandVar::@Serie.Normal ts2 = RandVar::@Serie.Normal::Default(serieMean, serieSigma);

Un ejemplo de variable aleatoria tipo Serie creada a partir de una muestra:

Set sample = For(1, 1000, Serie (Real k) 
{ ts1::GetExperiment(?) });
RandVar::@Serie.Sample ts3 = RandVar::@Serie.Sample::Default(sample);

Podríamos conocer su media y desviación típica por medio de GetMean() y GetSigma(). Ejemplo:

Serie mean = ts3::GetMean(?);
Serie variance = ts3::GetVariance(?);