48
MANEJO DE DATOS CON MATLAB Ambiente en MATLAB Workspace: muestra las variables, se guarda con extensión .mat Listado de archivos (current folder): muestra los archivos con los que se están trabajando Editor: muestra los valores de la variables Ventana de comandos (command window): muestra las instrucciones ejecutadas y resultados

ANEJO DE DATOS CON MATLABfaviok.weebly.com/uploads/6/4/0/3/6403801/sistemas... · linewidth, especifica la anchura de línea su valor por defecto es 0.5 markersize, especifica el

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

MANEJO DE DATOS CON MATLAB

Ambiente en MATLAB

Workspace: muestra las variables, se guarda con extensión .mat

Listado de archivos (current folder): muestra los archivos con los que se están trabajando

Editor: muestra los valores de la variables

Ventana de comandos (command window): muestra las instrucciones ejecutadas y resultados

MANEJO DE DATOS CON MATLAB

Crear una variable

a=3

a=[3,4]

a=[3,4;2,6]

a=[3 4; 2 6]

MANEJO DE DATOS CON MATLAB

Vectores y matrices

Vector: columna de valores

Matriz: nxk valores

MANEJO DE DATOS CON MATLAB

Importar datos de Excel

1.- Arrastrar el archivo a la ventana de comandos

2.- Seleccionar el tipo de variables: vector, matriz

etc.

MANEJO DE DATOS CON MATLAB

Archivos m

Son un listado de instrucciones (script) que se

puede ejecutar mediante el botón “RUN” que se

encuentra en el menú variable.

Se recomienda crear una carpeta con todos los

archivos del proyecto.

MANEJO DE DATOS CON MATLAB

Escribir una función

function [med,des,a]=estadistica(x)

n=length(x);

med=sum(x)/n;

a=sum(x);

des=sqrt(sum((x-med).^2/(n-1)));

end

MANEJO DE DATOS CON MATLAB

Llamar una función

[media, desviacion,a]=estadistica([1.65 1.82 1.72

1.75 1.73 1.85 1.90 1.74 1.76 1.77])

MANEJO DE DATOS CON MATLAB

Ejercicio de una función financiera

Calcular la tasa de interés simple y compuesta

MANEJO DE DATOS CON MATLAB

Análisis estadístico: Medidas de localización

Mean ()

Descripción Calcula la media aritmética de determinados valores.

Sintaxis mean (a) - Si a es un vector, calcula la media de los valores. - Si a es una matriz, calcula la media de cada columna.

mean (a, dim) - Devuelve los valores medios de la dimensión especificada de la matriz a. - La dimensión predefinida es 1.

nanmean() Descripción Calcula la media ignorando aquellos datos perdidos.

MANEJO DE DATOS CON MATLAB

Análisis estadístico: Medidas de localización

geomean (a)

harmmean (a)

max(a); min(a) - Si a es un vector, retorna el valor máximo/mínimo. - Si a es una matriz, retorna máximo/mínimo de cada columna.

nanmax() ; nanmin ()

Descripción Devuelve los valores extremos de una determinada muestra ignorando aquellos datos perdidos.

median ()

MANEJO DE DATOS CON MATLAB

Análisis estadístico: Medidas de dispersión

std (a) - Si a es un vector, retorna la desviación

estándar de los valores. - Si a es una matriz,

retorna la desviación estándar de los valores por

columnas.

var (a)

range (a) - Si a es un vector, calcula el rango del

mismo. - Si a es una matriz, calcula el rango de

cada columna.

MANEJO DE DATOS CON MATLAB

Análisis estadístico: Medidas de dispersión

iqr (a) - Si a es un vector, calcula el rango

intercuartil del mismo. - Si a es una matriz, calcula

el rango intercuartil de cada columna.

prctile (a, p) - “p”, corresponde al percentil que se

busca, puede ser un vector o escalar - “a”, es la

muestra que se analiza, puede ser vector o matriz.

MANEJO DE DATOS CON MATLAB

Análisis estadístico: Medidas de dispersión

quantile (a, p, dim) - “p”, corresponde al quantil

que se busca, puede ser un vector o escalar y se

encuentra entre el rango [0 1] . - “a”, es la muestra

que se analiza, puede ser vector o matriz. - Su

comportamiento hasta este punto es igual a la

función prctile(). - Sin embargo el parámetro dim es

muy útil ya que nos permite buscar quantiles en

otras dimensione. dim=1, por columnas, dim=2, por

filas.

prctile( x , 50) = quantile (x, .50) = mediana

MANEJO DE DATOS CON MATLAB

Análisis estadístico: Medidas de distribución

skewness (a) - Si a es un vector, calcula la

oblicuidad de los valores. - Si a es una matriz,

calcula la oblicuidad de cada columna.

kurtosis (a) - Cuando a es un vector, calcula la

curtosis de los elementos del mismo. - Cuando a es

una matriz, calcula la curtosis para cada columna.

MANEJO DE DATOS CON MATLAB

Análisis estadístico

tabulate (a) - El parámetro a representa la

muestra, y solo puede ser un vector.

cov (a) - Cuando a es un vector, devuelve un valor

con la varianza del mismo. - Cuando a es una

matriz, cada columna es una observación y cada

columna una variable.

MANEJO DE DATOS CON MATLAB

Análisis estadístico

corr(a) - a debe ser una matriz, y devuelve un matriz de correlacion entre columnas.

corr(a,b) - Genera una matriz de correlación entre las dos matrices, las dimensiones de a deben ser iguales a las de b.

[R,P]= corrcoef (a) - Devuelve además una matriz con los valores p usados en las pruebas de hipótesis.

MANEJO DE DATOS CON MATLAB

Análisis estadístico

crosstab (col1 ,col2) - Se genera una matriz donde

el elemento (i,j) corresponde a la cuenta de todas

las observaciones donde col1=i y col2 =j.

grpstats (a, group) - Genera la media de cada

columna de a por grupo, el vector group define

como se agruparan los datos.

MANEJO DE DATOS CON MATLAB

Análisis estadístico

b = [1 2 3; 7 5 6; 4 5 6; 8 9 1]

Del archivo denominado regresión realice un script titulado: e.

El cual que llame las funciones necesarias para obtener: media, media geométrica, mínimo, máximo, desviación estándar, varianza, asimetría, curtosis, mediana, cuartil 3, percentil 30 y rango de cada variable. Asimismo presente una matriz de correlaciones entre las variables, una tabla cruzada entre la antigüedad y el precio y calcule la media del precio por tamaño.

MANEJO DE DATOS CON MATLAB

Graficar una variable

bar(a)

barh(a)

pie(a)

MANEJO DE DATOS CON MATLAB

Graficar una variable

plot (X,’+’)

lsline

boxplot(X)

hist(x)

MANEJO DE DATOS CON MATLAB

Graficar una variable

qqplot(X) muestra una grafica de quantil-quantil para una muestra de datos de X en relación a una distribución teórica normal. Si la distribución de X es normal, la grafica será lineal.

qqplot(X, Y) muestra una grafica de quantil-quantilpara dos muestras de datos si las muestra vienen de la misma distribución, la gráfica será lineal. Para una matriz X y Y, qqplot muestra líneas separadas para cada pareja de columnas, además la gráfica contiene la muestra de datos mostrando los mismos por medio de signos (+).

MANEJO DE DATOS CON MATLAB

Graficar una variable

gscatter(x, y, g)

Crea un diagrama de la dispersión de x y y, en el

cual X y Y son los vectores con el mismo tamaño y g

es un grupo de variables definidas por un vector,

una matriz o un conjunto de celdas variables. G

también puede ser un conjunto de variables (tales

como {G1 G2 G3} agrupando los valores en X por

cada combinación de grupo de variables.

MANEJO DE DATOS CON MATLAB

Graficar una variable

gplotmatrix(x,y,g)

Esta función crea una matriz de gráficos de dispersión.

Cada conjunto de ejes en la figura del resultado

contiene un diagrama de dispersión de una columna de

x contra una de y. Todos los gráficos están agrupados

por la variable g. X y Y son matrices con el mismo

número de filas. Si x tiene p columnas y q filas la figura

contiene una matriz p * q de diagramas de dispersión.

G es una variable para agrupar que puede ser vector,

una matriz o un conjunto de celdas variables. G debe

tener la misma cantidad de filas que X y Y

MANEJO DE DATOS CON MATLAB

Graficar una variable

a = normspec([0 0.5],0,1)

p = chi2cdf (x,v) - Calcula el valor de la integral

para la distribución Chi-cuadrado con los

respectivos parámetros, donde x,v pueden ser un

vector o una matriz. v son los grados de libertad y

junto con x deben ser positivo.

MANEJO DE DATOS CON MATLAB

Graficar una variable

text(0, 0.2, 'hola')

xlabel('x');

ylabel('y')

title('Figura 1')

bar(a, 'g')

grid on

HISTOGRAMA

hg=findobj(gca,'Type','patch');

set(hg,'FaceColor',‘m','EdgeColor','k')

MANEJO DE DATOS CON MATLAB

Graficar una variable

plot(x,y,'-mo','linewidth',2,'markersize',12, 'markeredgecolor','g','markerfacecolor','y')

Los dos primeros parámetros de plot son las coordenadas de los puntos (xi, yi) contenidos vectores x e y. El tercer parámetro es el especificador de línea que puede contener tres datos '-mo' entre comillas simples:

Estilo de línea (- significa sólido, por defecto)

Color de línea (m significa magenta)

Marcador (o significa círculo)

MANEJO DE DATOS CON MATLAB

Graficar una variable

linewidth, especifica la anchura de línea su valor

por defecto es 0.5

markersize, especifica el tamaño del símbolo que

marca los puntos

markeredgecolor, especifica el color de borde del

símbolo que marca los puntos

markerfacecolor, especifica el color de relleno del

símbolo que marca los puntos

MANEJO DE DATOS CON MATLAB

Graficar una variable

plot(x,y), una línea azul sólida concecta los puntos

(xi, yi)

plot(x,y,'r'), una línea roja sólida conecta los

puntos (xi, yi)

plot(x, y,':g'), una línea de puntos de color verde

conecta los puntos (xi, yi)

plot(x,y,'--ro','linewidth',2,'markersize',8)

MANEJO DE DATOS CON MATLAB

Graficar una variable

axis([xmin,xmax,ymin,ymax]), establece nuevos

límites a los ejes X e Y

axis equal, establece la misma escala para ambos

ejes

axis square, región cuadrada

axis tight, ajusta los límites de los ejes al rango

de los datos

MANEJO DE DATOS CON MATLAB

Graficar una variable

h=figure

saveas(h, ‘nombre.ext’)

TAREA 6:

Complemente el script e, generando por lo menos

un gráfico de cada variable, un grafico q-q, uno de

dispersión y la media del precio por tamaño.

MANEJO DE DATOS CON MATLAB

Funciones financieras

P: cantidad

I: tasa de interés

n: periodos

Tasa de interés simple

>> ((P)+(P)*(I))

>> ((1000)+ (1000*0.2))

ans =

1200

MANEJO DE DATOS CON MATLAB

Funciones financieras

Tasa de interés compuesta

>> (P)*(1+i)^n

>> ((1000)*((1+0.2)^2))

ans =

1440

MANEJO DE DATOS CON MATLAB

Funciones financieras

Calcular la TIR de una inversión de 10000 con unas fechas determinadas

CF = [-10000 ; 2500 ; 2000 ; 3000 ; 4000];%Flujo de Caja

DF = {'12-Jan-2007'

'14-Feb-2008'

'03-Mar-2008'

'14-Jun-2008'

'01-Dec-2008'}; %Fechas de cobro del flujo de caja

R = xirr(CF, DF) %xirr(flujo,fechas)

Devuelve

R=

0.1006

MANEJO DE DATOS CON MATLAB

Funciones financieras

Calcular la tasa nominal a la que equivale una tasa

de interés efectiva anual de 9.38%

>> nomrr(0.0938,12) % nomrr(tasa, numero de

periodos)

0.0900

MANEJO DE DATOS CON MATLAB

Funciones financieras

Cual es el interés efectivo de una tasa de interés del 18% anual si se capitaliza:

a. Anualmente b. Semestralmente c. Mensualmente d. Diariamente (suponga año de 365 días)

a. >> effrr(0.18,1) % effrr(tasa, numero de periodos) ans = 0.1800

b. >> effrr(0.18,2) ans = 0.1881

c. >> effrr(0.18,12) ans = 0.1956

d. >> effrr(0.18,365) ans = 0.1972

MANEJO DE DATOS CON MATLAB

Funciones financieras: anualidades

Una persona deposita $100.000 en una cuenta que

paga el 5% semestral. Si esta persona quisiera

retirar cantidades iguales al final de cada semestre

durante 5 años ¿de que tamaño seria cada retiro?

>> payper(0.05,10,100000,0,0) % payper(Tasa,

NumPeriods, ValorPresente, ValorFuturo, Días)

ans = 12950.46

MANEJO DE DATOS CON MATLAB

Funciones financieras:

Si en una cuenta de ahorros que paga el 15% anual se depositan $ 1000 anuales durante cinco años, ¿Qué cantidad se acumularía al final del año 10, si el primer depósito se hizo al final del año 1?.

>> fvfix(0.15,5,1000,0,0)%fvfix(interés,tiempo,dinero,pago_extra(opc),

%anticipado=1/vencido=0(opc))

ans =

6742.38

Al final del quinto año se acumula $6742.38, entonces como se quiere saber cuánto tenemos al final del año 10 se multiplica la cantidad acumulada por los intereses de los siguientes 5 años

>> 6742.38*((1+0.15)^5) %P(1+int)^n

MANEJO DE DATOS CON MATLAB

Funciones financieras:

MATLAB maneja dos funciones, una con fechas periódicas (pvvar) y otra con fechas manejadas por el usuario (pvfix). Veamos el siguiente ejemplo:

%Calcule el valor actual del siguiente flujo de caja considerando una tasa de %descuento de 15%

% Años 0 1 2 3 4

%FC 0 500 700 700 900

En MATLAB tenemos:

A= pvvar ([0, 500,700,700,900],0.15); % Colocamos los valores futuros y el %porcentaje

Devuelve:

A= 1938.92

MANEJO DE DATOS CON MATLAB

Funciones financieras:

Annurate, sirve para calcular la tasa de interes

periodico pagado en un prestamo o anualidad, su

sintaxis es

r=annurate(Numperiods,

Valorpresente,valorfuturo(opc),anticipado=1,vencido

=0(por defecto=0))

MANEJO DE DATOS CON MATLAB

Funciones financieras:

%se toma un prestamo de 8000 por 5 años y se hacen

pagos mensuales de 225 al final de cada mes

%para calcular la tasa de interes tenemos...

>>tasa_mensual=annurate(5*12,225,8000,0,0)

Devuelve

tasa_mensual= 0.02

MANEJO DE DATOS CON MATLAB

Funciones financieras:

Amortize, sirve para generar una tabla de

amortización, devuelve el principal y los pagos del

prestamo, el saldo del valor original del monto

prestado, los intereses pagados y el abono a capital

periódico, su sintaxis es:

[Principal, tasa, Valor_presente,

Pago]=amortize(tasa, Numperiods, Valorpresente,

valorfuturo(opc),tipo: anticipado=1,vencido=0(por

defecto=0))

MANEJO DE DATOS CON MATLAB

Funciones financieras:

%Calcule una tabla de amortización para un prestamoconvencional de 30 años a una tasa fija con pagos mensuales constantes. Asuma que la tasa fija es del 12% anual periodica y el valor inicial del prestamo es de 2000000

%para calcular la amortización tenemos...

>>tasa_m=0.12/12;

>>nper=30*12;

>>valorpresente= 2000000;

[Principal, Interes, Balance, Pago]=amortize(tasa_m,nper,valorpresente);

MANEJO DE DATOS CON MATLAB

Funciones financieras:

Esto nos arroja un array de datos, para una mejor visualización, se plantea el siguiente gráfico para ver el actual saldo del préstamo, el abono a capital y el pago de interes sobre el tiempo de amortización. Se nota que excede los 2700000 mucho mas que la cantidad prestada

plot (Balance,’b’), hold(‘on’)

plot(cumsum(Principal),’--k’)

plot(cumsum(Interes),’r’)

xlabel(‘Pago’)

ylabel(‘Pesos’)

grid(‘on’)

title(‘Saldo, Abono a Capital e Interes’)

legend(‘Saldo’,’Abono a Capital’,interes acumulado’,’TL’)

MANEJO DE DATOS CON MATLAB

Interfaz gráfica

GUIDE

Genera un archivo m como función y un fig, los

cuales se encuentran vinculados.

Inspector de propiedades

“View Callbacks”

MANEJO DE DATOS CON MATLAB

Guide, leer un valor

valor = get(hObject, 'String');

valorok=str2double(valor);

handles.edit1 = valorok;

guidata(hObject,handles);

MANEJO DE DATOS CON MATLAB

Guide, acciones al presionar un botón

dato3=handles.edit1;

dato1= evalin('base', 'educ(2)');

dato2= evalin('base', 'educ(1)');

Mostrar información en texto estatico

set(handles.text1,'String',dato1);

set(handles.text2,'String',dato2);

set(handles.text3,'String',dato3);

MANEJO DE DATOS CON MATLAB

Regresión

X = [ones(size(x1)) x1 x2]

b = regress(y,X)

scatter3(x1,x2,y,'filled')

hold on

x1fit = min(x1):max(x1)

x2fit = min(x2):max(x2)

[X1FIT,X2FIT] = meshgrid(x1fit,x2fit)

YFIT = b(1) + b(2)*X1FIT + b(3)*X2FIT

mesh(X1FIT,X2FIT,YFIT)

xlabel(‘x1')

ylabel(‘x2')

zlabel(‘y')

view(50,10)

MANEJO DE DATOS CON MATLAB

Regresión

mdl=fitlm(x,y)

mdl=stepwiselm(x,y)

Xnew = X

ypred = predict(mdl,Xnew)

plot(X,y,'o',Xnew,ypred,'x')

legend('Data','Predictions')