3.4 Case Studies of Knowledge Management in Software Engineering
3.4.3 Telenor Telecom Software
Adem´as de los gr´aficos de dispersi´on, a veces se necesita trazar histogramas de frecuencias para observar la forma en la que se distribuyen los datos de las mediciones de una variable aleatoria.
A continuaci´on se describir´a la construcci´on de un histograma de frecuencias para representar una distribuci´on de datos.
La generaci´on de n´umeros aleatorios
Supongamos que los valores de la variable aleatoria son los que se presentan a continuaci´on y que se asignan al vector x. Los valores se generan usando la funci´on rnorm :
Esta funci´on genera 157 n´umeros aleatorios con distribuci´on gaussiana con media mean y desviaci´on t´ıpica sd ; si se omiten dichos par´ametros, entonces se considera un adistribuci´on normal, con media igual a cero y desviaci´on t´ıpica igual a 1.
En este ejercicio el lector no debe esperar obtener un gr´afico igual al que se obtiene de la distribuci´on de datos, pues en cada computadora los valores aleatorios generados son diferentes. Sin embargo, a grosso modo, los histogramas se pareceran en algo, pues proceden de l amisma funci´on generadora.
Adicionalmente a esto, el lector puede generar un conjunto de n´umeros alea- torios diferente si usa otro valor que no sea 157, y una media y desviaci´on t´ıpica de su agrado. A pesar de que puedan presentarse diferencias notables, el procedimiento es el mismo en todos los casos.
Para trazar el histograma se usa la funci´on hist que resulta en el gr´afico de la figura 27:
> hist(x)
As´ı, se ha logrado trazar el histograma de frecuencias del modo m´as simple posible en R, dejando que el programa aplique los par´ametros de construcci´on que tiene ya por omisi´on.
Sin embargo, lo que conviene es utilizar la l´ınea de comandos que se presenta m´as abajo, en la que la construcci´on del histograma se asigna a una variable, almacenando as´ı informaci´on que, a primera vista, est´a oculta a los ojos del usuario.
> h <- hist(x)
en este caso, adem´as de que el histograma aparece en una ventana gr´afica, los resultados de los c´alculos que hace el programa y no se muestran, quedan almacenados en la variable h.
Antes de conocer el contenido de la variable h, quiz´as convenga averiguar algunos valores de la distribuci´on, como:
> min(x) [1] 2.963557 > max(x) [1] 20.96525 > mean(x) [1] 12.7569 > sd(x) [1] 3.258798
Como puede verse, la media y la desviaci´on t´ıpica difieren de los valores es- pecificados al usar la funci´on rnorm, pero la diferencia no es muy importante por lo que se pueden aceptar los resultados que se obtuvieron con las funciones anteriores (min, max, mean, sd). Despu´es de todo, la funci´on rnorm se utiliza para generar muestras n´umeros aleatorios, as´ı que todo va bien hasta ahora.
Al igual que muchas de las funciones de R, hist cuenta con par´ametros definidos por omisi´on. Para conocerlos basta con escribir:
> h
que es la variable en la que se almacenaron los resultados de la funci´on hist, para que se observe
$breaks [1] 2 4 6 8 10 12 14 16 18 20 22 $counts [1] 2 3 9 15 27 44 34 17 4 2 $density [1] 0.006369427 0.009554140 0.028662420 0.047770701 0.085987261 0.140127389 [7] 0.108280255 0.054140127 0.012738854 0.006369427 $mids [1] 3 5 7 9 11 13 15 17 19 21
$xname [1] "x" $equidist [1] TRUE attr(,"class") [1] "histogram"
Como puede verse, aparecen los nombres de las secciones que contiene la variable, como cuando escribimos names(hist), solo que ahora el programa muestra tambi´en los valores contenidos en cada secci´on.
Analicemos algunas secciones. Para empezar veamos el contenido de la sec- ci´on breaks.
[1] 2 4 6 8 10 12 14 16 18 20 22
Al observar el hsitograma y este conjunto de valores se tiene que > min(h$breaks)
[1] 2 y que
> max(h$breaks) [1] 22
y hagamos dos comparaciones:
primero min(h$breaks)<min(x) y luego max(h$breaks)>max(x)
as´ı, la construccion del histograma se hace considerando un intervalo de valores m´as amplio que x, por lo que la funci´on hist, en su forma m´as simple, desarrolla los c´alculos sin intervenci´on del usuario.
Luego > h$counts
[1] 2 3 9 15 27 44 34 17 4 2 > length(h$counts)
[1] 10
Se trata de diez valores que contiene la secci´on, que es el mismo n´umero de barras en el histograma. Cada uno de estos valores es igual a la frecuencia del intervalo de clase.
Otro modo de observar los valroes num´ericos de las frecuencias se logra pre- senta´andolos directamente sobre el histograma, como sigue:
> h <- hist(x, labels=TRUE)
Como se puede ver en la figura 28, los valores de las frecuencias aparecen en la parte superior de las columnas del histograma.
El n´umero de barras o columnas que aparecen se debe a que el programa utiliza el criterio de Sturges, por omisi´on, sin embargo, es posible cambiar el n´umero de barras como sigue:
> h <- hist(x, labels=TRUE, breaks=15)
Tambi´en puede dar color a las barras
> h <- hist(x, labels=TRUE, col="gray")
Puede asignarse un color espec´ıfico al borde de las barras > h <- hist(x, labels=TRUE, col="gray", border="red")
Las barras pueden llenarse con un patr´on de l´ıneas
> h <- hist(x, border="red", density=10, angle=45, col="darkgreen")