Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química Análisis de datos I. Introducción y estructuras de datos Software estadístico Software libre Lenguaje de programación R Software comercial SPSS, S-Plus, Excel, MATLAB, SAS, Minitab, Statistica,… Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López Lenguaje de programación R http://www.r-project.org/ Proyecto de software libre R y S-Plus son, probablemente, los dos lenguajes más utilizados en investigación por la comunidad estadística Posibilidad de cargar librerías o paquetes con finalidades específicas de cálculo Se distribuye bajo la licencia GNU y está disponible para los sistemas operativos Windows, Mac, Unix y Linux Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López Análisis estadístico con MATLAB MATLAB es un lenguaje de computación técnica de alto nivel y un entorno interactivo para desarrollo de algoritmos, visualización de datos, análisis de datos y cálculo numérico. MATLAB cuenta con una amplia gama de aplicaciones que incluyen procesamiento de señales e imágenes, comunicaciones, diseño de sistemas de control, sistemas de prueba y medición, modelado y análisis financiero y biología computacional. Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López Análisis estadístico con MATLAB Las toolbox (conjuntos de herramientas complementarios) amplían el entorno de MATLAB permitiendo resolver problemas especiales en diferentes áreas de aplicación. La Toolbox Statistics proporciona un conjunto completo de herramientas para evaluar e interpretar datos. Incluye funciones y herramientas interactivas para procesar datos, realizar simulaciones, desarrollar algoritmos estadísticos y aprender y enseñar estadística. Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López Análisis estadístico con MATLAB Principales funciones: Organización y gestión de datos Estadística descriptiva Elaboración de gráficos estadísticos y visualización de datos Distribuciones de probabilidades Modelo lineal y no lineal Contrastes de hipótesis Estadística multivariante,… Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López Estructuras de datos MATLAB ofrece diferentes estructuras para organizar datos: Arrays de dimensión n x 1(vectores) para organizar n observaciones de variables unidimensionales Arrays de dimensión n x m (matrices) para organizar n observaciones multivariantes en filas y columnas Cells para organizar datos heterogéneos con diferentes tamaños, unidades, etc,… Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López Estructuras de datos La Toolbox Statistics ofrece dos tipos adicionales de estructuras de datos especialmente útiles para datos estadísticos: Categorical Arrays, adecuados para manejar datos categóricos Dataset Arrays, especialmente adecuados para manejar datos heterogéneos Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López Vectores Ejemplo: Los siguientes datos corresponden a la densidad (g/L) de gases en condiciones estándar de presión y temperatura 1.2929 0.771 1.977 1.250 3.214 1.977 1.171 0.1785 gas=[1.2929, 0.771, 1.977, 1.250, 3.214, 1.977, 1.171, 0.1785] size(gas) gas2=gas' size(gas2) gas3=[1.2929; 0.771; 1.977; 1.250; 3.214; 1.977; 1.171; 0.1785] size(gas3) mean(gas3) Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López Matrices Ejemplo: Se han obtenido ocho mediciones de la concentración de hidrógeno determinada con un método de cromatografía de gases (X), y la concentración determinada con un nuevo método de sensor (Y): X 47 62 65 70 70 78 95 100 Y 38 62 53 67 84 79 93 106 X=[47 62 65 70 70 78 95 100]' Y=[38 62 53 67 84 79 93 106]' concentracion=[X Y] Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López Matrices Ejemplo: Los siguientes datos corresponden a las mediciones de 4 variables (longitud y anchura de pétalo y longitud y anchura de sépalo) de 5 flores de iris. Longitud sépalo Anchura sépalo Longitud pétalo Anchura pétalo 5.1000 3.5000 1.4000 0.200 4.9000 3.0000 1.4000 0.300 4.7000 3.2000 1.3000 0.100 4.6000 3.1000 1.5000 0.200 5.0000 3.6000 1.4000 0.200 Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López Cells Ejemplo: Para los datos del ejemplo de densidad de gases, hemos recopilado los nombres de los gases correspondientes a cada medición air ammonia carbon dioxide carbon monoxide chlorine dinitrogen monoxide ethyne helium ngas=['air','ammonia','carbon dioxide','carbon monoxide','chlorine','dinitrogen monoxide','ethyne','helium'] ngas={'air','ammonia','carbon dioxide','carbon monoxide','chlorine','dinitrogen monoxide','ethyne','helium'} class(ngas) Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López Cells Las estructuras de clase cell permiten almacenar datos heterogéneos Se definen y se accede a sus componentes mediante { } cell(m,n) define un objeto de clase cell de dimensión m x n x=cell(1,4) x{1} x{3} x{2} x{4} Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López Cells Ejemplo: x=cell(1,4) x{1}=ones(3) x{2}='hola' x{3}=1:5 x{4}=7 x x = [3x3 double] x{3} ans = 1 2 3 'hola' 4 [1x5 double] [7] 5 Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López Cells Ejemplo: cellgas=cell(8,2) Gas Densidad (g/L) cellgas(:,1)=ngas air 1.2929 cellgas(:,2)=num2cell(gas) amonia 0.771 carbon dioxide 1.977 carbon monoxide 1.250 chlorine 3.214 dinitrogen monoxide 1.977 ethyne 1.171 helium 0.1785 Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López Categorical arrays (Toolbox statistics) Ejemplo variable nominal: Se han clasificado 5 materiales: 1 Metal 2 Polímero 3 Polímero 4 Semiconductor 5 Polímero mat={'metal','polimero','polimero','semiconductor','polimero'} mat2=nominal(mat) tabulate(mat) clasif={'metal','semiconductor','polimero','ceramico','compuesto'} mat2=nominal(mat,[],clasif) tabulate(mat2) Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López Categorical arrays (Toolbox statistics) Ejemplo variable ordinal: Se ha estudiado la dureza de 5 minerales: 1 Duro 2 Blando 3 Duro 4 Muy duro 5 Blando mi={‘duro’,’blando’,’duro’,’muy duro’,’blando’} mi2=ordinal(mineral,[],{‘muy blando’,’blando’,’duro’,’muy duro’}) tabulate(mineral2) Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López Categorical arrays (Toolbox statistics) Ejemplo variable ordinal: Los siguientes datos corresponden a las notas de 8 alumnos 3.4 7 4.5 9.4 6 6.5 2 7.5 nota=[3.4 7 4.5 9.4 6 6.5 2 7.5] notao=ordinal(notas,{'sus','apro','not','sob'},{},[0,5,7,9,10]) tabulate(notao) Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López Dataset (Toolbox Statistics) Ejemplo: dgas=dataset(ngas',gas') Gas Dens (g/L) get(dgas) air 1.2929 dg=set(dgas,'VarNames',{'gas','dens'}) amonia 0.771 dg(:,2) carbon dioxide 1.977 sum(dg(:,2)) carbon monoxide 1.250 chlorine 3.214 dg.dens dinitrogen monoxide 1.977 sum(dg.dens) ethyne 1.171 helium 0.1785 Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López Indexado Arrays load fisheriris meas(2,3) % Longitud de pétalo de la observación 2 meas(4,:) % Medidas de la observación 4 meas(:,2) % Anchura de sépalo meas(1:10,) % 10 primeras observaciones meas(end-9:end,3) % Longitud de pétalo de las 10 últimas obs. meas(,1:2) % Longitud y anchura de sépalo Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López Indexado. Operadores relacionales y lógicos Operadores relacionales Operadores lógicos == igual & y lógico ~= distinto | o lógico > mayor ~ no lógico >= mayor o igual < menor <= menor o igual any verdadero (1) si algún elemento del vector es distinto de cero all verdadero (1) si todos los elemento del vector son distintos de cero Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López Indexado. Operadores relacionales y lógicos Ejemplo: Los siguientes datos corresponden a las notas de 8 alumnos 3.4 7 4.5 9.4 6 6.5 2 7.5 ¿Qué alumnos han suspendido? nota_susp=nota(suspenso) ¿Cuál es la nota media de los alumnos que han suspendido? suspenso=nota<5 ¿Qué nota han sacado los alumnos que han suspendido? nota=[3.4 7 4.5 9.4 6 6.5 2 7.5] mean(nota_susp) Haz lo mismo pero para saber la nota media de los alumnos que han obtenido un notable Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López Indexado. Operadores relacionales y lógicos Volvemos a los datos de iris. Queremos calcular la longitud media de pétalo de las observaciones correspondientes a la especie setosa species=='setosa' ??? Undefined function or method 'eq' for input arguments of type 'cell'. La función strcmp compara cadenas es_setosa=strcmp('setosa',species) ¿Cuántas observaciones hay correspondientes a la especie setosa? nsetosa=sum(es_setosa) ¿Cuáles son las longitudes de pétalo de las setosas? lp_setosa=meas(es_setosa,3) Por último, la longitud media será mean(lp_setosa) Repite el cálculo con el resto de especies Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López Indexado. Operadores relacionales y lógicos Cuando trabajamos con categorical arrays podemos utilizar expresiones lógicas nom_species=nominal(species) es_setosa=nom_species=='setosa' ¿Cuántas observaciones hay correspondientes a la especie setosa? nsetosa=sum(es_setosa) ¿Cuáles son las longitudes de pétalo de las setosas? lp_setosa=meas(es_setosa,3) Por último, la longitud media será mean(lp_setosa) Repite el cálculo con el resto de especies Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López Importando datos La forma más sencilla de importar datos desde MATLAB es mediante el menú de importar datos (File->Import Data). Utilizando dicho menú podemos leer datos numéricos almacenados en cualquier fichero de texto. Ejemplos: datos.txt, datos2.txt Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López Importando datos Abre el fichero alumnos.txt con un editor de texto y comprueba su estructura. Si intentas importar los datos de alumnos.txt en MATLAB a través del menú de importar datos, verás que no es posible. Si el fichero de datos que queremos importar contiene una mezcla de datos numéricos y alfanuméricos, la opción más simple para importar dichos datos es la función textscan. Previamente tendrás que abrir el fichero mediante la función fopen para acceder a su lectura. Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López Importando datos fid=fopen('alumnos.txt') al=textscan(fid,'%s%f%f%d%s','Headerlines',1,'Delimiter',';') Formatos en los que se almacenan las variables Número de líneas de cabecera Carácter delimitador de las columnas sexo=[strcat(al{1})] sexo=nominal(al{1}) altura=al{2} peso=al{3} nher=al{4} equipo=[strcat(al{5})] Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química Análisis de datos II. Estadística descriptiva Estadística descriptiva Veamos ahora diversas maneras de hacer estadística descriptiva en MATLAB con el conjunto de datos alumnos.txt 1. 2. 3. mediante tablas de frecuencias mediante gráficos mediante el cálculo de medidas de centralización, dispersión y forma. Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López Variables cualitativas Vemos en primer lugar como obtener las frecuencias absolutas de la variable equipo, que es una variable cualitativa nominal. tabulate(equipo) Value Madrid Barcelona Depor Celta Betis nc Atletico Sporting Numancia Valencia Count 15 24 20 5 1 1 2 1 1 1 Percent 21.13% 33.80% 28.17% 7.04% 1.41% 1.41% 2.82% 1.41% 1.41% 1.41% Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López Variables cualitativas El resultado de la función tabulate es un cell fequipo=tabulate(equipo); class(fequipo) size(fequipo) nind=length(equipo) fabs=[fequipo{:,2}]; frel=fabs/nind Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López Variables cualitativas Diagrama de barras bar(fabs) nombre_eq=strvcat(fequipo{:,1}) set(gca,'XTickLabel',nombre_eq) Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López Variables cuantitativas discretas Consideremos ahora la variable Número de hermanos, que es una variable cuantitativa discreta. Podemos volver a utilizar la función tabulate para obtener una tabla de frecuencias absolutas y porcentajes. El resultado de tabulate es ahora un array. fnher=tabulate(nher); class(fnher) size(fnher) fabs=fnher(:,2); frel=fabs/nind Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López Variables cuantitativas discretas Representaciones gráficas bar(fabs) set(gca,'XTickLabel',[0:3]) Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López Variables cuantitativas discretas Representaciones gráficas pie(fabs) pie(fabs,[1 0 0 0]) pie(fabs,{'0 herm','1 herm','2 herm','3 herm'}) Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López Variables continuas Veremos como obtener tablas de frecuencias y como hacer gráficas representativas para variables continuas. Consideramos como ejemplo la variable altura. Para construir las frecuencias es habitual agrupar los valores que puede tomar la variable en intervalos. Utilizaremos las funciones histc e hist de MATLAB Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López Variables continuas. Función histc Utilizaremos la función histc si queremos fijar los intervalos a considerar Ejemplo: Para la variable altura tenemos 71 observaciones que se mueven en el rango min(altura) 1.55 max(altura) 1.93 Tomamos 71 8 intervalos de la misma amplitud entre 1.5 y 2 1.5 1.5625 1.625 1.6875 1.75 1.8125 1.875 1.9375 2 1.875 1.9375 2 extremos=1.5+0.0625*[0:8] centros=extremos(1:8)+0.5*0.0625 n=histc(altura,extremos) 1.5 1.5625 2 1.625 13 1.6875 16 1.75 15 1.8125 14 7 4 0 Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López Variables continuas. Función hist Utilizaremos la función hist si dejamos que MATLAB seleccione automáticamente los intervalos a considerar Ejemplo: Para la variable altura tenemos 71 n=hist(altura) [n,x]=hist(altura) [n,x]=hist(altura,8) [n,x]=hist(altura,centros) hist(altura,8) Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López Medidas características MATLAB ofrece comandos que permiten calcular directamente algunas medidas de posición. medidas de dispersión medidas de forma Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López Medidas de posición Para el cálculo de la media aritmética podemos usar la función mean ¿Cuál es la altura media de los alumnos observados? ¿Y el peso medio? mean(altura) mean(peso) sum(altura)/nind Para el cálculo de la mediana podemos usar la función median ¿Cuál es la altura mediana de los alumnos observados? ¿Y el peso mediano? median(altura) median(peso) Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López Medidas de posición MATLAB ofrece la posibilidad de calcular los percentiles de un vector de valores mediante la función prctile. prctile(x,p) devuelve un valor que sería mayor que el p% de los valores del vector x. Así, la mediana de la variable altura es: prctile(altura,50) Los cuartiles se calculan: prctile(altura,[25,50,75]) Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López Medidas de posición Nombre de la función geomean harmmean mean median mode prctile trimmean Descripción Media geométrica Media armónica Media aritmética Mediana Moda Percentiles Media recortada Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López Medidas de dispersión Rango Rango intercuartílico iqr(altura) prctile(altura,75)-prctile(altura,25) Varianza range(altura) max(altura)-min(altura) sum((altura-mean(altura)).^2)/nind var(altura) var(altura,1) Desviación típica sqrt(sum((altura-mean(altura)).^2)/nind) sqrt(var(altura)) std(altura) sqrt(var(altura,1)) std(altura,1) Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López Medidas de dispersión Nombre de la función iqr mad moment range std var Descripción Rango intercuartílico Desviación absoluta con respecto a la media Momentos centrales Rango Desviación típica Varianza Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López Medidas de forma Coeficiente de asimetría de Fisher. Mide el grado de simetría en los datos. Se define como: x x n ASF i 1 3 i ns3 La función skewness calcula el coeficiente de asímetría de Fisher skewness(altura) Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López Medidas de forma Coeficiente de apuntamiento de Fisher Mide el grado de concentración de una variable respecto a su medida de centralización usual (media). Se define como: x x n KF i 1 4 i ns4 La función kurtosis calcula el coeficiente de apuntamiento de Fisher kurtosis(altura) Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López Diagrama de caja (boxplot) La información obtenida a partir de las medidas de centralización, dispersión y forma se puede usar para realizar diagramas de caja (boxplots) que visualmente nos proporcionen la información de cómo están distribuidos los datos. El diagrama de caja consta de una caja central que está delimitada por la posición de los cuartiles Q3 y Q1. Dentro de esa caja se dibuja la línea que representa la mediana. De los extremos de la caja salen unas líneas que se extienden hasta los puntos LI = máx { mín(Xi) , Q1 - 1.5 RI } LS = mín { máx(Xi) , Q3 + 1.5 RI } Los datos que caen fuera del intervalo (LI, LS) se consideran datos atípicos y se representan individualmente. boxplot(altura) Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López Diagrama de caja (boxplot) boxplot(altura) Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López Diagrama de caja (boxplot) boxplot(altura,sexo) Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química Análisis de datos III. Distribuciones de probabilidad Distribuciones de probabilidad en MATLAB Las funciones relacionadas con distribuciones de probabilidad en MATLAB siguen la misma estructura Un prefijo que hace referencia a la distribución con la que estamos trabajando: binom, exp, poiss, norm,… Un sufijo que hace referencia a la información que queremos obtener rnd: genera números aleatorios de la distribución indicada cdf: evalúa la función de distribución (cumulative distribution function) pdf: evalúa la función de masa (variables discretas) o la función de densidad (variables continuas) inv: calcula la inversa de la función de densidad (cuantiles) Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López Generando números aleatorios Uniforme discreta (unid) Ejemplo: simulamos el lanzamiento de un dado unidrnd(6) unidrnd(6,10,1) Uniforme continua (unif) unifrnd(0,1,5) unifrnd(2,5,3,1) Exponencial (exp) exprnd(3,5,1) Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López La distribución normal Función de densidad de N(, 2) [Normal de media y varianza 2 ] f(x) 1 2 2 e ( x )2 2 2 Para representar la función de densidad de una Normal estándar N(0,1) x=linspace(-3,3,100); y=normpdf(x); plot(x,y) Para representar la función de densidad de una N(1,2) hold on y2=normpdf(x,1,sqrt(2)) plot(x,y2) Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López La distribución normal Cálculo de probabilidades (función de distribución) Sea Z N(0,1) una variable normal estándar P(Z ≤ 1.64) P(Z > 1) P(-1.96 ≤ Z ≤ 1.96) Este tipo de cuestiones se resuelven con la función normcdf, teniendo en cuenta que normcdf(x)=P(Z ≤ x) Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López La distribución normal Cálculo de cuantiles Sea Z N(0,1) una variable normal estándar. Calcula los valores de z para los que P(Z ≤ z) = 0.5 P(Z < z) = 0.95 P(Z > z) = 0.95 Este tipo de cuestiones se resuelven con la función norminv, teniendo en cuenta que el resultado de norminv(x) es el valor z tal que P(Z ≤ z) = x Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López Distribución normal multivariante mu = [0 0]; Sigma = [.25 .3; .3 1]; x1 = -3:.2:3; x2 = -3:.2:3; [X1,X2] = meshgrid(x1,x2); F = mvnpdf([X1(:) X2(:)],mu,Sigma); F = reshape(F,length(x2),length(x1)); surf(x1,x2,F); xlabel('x1'); ylabel('x2'); zlabel('Prob. Density'); Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López Principales distribuciones en MATLAB Distribución prefijo MATLAB Distribución prefijo MATLAB Binomial bino Beta beta Geométrica geo Exponencial exp Hipergeométrica hyge Gamma gam Multinomial mn Lognormal logn Poisson poiss Normal norm Uniforme discreta unid Uniforme continua unif Weibull wbl Chi-cuadrado chi2 F de Snedecor f t de Student t Distribuciones discretas Distribuciones continuas Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López Ajuste de un modelo de distribución a un conjunto de datos Importamos los datos del fichero espesor.txt, correspondientes al espesor en mm. de 200 láminas producidas por la máquina de rolado de una compañía del metal Guardamos los datos en una variable espesor A la vista del histograma podemos pensar que los datos se distribuyen según una variable aleatoria normal. Estimamos la media y desviación típica mediante mu=mean(espesor) sd=std(espesor) Dibujamos la densidad hist(espesor) ejex=linspace(25,50,100); plot(ejex,normpdf(ejex,mu,sd)) Estimación no parámetrica de la densidad [f,x]=ksdensity(espesor) hold on plot(x,f,'r') Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López Generación de datos aleatorios usando la Toolbox Statistics La toolbox Statistics presenta una herramienta interactiva para la generación de números aleatorios de diferentes modelos de probabilidad Abrimos la herramienta interactiva tecleando randtool Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López Distribuciones de probabilidad usando la Toolbox Statistics La toolbox Statistics presenta una herramienta interactiva para el manejo de distribuciones de probabilidad Abrimos la herramienta interactiva tecleando disttool Podremos visualizar la función de distribución (CDF) y función de masa o densidad (PDF) de diferentes modelos de distribución y ver como los cambios en los parámetros de cada modelo afectan a dichas funciones. Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López Ajuste de modelos de distribución a conjuntos de datos con la Toolbox Statistics La toolbox Statistics presenta una herramienta interactiva para el ajuste de distribuciones de probabilidad a conjuntos de datos Abrimos la herramienta interactiva tecleando dfittool Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López Ajuste de modelos de distribución a conjuntos de datos con la Toolbox Statistics Elegimos el conjunto de datos a través del botón Data Seleccionamos el ajuste en el botón New Fit Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química Análisis de datos IV. Modelo de regresión Modelos de regresión En muchas situaciones prácticas, se presentan problemas en los cuales necesitamos determinar si existe una relación entre dos o más variables y se hace necesario encontrar la naturaleza de dicha relación. Y f(X) Podemos clasificar los tipos de regresión: según el número de variables independientes: Regresión simple: Cuando la variable Y depende únicamente de una única variable X. Regresión múltiple: Cuando la variable Y depende de varias variables (X1, X2, ..., Xr) según el tipo de función f(X): Regresión lineal: Cuando f(X) es una función lineal. Regresión no lineal: Cuando f(X) no es una función lineal. Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López Modelos de regresión La situación general es la siguiente. Suponemos que una variable aleatoria respuesta Y está relacionada con otra variable explicativa o independiente X Disponemos de una muestra de n individuos Xi , Yi i 1, ,n Lo primero que debemos hacer es visualizar gráficamente la relación existente entre ambas variables. Utilizando la función plot de MATLAB podemos realizar un gráfico de dispersión, en el que los valores de la variable X se disponen en el eje horizontal y los de Y en el vertical. Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López Modelos de regresión Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López El modelo de regresión lineal simple a través de un ejemplo Consideramos como ejemplo los datos del fichero pureza.txt. En ellos Y es la pureza del oxígeno producido en un proceso de destilación químico X es el porcentaje de hidrocarburos presentes en el condensador principal de la unidad de destilación. x=pureza(:,1) y=pureza(:,2) plot(x,y,'o') xlabel('Nivel de hidrocarburos') ylabel('Pureza del oxígeno (%)') Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López El modelo de regresión lineal simple a través de un ejemplo Dada una variable bidimensional podemos calcular medidas características. Vector de medias Matriz de varianzas-covarianzas mean(pureza) varcovar=cov(pureza) cov(pureza,1) covxy=varcovar(1,2) Calculamos el coeficiente de correlación lineal para determinar el grado de relación lineal entre dos variables. rxy sxy sx s y cc=corrcoef(pureza) rxy=cc(1,2) Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López El modelo de regresión lineal simple a través de un ejemplo Buscamos la recta Y=a+bX que mejor ajusta a los datos El ajuste del modelo de regresión lineal simple se realiza mediante la función polyfit m=polyfit(x,y,1) m = 14.7863 74.4540 Recordamos que por el ajuste de regresión lineal por el método de mínimos cuadrados sxy b 2 a y bx sx b=covxy/var(x) a=mean(y)-b*mean(x) Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López El modelo de regresión lineal simple a través de un ejemplo A partir de la recta de regresión se pueden obtener las predicciones para la variable Y a partir de los valores conocidos de la variable X, sustituyendo convenientemente o bien utilizando el comando polyval de MATLAB. polyval(m,X) evalúa el polinomio con coeficientes almacenados en el vector m en todos los valores de la variable X yest=polyval(m,x) plot(x,y,'o') hold on plot(x,yest) % Recta de regresión Coeficiente de determinación R2 r2=rxy^2 Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López El modelo de regresión lineal simple a través de un ejemplo Análisis de los residuos err=yest-y plot(x,err,’o’) qqplot(err) Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López El modelo de regresión lineal con la toolbox Statistics La toolbox Statistics incluye la función regress, que además de darnos los parámetros de la recta de regresión ajustada nos da también de manera automática información sobre los residuos, coeficiente de determinación, contrastes para los parámetros,… x1=[ones(length(x),1) x] regress(y,x1) % devuelve únicamente a y b alpha=0.05 [betahat,Ibeta,res,Ires,stats] = regress(y,x1,alpha) Además la toolbox Statistics incluye funciones para realizar regresión robusta, regresión stepwise,… Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López El modelo de regresión lineal con la toolbox Statistics La toolbox Statistics incluye la función regress, que además de darnos los parámetros de la recta de regresión ajustada nos da también de manera automática información sobre los residuos, coeficiente de determinación, contrastes para los parámetros,… x1=[ones(length(x),1) x] regress(y,x1) % devuelve únicamente a y b alpha=0.05 [betahat,Ibeta,res,Ires,stats] = regress(y,x1,alpha) Además la toolbox Statistics incluye funciones para realizar regresión robusta, regresión stepwise,… Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López El modelo de regresión lineal con la toolbox Statistics Ejemplo: Se necesita determinar la capacidad de un método analítico para obtener resultados linealmente proporcionales a la concentración de analito de la muestra dentro de un intervalo determinado. Para estudiar la linealidad del método se prepararon 8 disoluciones patrón, de concentración conocida del analito. Los resultados se están en el fichero validacion.txt x=data(:,1) y=data(:,2) x1=[ones(length(x),1) x] [betahat,Ibeta,res,Ires,stats] = regress(y,x1,alpha) En vista de los resultados aceptaríamos la hipótesis nula Ho:a=0 Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López Modelos de regresión no lineal No siempre tiene sentido ajustar un modelo lineal. Por ejemplo algunos fenómenos resultan ser mejor representados por un polinomio de grado mayor. Importa los datos del fichero nolineal.txt x=nolineal(:,1); y=nolineal(:,2); plot(x,y,'o') m=polyfit(x,y,3); yest=polyval(m,x) hold on plot(x,yest,'r') Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López Modelos de regresión no lineal m1=polyfit(x,y,1); m2=polyfit(x,y,2); m3=polyfit(x,y,3); e1=(y-polyval(m1,x)); e2=(y-polyval(m2,x)); e3=(y-polyval(m3,x)); var(e1) var(e2) var(e3) hold on plot(x,polyval(m3,x),'r') Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López Modelos de regresión no lineal con MATLAB La Toolbox Statistics presenta otras funciones para ajustar otros modelos de regresión más complejos, como el modelo lineal generalizado, regression tree,… También, la Toolbox Curve Fitting incluye funciones para llevar a cabo estimación no paramétrica de la regresión Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López