Upload
lemien
View
243
Download
0
Embed Size (px)
Citation preview
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
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,…
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
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]'
concentracion=[X Y]
X 47 62 65 70 70 78 95 100
Y 38 62 53 67 84 79 93 106
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
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)
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}
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
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
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
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
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')
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
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
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
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
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',';')
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
Introducción a lenguajes avanzados de
computación: MATLAB en la docencia en
Química
Análisis de datos
II. Estadística descriptiva
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.
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%
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 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
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 Descripción
geomean Media geométrica
harmmean Media armónica
mean Media aritmética
median Mediana
mode Moda
prctile Percentiles
trimmean 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
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)
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
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
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
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)
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
Análisis de datos
III. Distribuciones de probabilidad
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)
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 ]
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
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
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
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
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
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')
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
Análisis de datos
IV. Modelo de regresión
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
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
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
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
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
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