Análisis de datos con MATLAB.

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