Está en la página 1de 6

REGRESION DE POISSON

Andres Oñate Jonathan Solórzano


Departamento de Eléctrica y Electrónica Departamento de Eléctrica y Electrónica
Universidad De Las Fuerzas Armadas Universidad De Las Fuerzas Armadas
Sangolquí, Ecuador Sangolquí, Ecuador
andresalejandro93 @hotmail.es jony_mostro@hotmail.com

Resumen— El presente trabajo tiene como 1950 a 2010. Los datos se pueden obtener en el sitio web mencionado.
finalidad solucionar de una manera ágil, sencilla y Sin embargo, los datos obtenidos de esta manera están en el formato
de una hoja de cálculo de Excel que incluye también alguna
rápida los temas aprendidos en clase en la asignatura descripción en la parte superior. Hemos modificado este archivo para
de procesos estocásticos mediante el uso de la conseguirlo en formato más manejable y ahora es en el archivo llamado
herramienta Matlab la cual facilitará su solución y se ` lab4 1950.xls’. Importar los datos al espacio de trabajo de Matlab con
reforzara los temas aprendidos en clase. el comand
data = xlsread('lab4_1950.xls');
Los datos variables se compone actualmente de 9 columnas pero
Keywords— predicción, desviación, regresión de sólo están interesados en columnas f1, 2, 5, 6 g, es decir, {año, el
poisson . número de personas muertas, número de coches, cantidad de gasolina
I. INTRODUCCIÓN vendido}. Almacenamos los datos en una matriz,
Traffic=struct('year',data(:,1),'killed',data(:,2),'cars',data(:,5),...'petr
Durante el segundo parcial en la asignatura de Procesos Estocásticos ol',data(:,6));
hemos visto varios temas tales como: procesos estocásticos de variables Trazar el número de personas muertas cada año
aleatorias, procesos de Marcov y Poissson etc. Siempre que haya dos o plot(traffic.year, traffic.killed, o)
más variables, la relación funcional es de interés. Durante estas Pruebe también trazando el número de personas muertas en función
primeras semanas en la asignatura de Procesos Estocásticos hemos visto del número de vehículos y el consumo de gasolina. ¿Ve usted alguna
varios temas tales como: teoría de conjuntos, permutaciones, conexión? De la figura se puede observar que la tendencia de aumento
combinaciones, probabilidades, etc. Y con la finalidad de reforzar lo del número de personas muertas se rompe alrededor del año 1965. Y
aprendido en clase realizaremos experimentos de conteo y desde el año 1970 el número comienza a disminuir. Surge Algunas
demostraremos como se relacionan con un muestreo aleatorio de preguntas naturales. ¿Por qué el número de personas muertas en
conjuntos. Estas ideas serán utilizadas para examinar algunos de los aumento año 1950-1965? ¿Cuál fue la razón de que el freno de la
juegos a la que la gente juega. tendencia cada vez mayor? (Sugerencia: la conducción por la derecha
Para lo cual se usara Matlab el cual es un software matemático con un (1967), cinturones de seguridad delanteros de los automóviles nuevos
lenguaje de programación propio que nos permitirá solucionar nuestros (1969), el uso obligatorio de cinturones de seguridad delanteros
ejercicios. (1975)).

II. MATERIALES

 Software Matlab
 Microsoft Word
III. MARCO TEÓRICO

La Administración de Carreteras de Suecia es la autoridad nacional que


tiene la responsabilidad general de todo el sistema de transporte por
carretera. Una cuestión principal es se realiza safetybility carretera y
trabajo continuo para mejorar la seguridad vial. De su sitio internet
http://www.trafikverket.se; es posible obtener un número de diferentes
estadísticas sobre accidente1 carretera. Lo haremos en este uso
ejercicio accidente de tráfico de datos a partir de los años 1950 {2010.
Los datos se utilizan para ajustar un modelo de regresión de Poisson
para el número de personas perecieron en accidentes de tráfico. El
modelo estimado se utiliza entonces para predecir el número esperado
de años perecido 2016.
Comience por descargar información sobre el número de víctimas Muestras por año 1
mortales en accidentes de tráfico reportados por la policía desde el año
¿Por qué el número de personas muertas en aumento año 1950-
1965? Por lo general, el sistema de ecuación debe ser resuelto con
algún método numérico, por ejemplo, el algoritmo de Newton-
Desde 1950 mayores personas comenzaron a adquirir automóviles y a Raphson. Este es también el método implementado en la regresión
mayor circulación de carros por las vías y con la carencia de cinturón función lab4, que fue escrito para el propósito de este laboratorio y se
de seguridad al ocurrir los accidentes se producían también muertes. puede encontrar en la página Web del curso. Utilice los comandos "tipo
regresión lab4" para ver el código.
¿Cuál fue la razón de que el freno de la tendencia cada vez mayor? Modelo de regresión de Poisson pertenece a una clase de
Después de 1965 empezaron a entrar en vigencias leyes de seguridad modelos llamados modelos lineales generalizados. En un modelo
para evitar mayores accidentes, como el manejo obligatorio por el lado lineal generalizado (GLM), la media de la respuesta, μ, se modela
derecho, el cinturón de seguridad en los asientos delanteros y su uso como una monotónica (lineal) la transformación de una función lineal
obligatorio. de las variables explicativas, g (β_o + β_1 x_1 + β_2 x_2, ...). La
inversa de la función de transformación g se llama la función de enlace
CÓDIGO canónico. En la regresión de Poisson esta función es la función de
data = xlsread('lab4_1950.xls'); registro, pero en se utilizan diferentes funciones de enlace de otros
traffic=struct('year',data(:,1),'killed',data(:,2),'cars',data(:,5),'petrol',dat GLM, consulte "glmfit doc" para obtener una lista de las funciones de
a (:,6)); enlace soportados en la función glmfit Matlab. Además, la respuesta
plot(traffic.year, traffic.killed) puede adoptar diferentes distribuciones, como la normal o la
grid on distribución binomial. a continuación, vamos a utilizar la función
Primero se importa los valores obtenido del archivo lab4_1950.xsl a glmval relacionada con la función de enlace logarítmica para hacer
Matlab para poder luego agregar a una variable traffic de tipo struct predicciones del modelo ajustado, ver el código de abajo.
quien organizará las columnas como vectores para poder luego graficar
esos valores en función del número de muertes. V. REGRESIÓN DE POISSON DE DATOS DE TRÁFICO
Ahora vamos a tratar de ajustar el modelo de regresión de Poisson para
los datos de tráfico del número de personas muertas en accidentes de
IV. MODELO DE REGRESIÓN DE POISSON tráfico. Por encima, pudimos ver que había un quiebre en la tendencia
Digamos que tenemos una secuencia de datos de recuento, 𝑛𝑖, = de aumento de número de personas que murieron alrededor del año
1,…,, para cualquier evento, i.e., el número de perecieron en 1965-1975, debido principalmente a la mejora de la seguridad del
accidentes de tráfico en un año. Estos datos de conteo se supone que coche debido a la utilización de los cinturones de seguridad. Debido a
las observaciones de las variables aleatorias 𝑁𝑖 ∈ 𝑃 , (llamados esto parece razonable para adaptarse a nuestro modelo a los datos a
respuestas o variables dependientes) con valor medio 𝜇𝑖 = 𝜇𝑖 partir del año 1975.
𝑥𝑖1,…,𝑥𝑖𝑝 . Las variables, 𝑥𝑖1,…,, se llaman variables explicativas y traffic=struct(year,data(26:end,1),killed,data(26:end,2),...cars,data(
se supone que medir los factores que influyen en los datos de recuento. 26:end,5),petrol,data(26:end,6));
Limitamos 𝜇𝑖 t ser una función log-lineal

µi = exp(β0 + β1xi1 + ... + βpxip)

Así la probabilidad de que Ni = n, es decir,

A) Estimando los parámetros del modelo

Para simplificar la notación introducimos 𝑥𝑖0 = 1 y ahora se puede


escribir la ecuación anterior como:

Donde 𝑁𝑖 ∈ 𝑃 𝑜 𝜇𝑖 𝑓𝑜𝑟 𝑖 = 1,…,. La función de probabilidad se


calcula como

PREGUNTA 1: ¿Cuáles son las variables explicativas? ¿Y cuál es


la respuesta?
Las variables representativas son el año el número de coches y la
donde 𝜇𝑖 = 𝜇𝑖 𝛽𝑝 es una función de 𝛽𝑝 = 𝛽0,…,𝛽𝑝 . El ML-estimates
cantidad de gasolina usada y en respuesta a eso tenemos el número de
𝛽𝑝 = 𝛽0,…, son los valores de 𝛽 que maximizan la función de
muertes.
verosimilitud L(𝛽). A menudo es más fácil para maximizar la función
de log-verosimilitud
CÓDIGO
traffic =
struct('year',data(26:end,1),'killed',data(26:end,2),'cars',data(26:end,5
),'petrol',data(26:end,6));
Al establecer la primera orden derivados del diario de probabilidad plot(traffic.year,traffic.killed)
igual a cero, obtenemos un sistema de (p + 1) ecuaciones no lineales grid on figure(1), hold on
in 𝛽𝑗
Hacemos lo mismo que antes agregamos ahora a traffic solo desde el
año 1975 al 2010 y graficamos.
Volver a dibujar el gráfico de arriba para el conjunto de datos
reducido Importa los datos y agregamos a traffic solo los valores de 1975 a 2010
plot(traffic.year,traffic.killed,o) y esperamos en la misma gráfica para poder ingresar la gráfica con la
figure(1), hold on regresión de poisson utilizando el glmval y poiss_regress que es una
función que calcula la regresión de poisson, por ultimo graficamos.
Iniciamos el análisis con una variable explicativa, traffic.year. Nota el Aunque este modelo simple parece captar la tendencia general, la
uso de la rutina de predicción para los generalizados modelos lineales adición de nuevas variables explicativas puede mejorar el ajuste. Por
glmval. lo tanto, trate de añadir el número de automóviles como una variable
X1 = [traffic.year-mean(traffic.year)]; en nuestro modelo.
n = traffic.killed; X2 = [traffic.year-mean(traffic.year), traffic.cars-mean(traffic.cars)];
beta1 = poiss_regress(X1,n,1e-6); my_fit = glmval(beta1, X1,'log'); beta2 = poiss_regress(X2,n,1e-6);
plot(traffic.year, my_fit, 'b-') my_fit = glmval(beta2, X2,'log');
plot(traffic.year, my_fit, 'g-')

PREGUNTA 2: ¿Cuál es su estimación de β? Convénzase de que


esta es la solución. Usted puede utilizar el siguiente código para
este propósito:
X0=ones(size(X1));
X=[X0, X1]; PREGUNTA 3: Haga que su βo estimaciones y β1 cambiado?
mu=exp(X*beta1); ¿Tiene que representa el número de coches a mejorar la forma?
X'*(n-mu) El cambio entre 𝛽0 𝑦 𝛽1 como se puede observar tiene un ligero
cambio, pero indica que al agregar la variable petróleo indicando una
¿Parece ser la solución? A juzgar por la trama, es este modelo mayor afluencia de carros la gráfica se acerca más aun a la original
suficiente para describir el número de personas muertas en
accidentes de tráfico? CÓDIGO
Mientras más variables independientes que se agreguen al vector que X0=ones(size(X1));
demuestra que el número de muertes depende de estas, podemos X=[X0, X1];
observar que la gráfica (línea verde) se acerca más a la gráfica de mu=exp(X*beta1);
número de muertes graficada al principio. X'*(n-mu);
X2 = [traffic.year-mean(traffic.year), traffic.cars-mean(traffic.cars)];
CÓDIGO beta2 = poiss_regress(X2,n,1e-6)
close all my_fit = glmval(beta2, X2,'log');
data = xlsread('lab4_1950.xls'); plot(traffic.year, my_fit, 'g-')
traffic
=struct('year',data(26:end,1),'killed',data(26:end,2),'cars',data(26:end, Generamos otra matriz con los valores de X0 con unos y X1 ya
5 ),'petrol',data(26:end,6)); obtenidos con la media de traffic.year calculamos nuevamente la
plot(traffic.year,traffic.killed) regresión de poisson y graficamos, obteniendo ahora con otro valor de
grid on beta2.
figure(1), hold on Parece razonable también añadir la cantidad de gasolina que se vende
X1 = [traffic.year-mean(traffic.year)]; como esto reflejaría el kilometraje total de todos los coches
n = traffic.killed; X3 = [traffic.year-mean(traffic.year),
beta1 = poiss_regress(X1,n,1e-6) traffic.cars-mean(traffic.cars),traffic.petrol-mean(traffic.petrol)];
my_fit = glmval(beta1, X1,'log'); beta3 = poiss_regress(X3,n,1e-6);
plot(traffic.year, my_fit, 'r-') my_fit = glmval(beta3, X3,'log');
plot(traffic.year, my_fit, 'g-')
Pregunta 5: Utilice chi2inv para obtener los cuantiles de la
distribución x ^ 2. Considere el nivel de significación del 5% para
su prueba.
Significante level 5 % -> chi2inv(0.95,p-q)

CÓDIGO

Se toma los valores de muertes y se saca la transpuesta para poder


trabajar la multiplicacion con los valores de la matriz de unos con los
de los betas calculados menos el otro beta así viendo la diferencia que
hay entre cada modelo.
V. PREDICCIÓN
Ahora queremos utilizar nuestro modelo para predecir el número
esperado de perecieron en accidentes de tráfico dentro de seis años, es
decir, el año 2016. Con el fin de hacer esto, primero debemos tener una
estimación de la cantidad de automóviles que año. Comience por el
trazado de la cantidad de automóviles vs. año,
plot(traffic.year, traffic.cars, o)
hold on

Pregunta 4: Haga que sus estimaciones de β cambiado ahora?


Utilice el formato de comando largo para mostrar más dígitos.
¿Qué modelo elije?
Nuevamente se puede observar que el estimado beta cambia
ligeramente pero mostrando una mejor aproximación a la gráfica
original, con valores picos más cercanos al tabulado, por lo que erigiría
la última estimación como mejor modelo.
CÓDIGO
X3 = [traffic.year-mean(traffic.year), traffic.cars
mean(traffic.cars),traffic.petrol-mean(traffic.petrol)];
beta3 = poiss_regress(X3,n,1e-6) my_fit = glmval(beta3, X3,'log');
plot(traffic.year, my_fit, 'm-')

Se repite el procedimiento de la pregunta anterior

a) Modelo de selección - Desviación

No siempre es fácil decidir, con sólo mirar a la trama, que el modelo a


elegir. A pesar de que la adición de más variables mejora el ajuste, sino Aquí vamos a utilizar un modelo lineal simple para el número de
que también aumenta la incertidumbre de las estimaciones. Un método coches, yi, xi años
para elegir complejidad del modelo es utilizar la desviación y una 𝑦𝑖=𝛽0+𝛽1𝑥𝑖+𝜖𝑖
prueba de hipótesis. Sea 𝛽𝑝 = 𝛽𝑜,1,…, ser los ML-estimaciones de los Donde los errors s𝜖𝑖 ∈𝑁 0, 𝜎𝜖 2 , se supone que son independientes e
parámetros del modelo 𝛽𝑜,𝛽1,…,𝛽𝑝 del modelo completo con p idénticamente distribuidas. Esto se llama un modelo de regresión
variables explicativas y β_q las estimaciones de un modelo más lineal. Es posible estimar los parámetros con el método de máxima
simple donde sólo q (q < p) de las variables explicativas se han verosimilitud similar que para el modelo de regresión de Poisson
utilizado. Entonces, para k grande, y bajo condiciones de regularidad anteriormente.
adecuados, la desviación.
Pregunta 7: ¿Cuál es la función de verosimilitud? Escríbelo.
L(beta) = Pi_i f(x_i|beta)
Es aproximadamente 𝑥2 𝑝 −𝑞 distribuye si el modelo menos complejo En Matlab, el retroceso función calcula los mínimos cuadrados (LS)
es cierto. Por lo tanto, es posible probar si el modelo más simple puede estimaciones del modelo de regresión lineal. En el caso de ε_i está
ser rechazada en comparación con el modelo completo.
distribuida normalmente, el método LS es equivalente al método de Según las gráficas ploteadas en Matlab se puede observar que los
ML con exactamente las mismas estimaciones. valores en el gráfico 9 se ajustan bastante al modelo de errores
phat = regress(traffic.cars,[ones(length(traffic.cars),1) [1975:2005]']) exceptuando por ciertos valores observador entre 130 a 200 de los data
plot(1975:2016, phat(1)+phat(2)*[1975:2016],'r') valores.
cars_2016=phat(1)+phat(2)*2016; CÓDIGO
figure(2)
Evaluar el ajuste mirando los residuos. plot(traffic.year,traffic.cars,'o')
hold on
res = traffic.cars-(phat(1)+phat(2)*traffic.year); grid on
figure(3), plot(traffic.year,res,'o') phat = regress(traffic.cars,[ones(length(traffic.cars),1) [1975:2010]']);
figure(4), normplot(res) plot(1975:2016, phat(1)+phat(2)*[1975:2016],'r')
cars_2016=phat(1)+phat(2)*2016;
res = traffic.cars-(phat(1)+phat(2)*traffic.year);
figure(3), plot(traffic.year,res,'o')
grid on
figure(4), normplot(res)

Primero en otra ventana se grafica el numero de carros por año y se


hace una función de regresión phat para tener una media de los valores
entre el 1975 al 2010 y poder estimar que se tendrá hasta el año 2016
se grafican esos valores en otra ventana y por último se normalizan
esos valores con normplot para observar la tendencia

Utilizando el siguiente código proporciona con la predicción del


consumo de gasolina para el 2016.
phat = regress(traffic.petrol,[X0 [1975:2010]' ([1975:2010].^2)'])
plot(1975:2016,phat(1)+phat(2)*[1975:2016]+phat(3)*([1975:2016].
petrol_2016=phat(1)+phat(2)*2016+phat(3)*2016^2;

Tenga en cuenta que este modelo cuadrática tiempo tenía que estar en
forma para los datos.

Pregunta 9: ¿Está satisfecho con los ajustes obtenidos para la


gasolina y el número de coches?
Como se puede observar en el gráfico 10 el ajuste para el petróleo es
muy variante y no responde a una función en concreto, ya el ajuste para
el número de carros es más estable y mejor.

CÓDIGO

phat = regress(traffic.petrol,[X0 [1975:2010]' ([1975:2010].^2)'])


figure(5)
hold on
xlabel('Año')
ylabel('Petróleo Vendido')
plot(traffic.year,traffic.petrol,'o')
Pregunta 8: ¿Los residuos se ajustan a los requisitos del modelo plot(1975:2016,
errors 𝝐𝒊? phat(1)+phat(2)*[1975:2016]+phat(3)*([1975:2016].^2),'r')
grid on valores más los estimados del petróleo y carro por año se obtiene un
estimado de muertes para el 2016.
Igual que antes repetimos el procedimiento ahora tomando los valores
del petróleo en función del año para ver cuanto más se venderá hasta
el año 2016 y nuevamente graficamos en otra ventana VI. REALIZACIÓN DEL LABORATORIO
.
Sin embargo, para nuestro propósito de estos cálculos aproximados son Para cada una de las tareas de este laboratorio, en el informe de
suficientes. El número esperado de perecido ahora puede predecirse laboratorio debe comenzar a determinar el problema que está
utilizando 𝜇𝑖=exp⁡(𝛽𝑜+𝛽1𝑥𝑖1+⋯+𝛽𝑝𝑥𝑖𝑝), intentando resolver, o lo que está probando. Después de eso, usted debe
determinar su solución teórica al problema o resultado predicho para
x=[1 2016-mean(traffic.year) cars_2016-mean(traffic.cars) ... la prueba (esta es su `hipótesis '). A continuación, escribir el código y
petrol_2016-mean(traffic.petrol)]' explicar el proceso (es decir, los pasos exactos) y las medidas que
my_2016=exp(beta3*x) %----- Model 3 ----- tomó. A continuación, anota tus observaciones en forma

clara, lógica - incluir los errores en los datos. Incluya el código,


gráficos, y ejemplo obras de teatro. Por último, coloque un resumen
del experimento, incluyendo su análisis sobre los temas y si o no sus
datos realmente apoyaron la evidencia.

VII. CONCLUSIÓN

 En este laboratorio, se utilizó la regresión de Poisson para


Pregunta 10: ¿Es la predicción razonable? Comente. analizar algunos problemas de la vida real simples.
Si observamos la tendencia que tiene el primer gráfico sobre las
muertes ocasionadas en accidentes podemos observar que la  Con la realización de los programas se logró familiarizar con
predicción es en parte razonable ya que no supera las 300 muertes, pero el software MATLAB y comprender las funciones propias
no se puede afirmar del todo ya que los datos antes del año 2000 no de dicho software
entran mucho en vigencia porque han existido grandes cambios  Comprender las posibilidades que tiene una persona al
tecnológicos en la sociedad y leyes que disminuyen considerablemente participar en los juegos de azar, esto se debe a que existe
la producción de accidentes, pero también tomar en cuenta que hoy en muy poca probabilidad de que acierte todos los número de
día existe un mayor número de carros en las calles.
cada juego
CÓDIGO
VIII. BIBLIOGRAFÍA
petrol_2016=phat(1)+phat(2)*2016+phat(3)*2016^2;
x=[1 2016-mean(traffic.year) cars_2016-mean(traffic.cars) - Hwei P. Hsu. Schaum’s Outline of Theory and Problems of
petrol_2016-mean(traffic.petrol)]' Probability, Random Variables, and Random Processes, 2nd Edition.
my_2016=exp(beta3'*x) McGraw Hill, ISBN 0-07- 030644-3, 2011.

Con la predicción obtenida del petróleo hacemos una última


estimación con el mayor modelo que elegí que es beta3 y usando esos

También podría gustarte