Rubén Cuevas Menéndez

Anuncio
Rubén Cuevas Menéndez
Interpretación de los datos obtenidos
Nuestro parseador generará un “listado_parseado.txt” que estará preparado para ser leído por
cualquier programa. Utilizaremos R para el análisis del listado que hemos obtenido. Lo cargamos:
listado <- read.table("/home/rcm/listado_parseado.txt",
header=TRUE, sep=",", na.strings="NA", dec=".",
strip.white=TRUE)
Necesitamos separar los datos de cada muestra:
muestra1 <- subset(listado, subset=muestra==1)
muestra2 <- subset(listado, subset=muestra==2)
muestra3 <- subset(listado, subset=muestra==3)
muestra4 <- subset(listado, subset=muestra==4)
Análisis de los tiempos de transmisión de la muestra 1:
> numSummary(muestra1[,"segundos"], statistics=c("mean",
+ "sd", "quantiles", "cv", "skewness", "kurtosis"),
+ quantiles=c(0,.25,.5,.75,1), type="2")
mean
sd
cv
skewness kurtosis 0% 25% 50%
2.210865 5.197003 2.350665 7.920689 98.01905 0.48 0.59 0.71
75% 100% n
1.37 104.7 2625
Resulta muy evidente que no se trata de una distribución normal de los datos. El coeficiente de
asimetría toma un valor muy alto, por lo que la distribución es asimétrica a la derecha. Es decir, hay
valores altos bastante alejados de la media, mientras que los valores bajos están más concentrados y
cercanos al valor medio. El coeficiente de curtosis es extremadamente alto, lo que supone que hay una
frecuencia muy alta de valores concentrados en el centro, mientras que los valores en los extremos son
muy raros. Esta situación se ve fácilmente en los percentiles; el 75% de los tiempos son iguales o
menores que 1.37 segundos, mientras que el valor máximo se sitúa en 104.7 segundos. Si decimos al
programa que nos muestre también los percentiles 90 y 95, confirmaremos que los valores
extremadamente altos representan menos de un 5% de los datos de la muestra. La media no resulta
para nada representativa. El coeficiente de variación nos indica una dispersión relativa del 235% que
indica que es preferible elegir la mediana (percentil 50) como valor central. Entonces podemos decir que
la mitad de los tiempos fueron 0.71 segundos o menos, y la otra mitad 0.71 segundos o más. Dicho de
otra forma, cada archivo fue transferido en un tiempo de alrededor de 0.71 segundos.
Análisis de los tiempos de transmisión de la muestra 2:
> numSummary(muestra2[,"segundos"], statistics=c("mean",
+ "sd", "quantiles", "cv", "skewness", "kurtosis"),
+ quantiles=c(0,.25,.5,.75,1), type="2")
mean
sd
cv
skewness kurtosis 0% 25% 50%
2.244107 5.206983 2.320292 7.883185 96.70875 0.5 0.6 0.74
75% 100% n
1.44 104.1 2603
Los resultados son casi idénticos a los de la muestra 1 por lo que su interpretación es exactamente la
misma. Tenemos que escoger la mediana como valor central, por lo que en este caso decimos que los
tiempos de transferencia se situaron en torno a 0.74 segundos.
Análisis de los tiempos de transmisión de la muestra 3:
> numSummary(muestra3[,"segundos"], statistics=c("mean",
+ "sd", "quantiles", "cv", "skewness", "kurtosis"),
+ quantiles=c(0,.25,.5,.75,1), type="2")
mean
sd
cv skewness kurtosis 0% 25% 50%
1.370864 2.27998 1.66317 6.318308 62.94163 0.5 0.58 0.65
75% 100% n
1 40.52 2603
Los coeficientes de asimetría y de curtosis siguen siendo muy altos, aunque, al igual que la media y el
coeficiente de variación, son menores respecto a las muestras anteriores. Esto no nos sorprende ya que
en esta muestra ya se aplica la compresión de los ficheros, por lo que el tamaño de estos se reduce y por
tanto se reduce su tiempo de transmisión. Aun así, los valores bajos siguen estando muy concentrados y
cercanos al centro y representan la gran mayoría de los tiempos, mientras que los valores altos son
escasos y muy alejados de la media. El coeficiente de variación nos indica una dispersión relativa del
228%, por lo que tenemos que escoger la mediana como medida de centro. Entonces decimos que los
tiempos de transmisión de cada fichero se situaron en torno a los 0.65 segundos.
Análisis de los tiempos de la muestra 4
> numSummary(muestra4[,"segundos"], statistics=c("mean",
+ "sd", "quantiles", "cv", "skewness", "kurtosis"),
+ quantiles=c(0,.25,.5,.75,1), type="2")
mean
sd
cv skewness kurtosis 0% 25% 50%
1.29962 2.230094 1.715959 6.731863 72.45008 0.5 0.56 0.62
75% 100% n
0.91 41.9 2603
La curtosis es casi 10 puntos más alta que en la muestra 3. Esto implica que la frecuencia de valores que
se acumulan en torno el centro es mucho mayor, lo que explica la notable disminución del coeficiente
de variación, que ahora se sitúa en 171%. A pesar de todo este valor sigue siendo demasiado alto para
considerar a la media como medida de centro fiable, por lo que volvemos a escoger la mediana. La
mitad de los archivos tardaron 0.62 segundos o menos en transferirse y la otra mitad tardó 0.62
segundos o más.
Ahora hacemos dos grupos de datos: uno con los datos de ‘scp ‘ y otro con los de ‘scp -C’
> sincompresion <- subset(listado, subset=(compresion==0))
> concompresion <- subset(listado, subset=(compresion==1))
Análisis de ‘scp’:
> numSummary(sincompresion[,"segundos"], statistics=c("mean", "sd",
+ "quantiles", "cv", "skewness", "kurtosis"), quantiles=c(0,.25,.5,.75,1),
+ type="2")
mean
sd
cv skewness
kurtosis 0% 25% 50% 75% 100% n
2.227416 5.201503 2.335219 7.899602 97.2683 0.48 0.6 0.73 1.4 104.7 5228
Análisis de ‘scp –C’:
> numSummary(concompresion[,"segundos"], statistics=c("mean", "sd",
+ "quantiles", "cv", "skewness", "kurtosis"), quantiles=c(0,.25,.5,.75,1),
+ type="2")
mean
sd
cv skewness kurtosis 0% 25% 50% 75% 100% n
1.335242 2.25524 1.689012 6.516152 67.42107 0.5 0.57 0.63 0.96 41.9 5206
Se aprecia una disminución notable en la variación con ‘scp –C’, pero sigue siendo demasiado alta como
para considerar a la media la mejor medida central. Tomamos la mediana como medida de centro en
ambos casos y observamos que los tiempos con ‘scp –C’ fueron un 13,7 % más rápidos que con ‘scp’.
Tenemos que estudiar ahora la posibilidad de predecir el tiempo de transmisión sabiendo el tamaño del
fichero(en el listado el tamaño aparece en KB). No es necesario distinguir en este caso entre ‘scp’ y ‘scp
–C’ ya que el uso de uno o de otro simplemente cambia el tamaño del fichero, con lo que este estudio lo
haremos con el listado completo. Realizamos el ajuste lineal:
> RegModel.1 <- lm(segundos~tamanio, data=listado)
> summary(RegModel.1)
Call:
lm(formula = segundos ~ tamanio, data = listado)
Residuals:
Min
1Q Median
3Q
Max
-33.862 -0.110 -0.045 0.035 30.318
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 5.774e-01 1.684e-02 34.29 <2e-16 ***
tamanio
7.704e-03 3.342e-05 230.53 <2e-16 ***
--Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 1.635 on 10432 degrees of freedom
Multiple R-squared: 0.8359,
Adjusted R-squared: 0.8359
F-statistic: 5.314e+04 on 1 and 10432 DF, p-value: < 2.2e-16
El coeficiente de determinación R^2 es 0.8359, esto es, el ajuste explica el 83.59% de los tiempos.
Consideramos que el ajuste es válido, así que es posible predecir el tiempo de transferencia a partir del
tamaño del fichero mediante la recta:
> coef(RegModel.1)
(Intercept)
tamanio
0.577418115 0.007703998
y = 0.577418115 + 0.007703998x
donde ‘x’ es el tamaño del fichero en KB e ‘y’ el tiempo en segundos.
Gráficamente, se ve así:
> plot(listado$tamanio, listado$segundos)
> abline(RegModel.1)
R también nos ofrece una manera más cómoda de predecir los resultados. Por ejemplo, si queremos
saber el tiempo que tardará en transferirse un archivo de 100 KB:
> predict(RegModel.1, data.frame(tamanio=100))
1
1.347818
Un archivo de 100 KB tardará sobre 1.35 segundos en transferirse.
Nuestro último objetivo será estudiar la relación entre la velocidad que marca ‘scp’ y la velocidad que
nosotros calculamos a partir del tamaño del fichero y el tiempo que tarda en transferirse.
vel <- listado$velocidad
velcalc <- listado$tamanio / listado$tiempo
relacion_vels <- vel/velcalc
El listado mostraba la velocidad en KB/s solamente con un decimal. Por tanto, cuando la velocidad era
inferior a 0.1 KB/s, se mostraba como 0.0 KB/s. Esos datos son inválidos pues no representan la
velocidad real. Nos deshacemos de esos datos:
relacion_vels <- subset(relacion_vels, subset=relacion_vels != 0)
Ahora tenemos que observar los resultados:
> numSummary(relacion_vels, statistics=c("mean","sd","quantiles", "cv", "skewness", "kurtosis"))
mean
sd
cv
skewness kurtosis
0%
25%
50%
1.529615 2.383405 1.558173 3.729632 14.68496 0.4064733 0.5827627 0.684297
75%
100%
n
1.132244 18.34811 10394
La situación ideal sería que la media fuese 1, ya que indicaría que la velocidad indicada por ‘scp’ se
ajustaría un 100% a la velocidad que nosotros hemos calculado. Aquí la media no sería representativa
dada la variación y la asimetría, por lo que podríamos tomar la mediana como medida central y decir
que la velocidad dada por scp se ajusta en un 68,4% a la relación tamaño/segundos. Si queremos
deshacernos de los datos muy extremos, podemos utilizar la media recortada al 5%:
mean(relacion_vels,trim=0.05)
[1] 1.088427
Eliminando los datos extremos, la velocidad que marca ‘scp’ se ajusta casi perfectamente a nuestra
velocidad.
Descargar