introducción a lenguajes avanzados de computación: matlab...

77
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

Upload: lemien

Post on 01-Feb-2018

233 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

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

Page 2: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López

Software estadístico

Software libre

Lenguaje de programación R

Software comercial

SPSS,

S-Plus,

Excel,

MATLAB,

SAS, Minitab, Statistica,…

Page 3: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

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 operativosWindows, Mac, Unix y Linux

Page 4: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

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.

Page 5: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

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.

Page 6: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

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,…

Page 7: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

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,…

Page 8: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

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

Page 9: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

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)

Page 10: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

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]'

concentracion=[X Y]

X 47 62 65 70 70 78 95 100

Y 38 62 53 67 84 79 93 106

Page 11: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

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

Page 12: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López

Cells

air

ammonia

carbon dioxide

carbon monoxide

chlorine

dinitrogen monoxide

ethyne

helium

Ejemplo: Para los datos del ejemplo de densidad de gases, hemos recopilado los nombres de los gases correspondientes a cada medición

ngas=['air','ammonia','carbon dioxide','carbonmonoxide','chlorine','dinitrogen monoxide','ethyne','helium']

ngas={'air','ammonia','carbon dioxide','carbonmonoxide','chlorine','dinitrogen monoxide','ethyne','helium'}

class(ngas)

Page 13: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

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{2}

x{3} x{4}

Page 14: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

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] 'hola' [1x5 double] [7]

x{3}

ans =

1 2 3 4 5

Page 15: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

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)

cellgas(:,1)=ngas

cellgas(:,2)=num2cell(gas)

Gas Densidad (g/L)

air 1.2929

amonia 0.771

carbon dioxide 1.977

carbon monoxide 1.250

chlorine 3.214

dinitrogen monoxide 1.977

ethyne 1.171

helium 0.1785

Page 16: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

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:

mat={'metal','polimero','polimero','semiconductor','polimero'}

mat2=nominal(mat)

tabulate(mat)

clasif={'metal','semiconductor','polimero','ceramico','compuesto'}

mat2=nominal(mat,[],clasif)

tabulate(mat2)

1 Metal

2 Polímero

3 Polímero

4 Semiconductor

5 Polímero

Page 17: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

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:

mi={‘duro’,’blando’,’duro’,’muy duro’,’blando’}

mi2=ordinal(mineral,[],{‘muy blando’,’blando’,’duro’,’muy duro’})

tabulate(mineral2)

1 Duro

2 Blando

3 Duro

4 Muy duro

5 Blando

Page 18: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

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)

Page 19: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

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')

get(dgas)

dg=set(dgas,'VarNames',{'gas','dens'})

dg(:,2)

sum(dg(:,2))

dg.dens

sum(dg.dens)

Gas Dens (g/L)

air 1.2929

amonia 0.771

carbon dioxide 1.977

carbon monoxide 1.250

chlorine 3.214

dinitrogen monoxide 1.977

ethyne 1.171

helium 0.1785

Page 20: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

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

Page 21: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López

Operadores

lógicos

Indexado. Operadores relacionales y lógicos

Operadores

relacionales

== igual

~= distinto

> mayor

>= mayor o igual

< menor

<= menor o igual

& y lógico

| o lógico

~ no lógico

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

Page 22: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

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

nota=[3.4 7 4.5 9.4 6 6.5 2 7.5]

¿Qué alumnos han suspendido?

suspenso=nota<5

¿Qué nota han sacado los alumnos que han suspendido?

nota_susp=nota(suspenso)

¿Cuál es la nota media de los alumnos que han suspendido?

mean(nota_susp)

Haz lo mismo pero para saber la nota media de los alumnos que han obtenido un notable

Page 23: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

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

Page 24: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

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

Page 25: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

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

Page 26: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

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.

Page 27: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

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',';')

sexo=[strcat(al{1})]

sexo=nominal(al{1})

altura=al{2}

peso=al{3}

nher=al{4}

equipo=[strcat(al{5})]

Formatos en

los que se

almacenan

las variables

Número de

líneas de

cabecera

Carácter

delimitador

de las

columnas

Page 28: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

Introducción a lenguajes avanzados de

computación: MATLAB en la docencia en

Química

Análisis de datos

II. Estadística descriptiva

Page 29: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López

Estadística descriptiva

Veamos ahora diversas maneras de hacer

estadística descriptiva en MATLAB con el

conjunto de datos alumnos.txt

1. mediante tablas de frecuencias

2. mediante gráficos

3. mediante el cálculo de medidas de

centralización, dispersión y forma.

Page 30: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

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 Count Percent

Madrid 15 21.13%

Barcelona 24 33.80%

Depor 20 28.17%

Celta 5 7.04%

Betis 1 1.41%

nc 1 1.41%

Atletico 2 2.82%

Sporting 1 1.41%

Numancia 1 1.41%

Valencia 1 1.41%

Page 31: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

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

Page 32: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

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)

Page 33: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

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

Page 34: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

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])

Page 35: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

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'})

Page 36: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

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

Page 37: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: 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 intervalos de la misma amplitud entre 1.5 y 2

extremos=1.5+0.0625*[0:8]

centros=extremos(1:8)+0.5*0.0625

n=histc(altura,extremos)

71 8

1.5 1.5625 1.625 1.6875 1.75 1.8125 1.875 1.9375 2

1.5 1.5625 1.625 1.6875 1.75 1.8125 1.875 1.9375 2

2 13 16 15 14 7 4 0

Page 38: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

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)

Page 39: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

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

Page 40: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

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)

Page 41: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

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])

Page 42: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

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 Descripción

geomean Media geométrica

harmmean Media armónica

mean Media aritmética

median Mediana

mode Moda

prctile Percentiles

trimmean Media recortada

Page 43: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López

Medidas de dispersión Rango

range(altura) max(altura)-min(altura)

Rango intercuartílico iqr(altura)

prctile(altura,75)-prctile(altura,25)

Varianza 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)

Page 44: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

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 Descripción

iqr Rango intercuartílico

mad Desviación absoluta con

respecto a la media

moment Momentos centrales

range Rango

std Desviación típica

var Varianza

Page 45: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

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:

La función skewness calcula el coeficiente de

asímetría de Fisher skewness(altura)

3

13

n

ii

F

x x

ASns

Page 46: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

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:

La función kurtosis calcula el coeficiente de

apuntamiento de Fisher kurtosis(altura)

4

14

n

ii

F

x x

Kns

Page 47: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López

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)

Diagrama de caja (boxplot)

Page 48: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

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)

Page 49: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

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)

Page 50: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

Introducción a lenguajes avanzados de

computación: MATLAB en la docencia en

Química

Análisis de datos

III. Distribuciones de probabilidad

Page 51: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López

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)

Page 52: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

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)

Page 53: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

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 ]

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)

2

2

( )

2

2

1( )

2

x

f x e

Page 54: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

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 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)

(0,1)Z N

Page 55: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

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 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

(0,1)Z N

Page 56: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

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');

Page 57: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

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

Beta beta

Exponencial exp

Gamma gam

Lognormal logn

Normal norm

Uniforme continua unif

Weibull wbl

Chi-cuadrado chi2

F de Snedecor f

t de Student t

Distribución prefijo MATLAB

Binomial bino

Geométrica geo

Hipergeométrica hyge

Multinomial mn

Poisson poiss

Uniforme discreta unid

Distribuciones discretas

Distribuciones continuas

Page 58: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

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 hist(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 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')

Page 59: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

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

Page 60: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

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.

Page 61: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

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

Page 62: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

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

Page 63: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

Introducción a lenguajes avanzados de

computación: MATLAB en la docencia en

Química

Análisis de datos

IV. Modelo de regresión

Page 64: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López

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.

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.

( )Y f X

Page 65: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

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

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.

, 1, ,i iX Y i n

Page 66: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

Introducción a lenguajes avanzados de computación: MATLAB en la docencia en Química. Beatriz Pateiro López

Modelos de regresión

Page 67: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

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 (%)')

Page 68: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

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

mean(pureza)

Matriz de varianzas-covarianzas

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.

cc=corrcoef(pureza)

rxy=cc(1,2)

xy

xy

x y

sr

s s

Page 69: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

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

b=covxy/var(x)

a=mean(y)-b*mean(x)

2

xy

x

sb a y bx

s

Page 70: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

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

Page 71: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

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)

Page 72: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

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,…

Page 73: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

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,…

Page 74: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

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

Page 75: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

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')

Page 76: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

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')

Page 77: Introducción a lenguajes avanzados de computación: Matlab ...mathgene.usc.es/matlab-profs-quimica/analisis_datos.pdf · Introducción a lenguajes avanzados de computación: MATLAB

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