You are on page 1of 11

ACTIVIDAD 1

COMPARACIN ENTRE R Y MATLAB

Juan Antonio Roldn Daz

Introduccin:
En la actualidad hay una gran cantidad de paquetes estadsticos que se podemos usar para realizar nuestro trabajo, pero bsicamente hay dos grandes visiones de cmo debe de ser este software por un lado estn los paquetes ms orientados a la programacin para encontrar soluciones de entre los que se pueden destacar R, Matlab y Python, y por otro los que destacan por dar ms soluciones analticas como son Excel, BMDP, Statgraphics y SPSS. Desde mi punto de vista, todos estos paquetes tienen sus ventajas y estn orientados a satisfacer las necesidades de distintos tipos de usuarios, lo que a cualquier estadista le puede llevar a preguntarse qu paquetes son los que estn pensados o ms preparados para ayudarle a realizar su trabajo?, la respuesta a esta pregunta a m no me plantea ninguna duda ya que pienso que estos son los paquetes orientados a la programacin, ya que en general nos aportan todas las soluciones que dan los paquetes ms analticos, son computacionalmente ms potentes y eficientes, nos permiten ampliar nuestros anlisis con facilidad con tcnicas que no estn implementadas y mi formacin compensa la falta de detalle y las dificultades que presentan los paquetes orientados a la programacin con respecto a los otros. En este trabajo me voy a centrar en la comparacin de dos paquetes orientados a la programacin, ms en concreto de Matlab y R, que son los ms populares de este grupo, tienen muchas caractersticas en comn y algunas diferencias muy importantes.

Descripcin de los programas:


MATLAB (abreviatura de MATrix LABoratory, "laboratorio de matrices") es un software matemtico que ofrece un entorno de desarrollo integrado con un lenguaje de programacin propio. Est disponible para las plataformas Unix, Windows y Mac OS X. Entre sus prestaciones bsicas se hallan: la manipulacin de matrices, la representacin de datos y funciones, la implementacin de algoritmos, la creacin de interfaces de usuario (GUI) y la comunicacin con programas en otros lenguajes y con otros dispositivos hardware. El paquete MATLAB dispone de dos herramientas adicionales que expanden sus prestaciones, Simulink (plataforma de simulacin) y GUIDE (editor de interfaces de usuario - GUI). Adems, se pueden ampliar las capacidades de MATLAB con las cajas de herramientas (toolboxes); y las de Simulink con los paquetes de bloques (blocksets). Es un software muy usado en universidades y centros de investigacin y desarrollo. Podemos acceder a MATLAB por unos 2.000 a travs de la web http://www.mathworks.es/index.html. R es un lenguaje y entorno de programacin para anlisis estadstico y grfico. Incluye un eficiente manejo y almacenamiento de dato, un conjunto de operadores para clculos con matriciales, una gran coleccin de herramientas para el anlisis de datos, facilidades grficas para el anlisis y visualizacin de datos ya sea en pantalla o en papel, y un bien desarrollado, sencillo y eficaz lenguaje de programacin que incluye condicionales, bucles, funciones definidas por usuarios y facilidades para realizar entradas y obtener

salidas. Se trata de un proyecto de software libre, resultado de la implementacin GNU del premiado lenguaje S. R y S-Plus -versin comercial de S- son, probablemente, los dos lenguajes ms utilizados en investigacin por la comunidad estadstica, siendo adems muy populares en el campo de la investigacin biomdica, la bioinformtica y las matemticas financieras. A esto contribuye la posibilidad de cargar diferentes bibliotecas o paquetes con finalidades especficas de clculo o grfico. R se distribuye bajo la licencia GNU GPL y est disponible para los sistemas operativos Windows, Macintosh, Unix y GNU/Linux, se puede descargar de en http://www.r-project.org/ junto una gran cantidad de libreras y otros recursos.

Comparacin de los programas:


Matlab es considerado por muchos usuarios el equivalente comercial de R, lo que hace que sea interesante conocer que ventajas presenta Matlab sobre R para que merezca la pena pagar su licencia, al igual que si puede R siendo gratuito ofrecernos algo que no podamos encontrar en Matlab. Para resolver estas preguntas voy a comparar estos dos paquetes desde tres puntos de vista, sus recursos, su eficiencia y su sintaxis. Recursos:

Dentro del anlisis de los recursos de cada programa voy a comenzar con el de la interfaz que presentan, aunque existen muchas interfaz para R (como Rcomander, TinnR o Rstudio) ninguna es tan amigable y completa como la de Matlab. A simple vista, Rstudio nos da una apariencia de R muy parecida a la de Matlab, pero no deja de ser una mscara, ya que cuando comenzamos a manejar los programas, el editor de script, el entorno de grficos o la ayuda de Matlab son ejemplos de algunas de las caractersticas que marcan una gran diferencia entre las dos interfaces. Adems de estar por detrs actualmente, este es un aspecto en el que R lo tiene difcil para progresar porque aunque constantemente estn apareciendo nuevas aportaciones desinteresadas el hecho de no tener un propietario complica el que alguien se encargue durante aos de desarrollar esta tarea. Por el contrario, Matlab, que tiene que luchar en el mercado de la venta de software, mejora su interfaz con cada nueva versin. Como mencion en la descripcin de los programas, Matlab y R tienen a disposicin de sus usuarios una serie de paquetes y libreras que complementan los programas. Desde el punto de vista estadstico el crecimiento que ha experimentado R en los ltimos aos le da ventaja con respecto a Matlab en este sentido ya que son muchos los investigadores que publican sus trabajos para R. Aun as, Matlab ha crecido en otras reas y puede aportarnos funciones que no sean estadsticas pero que nos resulten de utilidad y en R no se encuentren programadas, adems de nuevas prestaciones, como la de programar directamente procesadores digitales de seal o crear cdigo VHDL. El ltimo recurso que voy a comentar de estos programas es la posibilidad de ser ejecutados desde otros programas y de ejecutar otros lenguajes dentro de su cdigo.

Para ser ejecutado desde otros lenguajes, Matlab permite crear ejecutables que podemos utilizar desde cualquier otro lenguaje, pero si lo que queremos es ejecutar un cdigo no compilado ya no es tan sencillo, aunque desde php o desde el propio R se puede hacer, adems son pocos los cdigos externos que Matlab puede ejecutar, aunque tambin puede hacerlo con lenguajes como MySQL o R de nuevo. Dicho esto, una de las principales caractersticas de R es que, al ser de cdigo abierto, desarrolladores de todo el mundo han implementado rutinas que permiten ejecutar cdigos de R desde casi cualquier lenguaje de programacin y que permiten ejecutar la gran mayora de lenguajes desde los cdigos de R. Eficiencia:

Durante mucho tiempo el gran motivo para comprar Matlab ha sido que su eficiencia computacional y las pruebas que se han realizado comparndolo con otros programas as lo demuestran (comparaciones de velocidad entre varios software, 8 de marzo de 2003, http://www.sciviews.org/benchmark/benchmark1.html y http://www.sciviews.org/benchmark/), pero a lo largo de los aos tanto R como Matlab han ido mejorando y creando nuevas versiones, a continuacin muestro unas pruebas de 2009 donde podemos intuir cual es la situacin actual de un software con respecto del otro en trminos de eficiencia:

I. Clculo matricial Creacin, transp., Deformacin de una matriz de 1500x1500 1000 matrices aleatorias de una distribucin normal 800x800 Clasificacin de 2.000.000 de valores aleatorios 700x700 matriz de productos cruzados Regresin lineal en una matriz de 600x600 II. Funciones matriciales FFT ms de 800.000 valores aleatorios Valores propios de una matriz aleatoria 320x320 Determinante de una matriz de 650x650 aleatoria Descomposicin de Cholesky de una matriz de 900x900 Inversa de una matriz aleatoria 400x400 III. Programacin Clculo de 750.000 nmeros Fibonacci Creacin de una matriz de 2250x2250 Hilbert Mximo comn divisor de 70.000 pares (recursin)

R Matlab R / (sec) (sec) Matlab 0,371 0,179 0,421 0,543 0,416 0,443 0,378 0,157 0,256 0,105 0,349 0,575 0,470 0,175 0,135 0,354 0,069 0,063 0,129 0,452 0,065 0,087 0,047 0,292 0,269 0,075 2,114 1,323 1,189 7,891 6,654 3,441 0,835 2,399 2,954 2,223 1,195 2,137 6,230

Creacin de una matriz de Toeplitz 220x220 (bucles) Mtodo Escoufier en una matriz de 37x37 (mixto) IV. Estadstica La generacin de 107 uniformes (0,1) nmeros aleatorios Crear una permutacin de [1 .. 106] Muestra de binomal (100, 0.5) 105 veces Muestra de N (0,1) 106 veces Evaluar N (0,1) en 106 posiciones

0,290 0,550

0,001 402,108 0,636 0,865

1,136 0,078 0,061 0,334 0,558

0,338 0,257 0,480 0,036 0,077

3,364 0,304 0,126 9,163 7,240

Cada prueba se realiz veinte veces en con un procesador Intel Core 2 1,86 GHz con 4 GB de RAM con Windows Vista Business. Se aument el nmero de repeticiones de tres hasta veinte ya que la mayora de los clculos se basan en nmeros aleatorios que sern diferentes en cada programa. Se estaba usando Matlab 2008b y R 2.8.0.

Comparacin de sintaxis

Hay similitudes y diferencias en la sintaxis de Matlab y R. He aqu una breve lista de las diferencias que se producen con mayor frecuencia con las que fcilmente se puede traducir un comando en un lenguaje a otro: El punto o perodo en Matlab identifica un componente de una matriz de estructura. Esto es ms o menos comparable con el uso del signo de dlar ($) en R para identificar los componentes de una lista, aunque hay algunas diferencias. Los vectores se definen a menudo mediante el c() en R, como en rng = c (0,1), en Matlab, esto se logra mediante corchetes, como en rng = [0,1]. Por otro lado, R utiliza corchetes para seleccionar subconjuntos de valores de un vector, tal como rng [2], Matlab hace lo mismo con parntesis, como en rng (2). R tiene variables lgicas con valores de verdadero o falso y las ltimas versiones de Matlab tambin tienen variables lgicas toman valores true o false, pero las versiones anteriores de R, S, y S-Plus permite el uso de T y F para TRUE y FALSE y las ltimas versiones de R han permitido a los usuarios asignar otros valores a T o F para la compatibilidad con otros idiomas, esto tiene el efecto secundario negativo ya que el cdigo escrito usando en R T o F podra producir un error o dar una respuesta equivocada sin previo aviso si, por ejemplo, un usuario definido F = TRUE o F = c ('Do', 'not', ' use ',' F ',' as ',' a ',' logical. '). En ambos idiomas, los nmeros a veces se puede utilizar como lgicos, en tales casos, 0 se trata como FALSO y cualquier distinto de cero es TRUE. Si una lnea de cdigo no es sintcticamente completa, el intrprete de R busca que el cdigo para continuar en la lnea siguiente, Matlab requiere la lnea para terminar en "..." si el cdigo va a continuar en la lnea siguiente. Matlab normalmente termina un comando con un punto y coma, si esto no se hace, Matlab muestra automticamente el objeto producido por el comando. Las lneas en R puede terminar en un punto y coma, pero eso es opcional y ponerlo no produce ningn efecto.

En R la forma correcta de escribir la transferencia del valor producido por el lado derecho de una declaracin para el objeto nombrado en el lado izquierdo es con la secuencia de dos caracteres <-. Esta notacin no fue desde el principio bien aceptada entre los usuarios de R, S y S-PLUS ya que se usan dos caracteres en lugar de uno y el guin cre problemas, aunque slo fuese por la incompatibilidad con otros muchos lenguajes. Las versiones recientes de R permite el uso de = para el reemplazo en la mayora de los contextos, pero hay situaciones en las que el cdigo se convierte en ambiguo y puede generar errores que pueden ser difciles de detectar. Por otra parte, Matlab solo utiliza = para hacer asignaciones y no tiene ningn tipo de problema en este sentido.

Anlisis descriptivos e inferencia con cada programa:


A continuacin muestro una tabla con los comando para realizar los anlisis con cada software, como se puede comprobar la mayora de comandos entre un lenguaje y otro coinciden. Matlab >> A=[15 10 13 7 9 8 21 9 14 8]; >> B=[23.6 19.8 22.4 16.8 21.9 15.3 20.0 24.9 21.0 19.7]; Diagrama de tallos y hojas --> stem(A) The decimal point is 1 digit(s) to the right of the | 0 1 1 2 Boxplot o caja de Tukey boxplot >> boxplot(A) | | | | 78899 034 5 1 boxplot > boxplot(A) R > A<-c(15, 10, 13, 7, 9, 8, 21, 9, 14, 8) > B<-c(23.6, 19.8, 22.4, 16.8, 21.9, 15.3, 20.0, 24.9, 21.0, 19.7) stem

Histograma

hist >> hist(A)

hist > hist(A)

Grfico de sectores

pie >> piesales = [0.12 0.3 0.26 0.16 0.04 0.12]; >> pie(piesales, {'Blueberry' 'Cherry' 'Apple' 'Boston Cream' 'Other' 'Vanilla Cream'})

pie > pie.sales <- c(0.12, 0.3, 0.26, 0.16, 0.04, 0.12) > names(pie.sales) <c("Blueberry", "Cherry", "Apple", "Boston Cream", "Other", "Vanilla Cream") > pie(pie.sales)

Grfico de barras

bar >> bar(piesales)

barplot > barplot(pie.sales)

Grficos de dispersin

plot

plot

>> plot(A,B,'o')

> plot(A,B)

Media

mean >> mean(A) ans = 11.4000 median >> median(A) ans = 9.5000

mean > mean(A) [1] 11.4

Mediana

median > median(A) [1] 9.5

Desviacin tpica >> std(A) ans = 4.3512 Varianza >> var(A) ans = 18.9333 Coeficiente de correlacin ans =

std

sd > sd(A) [1] 4.351245

var

var > var(A) [1] 18.93333

corr >> corr([A;B]')

cor > cor(cbind(A,B)) A B A 1.0000000 0.3008918 B 0.3008918 1.0000000

Covarianza

1.0000 0.3009 0.3009 1.0000 cov >> cov([A;B]') ans = 18.9333 3.8267 3.8267 8.5427

cov > cov(cbind(A,B)) A B A 18.933333 3.826667 B 3.826667 8.542667

Tests de hiptesis para la media

ttest

t.test

>> [h,p,ci] = ttest(A,mean(A)) h = 0 p = 1 ci = 8.2873 Ajusta un modelo de anlisis de la varianza 14.5127

> t.test(A) One Sample t-test data: A t = 8.285, df = 9, pvalue = 1.672e-05 alternative hypothesis: true mean is not equal to 0 95 percent confidence interval: 8.287307 14.512693 sample estimates: mean of x 11.4 aov > fitAB<-aov(A~B) > fitAB Call: aov(formula = A ~ B) Terms: B Residuals Sum of Squares 15.42731 154.97269 Deg. of Freedom 1 8 Residual standard error: 4.401316 Estimated effects may be unbalanced > summary(fitAB) Df Sum Sq Mean Sq F value Pr(>F) B 1 15.43 15.43 0.796 0.398 Residuals 8 154.97 19.37

LinearModel.fit >> fitAB = LinearModel.fit(B,A) fitAB = Linear regression model: y ~ 1 + x1 Estimated Coefficients: Estimate SE tStat pValue (Intercept) 2.1992 10.404 0.21138 0.83787 x1 0.44795 0.50195 0.89241 0.39822 Number of observations: 10, Error degrees of freedom: 8 Root Mean Squared Error: 4.4 R-squared: 0.0905, Adjusted R-Squared 0.0231

F-statistic vs. constant model: 0.796, p-value = 0.398 >> anova(fitAB) ans = SumSq DF MeanSq F pValue x1 15.427 1 15.427 0.79639 0.39822 Error 154.97 8 19.372

Conclusiones:
R y Matlab son muy parecidos en muchos aspecto, tanto es as que cualquier persona que conozca uno de los dos con poca ayuda podra ponerse a programar con el otro, por este motivo y porque es gratuito R me parece una gran opcin como software para la docencia en estadstica y como herramienta de trabajo para un estadista que realiza pequeos trabajos por cuenta propia, sin embargo, para una empresa, a la que la licencia de Matlab no debe de resultarle demasiado cara, las ventajas que aporta Matlab le pueden repercutir positivamente y puede ayudar a que los trabajos se acaben ms rpido y puede solucionar problemas a largo plazo por lo que sin duda tanto para la empresa como para el estadista que trabaja en grandes proyectos la mejor herramienta de trabajo es Matlab y seguro que les merece la pena realizar la inversin que supone su precio. Por otro lado estn los investigadores, en el mbito de la investigacin lo idneo me parece que es estar familiarizado con los dos ya que cualquiera de ellos nos puede aportar funciones que ahorren mucho tiempo y trabajo, sin embargo, para el uso diario hay que decantarse por uno de ellos y creo que las facilidades de uso y el hecho de que cualquier persona pueda tener acceso a l hacen que R sea el mejor programa para que un investigador de a conocer sus trabajos.

Bibliografa:
Apuntes Entornos de Computacin Estadstica Salas, Christian. Por qu comprar un programa estadstico si existe R?. Ecol. austral, Ago 2008, vol.18, no.2, p.223-231. ISSN 1667-782X Ramsay, James; Hooker, Giles; Graves, Spencer. Functional Data Analysis with R and MATLAB. Springer, 2009, XII, 202 p. ISBN 978-0-387-98184-0

Pginas Web:
http://brenocon.com/blog/2009/02/comparison-of-data-analysis-packages-rmatlab-scipy-excel-sas-spss-stata/ http://en.wikipedia.org/wiki/Comparison_of_statistical_packages http://es.wikipedia.org/wiki/MATLAB http://es.wikipedia.org/wiki/R-project http://mlg.eng.cam.ac.uk/dave/rmbenchmark.html http://www.datanalytics.com/blog/2010/10/06/matlab-es-mas-rapido-que-r%C2%BFy/ http://www.mathworks.es/index.html http://www.r-project.org/ http://www.sciviews.org/benchmark/ http://www.sciviews.org/benchmark/benchmark1.html

You might also like