Bucles: Cálculo de la media y varianza muestral
Edit me

Introducción

Al trabajar con una serie de valores aleatorios, una forma de caracterizarlos es a travez de su media, que sería como el promedio de los valores posibles y de su varianza, que indica cuán dispersos están los valores al rededor de la media.

Octave posee las funciones mean() y var() para estimar estos parámetros, pero por fines didácticos vamos a hacer nuestra propia implementación.

Cálculo de la media

Dada una secuencia de valores , con , se define la media muestral (que denotamos ) como:

Si bien la sumatoria es matemáticamente bonita, en Octave tendemos a escribir todo de forma vectorial cuando sea posible. Por ejemplo:

Si , puede calcular la media haciendo el producto interno con un vector de unos , es decir, , de la forma:

Por ejemplo, vamos a calcular la media del siguiente conjunto de datos:

x = [3.1390; 1.6583; 3.5786; 3.1487; 3.2660; 2.5129; 3.1204; 3.9089; 1.5870; 1.4363; 2.6457; 4.2904];

Para sumar todos los elementos de ese vector, vamos a multiplicarlo por un vector lleno de unos de la dimensión correcta. Para ello nos valemos del comando ones():

unos = ones(1,12);
suma = unos*x

Vemos que al crear un vector de unos de dimensión y multiplicarlo por nuestro vector x de dimensión , el resltado de la operación matricial es la suma de todos los elementos de x.

¿Como se que mi vector tiene 12 elementos? porque los conté. En lugar de hacer la cuenta a mano, puedo pedirle a Octave que me de el largo del vector:

N = length(x)

Y una vez que tengo el largo, puedo obtener el promedio realizando la división. Quedaría:

N = length(x);
unos = ones(1, N);
suma = unos*x;

promedio = suma / N;

Ej 1 Utilizando el comando rand(1000,1) cree un vector con 1000 numeros aleatorios entre 0 y 1, y calcule su media utilizando el código anterior.

Vectores fila o columna

En este caso, el vector x es un vector columna. Pero ¿qué pasa si usamos un vector fila? Por ejemplo: xfila = [1.3, -0.43, 1.11];

Vemos que el programa falla porque al hacer el producto matricial las dimensiones no coinciden, ya que lo hicimos pensando en un vector columna.

Es posible convertir cualquier matriz o vector (sea fila o columna) en un vector columna utilizando la siguiente notacion:

xcolumna = xfila(:)

Esto permite que nuestro código se independice del tipo de vectores que usemos (lo cual es bueno).

Cálculo de la varianza muestral

De forma similar a la anterior, dada una secuencia de valores , con , se define la varianza muestral (que denotamos ) como:

(Note que se requiere haber calculado previamente la media muestral.)

Lo cual se puede escribir en forma vectoriaza como: Sea , se puede calcular la varianza haciendo el producto interno de consigo mismo.

Ej 2 Calcule la varianza muestral del vector x anteriormente utilizado.

Haciendo las cosas en serio

Para sumar todos los elementos del vector x existe la función sum(x). Multiplicar por un vector de unos no está mal, pero es más confuso.

Si bien acá calculamos la media y la varianza, Octave tiene funciones para todas estas cosas comunes, que nos evitan errores, tiempo y esfuerzo.