Está en la página 1de 77

Introduccin a lenguajes avanzados de

computacin: MATLAB en la docencia en


Qumica
Anlisis de datos
I. Introduccin y estructuras de datos
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
Software estadstico
Software libre
Lenguaje de programacin R
Software comercial
SPSS,
S-Plus,
Excel,
MATLAB,
SAS, Minitab, Statistica,
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
Lenguaje de programacin R
http://www.r-project.org/
Proyecto de software libre
R y S-Plus son, probablemente, los dos lenguajes
ms utilizados en investigacin por la
comunidad estadstica
Posibilidad de cargar libreras o paquetes con
finalidades especficas de clculo
Se distribuye bajo la licencia GNU y est
disponible para los sistemas operativos
Windows, Mac, Unix y Linux
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
Anlisis estadstico con MATLAB
MATLAB es un lenguaje de computacin
tcnica de alto nivel y un entorno interactivo
para desarrollo de algoritmos, visualizacin de
datos, anlisis de datos y clculo numrico.
MATLAB cuenta con una amplia gama de
aplicaciones que incluyen procesamiento de
seales e imgenes, comunicaciones, diseo
de sistemas de control, sistemas de prueba y
medicin, modelado y anlisis financiero y
biologa computacional.
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
Anlisis estadstico con MATLAB
Las toolbox (conjuntos de herramientas
complementarios) amplan el entorno de
MATLAB permitiendo resolver problemas
especiales en diferentes reas de aplicacin.
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 estadsticos y aprender y
ensear estadstica.
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
Anlisis estadstico con MATLAB
Principales funciones:
Organizacin y gestin de datos
Estadstica descriptiva
Elaboracin de grficos estadsticos y
visualizacin de datos
Distribuciones de probabilidades
Modelo lineal y no lineal
Contrastes de hiptesis
Estadstica multivariante,
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
Estructuras de datos
MATLAB ofrece diferentes estructuras para
organizar datos:
Arrays de dimensin n x 1(vectores) para
organizar n observaciones de variables
unidimensionales
Arrays de dimensin n x m (matrices) para
organizar n observaciones multivariantes en filas
y columnas
Cells para organizar datos heterogneos con
diferentes tamaos, unidades, etc,
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
Estructuras de datos
La Toolbox Statistics ofrece dos tipos adicionales
de estructuras de datos especialmente tiles
para datos estadsticos:
Categorical Arrays, adecuados para manejar
datos categricos
Dataset Arrays, especialmente adecuados para
manejar datos heterogneos
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
Vectores
Ejemplo: Los siguientes datos corresponden a la
densidad (g/L) de gases en condiciones
estndar de presin 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)
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
Matrices
Ejemplo: Se han obtenido ocho mediciones de
la concentracin de hidrgeno determinada
con un mtodo de cromatografa de gases (X),
y la concentracin determinada con un nuevo
mtodo 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
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
Matrices
Ejemplo: Los siguientes datos corresponden a
las mediciones de 4 variables (longitud y
anchura de ptalo y longitud y anchura de
spalo) de 5 flores de iris.
Longitud
spalo
Anchura
spalo
Longitud
ptalo
Anchura
ptalo
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
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
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
medicin
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)
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
Cells
Las estructuras de clase cell permiten
almacenar datos heterogneos
Se definen y se accede a sus componentes
mediante { }
cell(m,n) define un objeto de clase cell de
dimensin m x n
x=cell(1,4)
x{1}
x{2}
x{3}
x{4}
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
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
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
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
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
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 Polmero
3 Polmero
4 Semiconductor
5 Polmero
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
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
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
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)
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
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
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
Indexado
Arrays
load fisheriris
meas(2,3) % Longitud de ptalo de la observacin 2
meas(4,:) % Medidas de la observacin 4
meas(:,2) % Anchura de spalo
meas(1:10,) % 10 primeras observaciones
meas(end-9:end,3) % Longitud de ptalo de las 10 ltimas obs.
meas(,1:2) % Longitud y anchura de spalo
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
Operadores
lgicos
Indexado. Operadores relacionales y lgicos
Operadores
relacionales
== igual
~= distinto
> mayor
>= mayor o igual
< menor
<= menor o igual
& y lgico
| o lgico
~ no lgico
any verdadero (1) si
algn elemento
del vector es
distinto de cero
all verdadero (1) si
todos los
elemento del
vector son
distintos de cero
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
Indexado. Operadores relacionales y lgicos
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)
Cul 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
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
Indexado. Operadores relacionales y lgicos
Volvemos a los datos de iris. Queremos calcular la longitud media
de ptalo de las observaciones correspondientes a la especie
setosa
species=='setosa'
??? Undefined function or method 'eq' for input
arguments of type 'cell'.
La funcin strcmp compara cadenas
es_setosa=strcmp('setosa',species)
Cuntas observaciones hay correspondientes a la especie
setosa?
nsetosa=sum(es_setosa)
Cules son las longitudes de ptalo de las setosas?
lp_setosa=meas(es_setosa,3)
Por ltimo, la longitud media ser
mean(lp_setosa)
Repite el clculo con el resto de especies
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
Indexado. Operadores relacionales y lgicos
Cuando trabajamos con categorical arrays podemos utilizar
expresiones lgicas
nom_species=nominal(species)
es_setosa=nom_species=='setosa'
Cuntas observaciones hay correspondientes a la especie
setosa?
nsetosa=sum(es_setosa)
Cules son las longitudes de ptalo de las setosas?
lp_setosa=meas(es_setosa,3)
Por ltimo, la longitud media ser
mean(lp_setosa)
Repite el clculo con el resto de especies
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
Importando datos
La forma ms sencilla de importar datos desde
MATLAB es mediante el men de importar datos
(File->Import Data).
Utilizando dicho men podemos leer datos
numricos almacenados en cualquier fichero
de texto. Ejemplos: datos.txt, datos2.txt
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
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 travs del men de importar datos,
vers que no es posible.
Si el fichero de datos que queremos importar
contiene una mezcla de datos numricos y
alfanumricos, la opcin ms simple para
importar dichos datos es la funcin textscan.
Previamente tendrs que abrir el fichero
mediante la funcin fopen para acceder a su
lectura.
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
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
Nmero de
lneas de
cabecera
Carcter
delimitador
de las
columnas
Introduccin a lenguajes avanzados de
computacin: MATLAB en la docencia en
Qumica
Anlisis de datos
II. Estadstica descriptiva
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
Estadstica descriptiva
Veamos ahora diversas maneras de hacer
estadstica descriptiva en MATLAB con el
conjunto de datos alumnos.txt
1. mediante tablas de frecuencias
2. mediante grficos
3. mediante el clculo de medidas de
centralizacin, dispersin y forma.
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
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%
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
Variables cualitativas
El resultado de la funcin tabulate es un cell
fequipo=tabulate(equipo);
class(fequipo)
size(fequipo)
nind=length(equipo)
fabs=[fequipo{:,2}];
frel=fabs/nind
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
Variables cualitativas
Diagrama de barras
bar(fabs)
nombre_eq=strvcat(fequipo{:,1})
set(gca,'XTickLabel',nombre_eq)
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
Variables cuantitativas discretas
Consideremos ahora la variable Nmero de
hermanos, que es una variable cuantitativa
discreta.
Podemos volver a utilizar la funcin 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
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
Variables cuantitativas discretas
Representaciones grficas
bar(fabs)
set(gca,'XTickLabel',[0:3])
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
Variables cuantitativas discretas
Representaciones grficas
pie(fabs)
pie(fabs,[1 0 0 0])
pie(fabs,{'0 herm','1 herm','2 herm','3 herm'})
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
Variables continuas
Veremos como obtener tablas de frecuencias y
como hacer grficas 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
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
Variables continuas. Funcin histc
Utilizaremos la funcin 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
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
Variables continuas. Funcin hist
Utilizaremos la funcin hist si dejamos que MATLAB seleccione
automticamente 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)
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
Medidas caractersticas
MATLAB ofrece comandos que permiten
calcular directamente algunas
medidas de posicin.
medidas de dispersin
medidas de forma
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
Medidas de posicin
Para el clculo de la media aritmtica podemos
usar la funcin mean
Cul es la altura media de los alumnos
observados? Y el peso medio?
mean(altura)
mean(peso)
sum(altura)/nind
Para el clculo de la mediana podemos usar la
funcin median
Cul es la altura mediana de los alumnos
observados? Y el peso mediano?
median(altura)
median(peso)
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
Medidas de posicin
MATLAB ofrece la posibilidad de calcular los
percentiles de un vector de valores mediante la
funcin prctile.
prctile(x,p) devuelve un valor que sera 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])
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
Medidas de posicin
Nombre de la funcin Descripcin
geomean Media geomtrica
harmmean Media armnica
mean Media aritmtica
median Mediana
mode Moda
prctile Percentiles
trimmean Media recortada
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
Medidas de dispersin
Rango
range(altura)
max(altura)-min(altura)
Rango intercuartlico
iqr(altura)
prctile(altura,75)-prctile(altura,25)
Varianza
sum((altura-mean(altura)).^2)/nind
var(altura)
var(altura,1)
Desviacin tpica
sqrt(sum((altura-mean(altura)).^2)/nind)
sqrt(var(altura))
std(altura)
sqrt(var(altura,1))
std(altura,1)
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
Medidas de dispersin
Nombre de la funcin Descripcin
iqr Rango intercuartlico
mad
Desviacin absoluta con
respecto a la media
moment Momentos centrales
range Rango
std Desviacin tpica
var Varianza
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
Medidas de forma
Coeficiente de asimetra de Fisher.
Mide el grado de simetra en los datos. Se
define como:
La funcin skewness calcula el coeficiente de
asmetra de Fisher
skewness(altura)

3
1
3
n
i
i
F
x x
AS
ns
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
Medidas de forma
Coeficiente de apuntamiento de Fisher
Mide el grado de concentracin de una
variable respecto a su medida de
centralizacin usual (media). Se define como:
La funcin kurtosis calcula el coeficiente de
apuntamiento de Fisher
kurtosis(altura)

4
1
4
n
i
i
F
x x
K
ns
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
La informacin obtenida a partir de las medidas de
centralizacin, dispersin y forma se puede usar para realizar
diagramas de caja (boxplots) que visualmente nos
proporcionen la informacin de cmo estn distribuidos los
datos.
El diagrama de caja consta de una caja central que est
delimitada por la posicin de los cuartiles Q3 y Q1.
Dentro de esa caja se dibuja la lnea que representa la
mediana.
De los extremos de la caja salen unas lneas que se extienden
hasta los puntos
LI = mx { mn(Xi) , Q1 - 1.5 RI }
LS = mn { mx(Xi) , Q3 + 1.5 RI }
Los datos que caen fuera del intervalo (LI, LS) se consideran
datos atpicos y se representan individualmente.
boxplot(altura)
Diagrama de caja (boxplot)
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
Diagrama de caja (boxplot)
boxplot(altura)
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
Diagrama de caja (boxplot)
boxplot(altura,sexo)
Introduccin a lenguajes avanzados de
computacin: MATLAB en la docencia en
Qumica
Anlisis de datos
III. Distribuciones de probabilidad
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
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 distribucin con la
que estamos trabajando: binom, exp, poiss, norm,
Un sufijo que hace referencia a la informacin que
queremos obtener
rnd: genera nmeros aleatorios de la distribucin indicada
cdf: evala la funcin de distribucin (cumulative distribution
function)
pdf: evala la funcin de masa (variables discretas) o la
funcin de densidad (variables continuas)
inv: calcula la inversa de la funcin de densidad (cuantiles)
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
Generando nmeros 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)
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
La distribucin normal
Funcin de densidad de N(,
2
) [Normal de media y varianza
2
]
Para representar la funcin de densidad de una Normal estndar
N(0,1)
x=linspace(-3,3,100);
y=normpdf(x);
plot(x,y)
Para representar la funcin 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
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
La distribucin normal
Clculo de probabilidades (funcin de
distribucin)
Sea una variable normal estndar
P(Z 1.64)
P(Z > 1)
P(-1.96 Z 1.96)
Este tipo de cuestiones se resuelven con la
funcin normcdf, teniendo en cuenta que
normcdf(x)=P(Z x)
(0,1) Z N
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
La distribucin normal
Clculo de cuantiles
Sea una variable normal estndar.
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
funcin norminv, teniendo en cuenta que el
resultado de norminv(x) es el valor z tal que
P(Z z) = x
(0,1) Z N
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
Distribucin 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');
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
Principales distribuciones en MATLAB
Distribucin 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
Distribucin prefijo MATLAB
Binomial bino
Geomtrica geo
Hipergeomtrica hyge
Multinomial mn
Poisson poiss
Uniforme discreta unid
Distribuciones discretas
Distribuciones continuas
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
Ajuste de un modelo de distribucin a un
conjunto de datos
Importamos los datos del fichero espesor.txt, correspondientes
al espesor en mm. de 200 lminas producidas por la mquina
de rolado de una compaa del metal
Guardamos los datos en una variable espesor
hist(espesor)
A la vista del histograma podemos pensar que los datos se
distribuyen segn una variable aleatoria normal. Estimamos la
media y desviacin tpica mediante
mu=mean(espesor)
sd=std(espesor)
Dibujamos la densidad
ejex=linspace(25,50,100);
plot(ejex,normpdf(ejex,mu,sd))
Estimacin no parmetrica de la densidad
[f,x]=ksdensity(espesor)
hold on
plot(x,f,'r')
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
Generacin de datos aleatorios usando la
Toolbox Statistics
La toolbox Statistics presenta una herramienta interactiva para
la generacin de nmeros aleatorios de diferentes modelos
de probabilidad
Abrimos la herramienta interactiva tecleando
randtool
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
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 funcin de distribucin (CDF) y funcin
de masa o densidad (PDF)
de diferentes modelos de
distribucin y ver como los
cambios en los parmetros
de cada modelo afectan a
dichas funciones.
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
Ajuste de modelos de distribucin 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
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
Ajuste de modelos de distribucin a
conjuntos de datos con la Toolbox Statistics
Elegimos el conjunto de datos a travs del botn Data
Seleccionamos el ajuste en el botn New Fit
Introduccin a lenguajes avanzados de
computacin: MATLAB en la docencia en
Qumica
Anlisis de datos
IV. Modelo de regresin
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
Modelos de regresin
En muchas situaciones prcticas, se presentan
problemas en los cuales necesitamos determinar si existe
una relacin entre dos o ms variables y se hace
necesario encontrar la naturaleza de dicha relacin.
Podemos clasificar los tipos de regresin:
segn el nmero de variables independientes:
Regresin simple: Cuando la variable Y depende
nicamente de una nica variable X.
Regresin mltiple: Cuando la variable Y depende de varias
variables (X
1
, X
2
, ..., X
r
)
segn el tipo de funcin f(X):
Regresin lineal: Cuando f(X) es una funcin lineal.
Regresin no lineal: Cuando f(X) no es una funcin lineal.
( ) Y f X
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
Modelos de regresin
La situacin 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 grficamente la
relacin existente entre ambas variables.
Utilizando la funcin plot de MATLAB podemos realizar un
grfico de dispersin, en el que los valores de la variable X se
disponen en el eje horizontal y los de Y en el vertical.

, 1, ,
i i
X Y i n
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
Modelos de regresin
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
El modelo de regresin lineal simple a travs
de un ejemplo
Consideramos como ejemplo los datos del fichero pureza.txt.
En ellos
Y es la pureza del oxgeno producido en un proceso de destilacin
qumico
X es el porcentaje de hidrocarburos presentes en el condensador
principal de la unidad de destilacin.
x=pureza(:,1)
y=pureza(:,2)
plot(x,y,'o')
xlabel('Nivel de hidrocarburos')
ylabel('Pureza del oxgeno (%)')
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
El modelo de regresin lineal simple a travs
de un ejemplo
Dada una variable bidimensional podemos calcular medidas
caractersticas.
Vector de medias
mean(pureza)
Matriz de varianzas-covarianzas
varcovar=cov(pureza)
cov(pureza,1)
covxy=varcovar(1,2)
Calculamos el coeficiente de correlacin lineal para
determinar el grado de relacin lineal entre dos variables.
cc=corrcoef(pureza)
rxy=cc(1,2)

xy
xy
x y
s
r
s s
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
El modelo de regresin lineal simple a travs
de un ejemplo
Buscamos la recta Y=a+bX que mejor ajusta a los datos
El ajuste del modelo de regresin lineal simple se realiza
mediante la funcin polyfit
m=polyfit(x,y,1)
m =
14.7863 74.4540
Recordamos que por el ajuste de regresin lineal por el
mtodo de mnimos cuadrados
b=covxy/var(x)
a=mean(y)-b*mean(x)

2
xy
x
s
b a y bx
s
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
El modelo de regresin lineal simple a travs
de un ejemplo
A partir de la recta de regresin 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) evala 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 regresin
Coeficiente de determinacin R
2
r2=rxy^2
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
El modelo de regresin lineal simple a travs
de un ejemplo
Anlisis de los residuos
err=yest-y
plot(x,err,o)
qqplot(err)
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
El modelo de regresin lineal con la toolbox
Statistics
La toolbox Statistics incluye la funcin regress, que adems de
darnos los parmetros de la recta de regresin ajustada nos
da tambin de manera automtica informacin sobre los
residuos, coeficiente de determinacin, contrastes para los
parmetros,
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)
Adems la toolbox Statistics incluye funciones para realizar
regresin robusta, regresin stepwise,
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
El modelo de regresin lineal con la toolbox
Statistics
La toolbox Statistics incluye la funcin regress, que adems de
darnos los parmetros de la recta de regresin ajustada nos
da tambin de manera automtica informacin sobre los
residuos, coeficiente de determinacin, contrastes para los
parmetros,
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)
Adems la toolbox Statistics incluye funciones para realizar
regresin robusta, regresin stepwise,
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
El modelo de regresin lineal con la toolbox
Statistics
Ejemplo: Se necesita determinar la capacidad de un mtodo
analtico para obtener resultados linealmente proporcionales
a la concentracin de analito de la muestra dentro de un
intervalo determinado. Para estudiar la linealidad del mtodo
se prepararon 8 disoluciones patrn, de concentracin
conocida del analito. Los resultados se estn 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 aceptaramos la hiptesis nula Ho:a=0
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
Modelos de regresin no lineal
No siempre tiene sentido ajustar un modelo
lineal. Por ejemplo algunos fenmenos 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')
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
Modelos de regresin 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')
Introduccin a lenguajes avanzados de computacin: MATLAB en la docencia en Qumica. Beatriz Pateiro Lpez
Modelos de regresin no lineal con MATLAB
La Toolbox Statistics presenta otras funciones para ajustar otros
modelos de regresin ms complejos, como el modelo lineal
generalizado, regression tree,
Tambin, la Toolbox Curve Fitting incluye funciones para llevar
a cabo estimacin no paramtrica de la regresin