Giter VIP home page Giter VIP logo

tarea3's Introduction

Tarea 3: Variables aleatorias múltiples

Curso: IE0405-Modelos Probabilísticos de Señales y Sistemas

Estudiante: Victor Manuel Yeom Song

Carné: B78494

Asignación 1: Curvas de ajuste para funciones marginales

El cuaderno de jupyter para la solución de esta asignación se halla en Pregunta1.ipynb.

Para estudiar el contenido de los archivos CSV proporcionados se utilizó la biblioteca pandas de Python y para el procesamiento de los datos, así como el ajuste de los mismos a una función de densidad conocida con stats.

Para tener una idea inicial de las distribuciones marginales de los datos, se graficaron las probabilidades marginales y se obtuvieron las siguientes dos figuras:

Figura de X original

Figura de Y original

Entre las distribuciones conocidas del curso, estas dos figuras se asemejan más a la distribución normal. Por esto, se decide hacer el ajuste de cada probabilidad marginal a una distribución normal. Esto se realiza mediante la definición de una función gaussian que acepta una lista de datos (en este caso los rangos de valores de X y Y que se proporcionan), el y el de la distribución normal y retorna una lista con los valores correspondientes a la distribución normal con estos datos.

Luego, se utiliza la función curve_fit del módulo scipy.optimize para obtener el y el del ajuste correspondiente a los datos obtenidos. Se obtienen las siguientes dos gráficas con el ajuste:

Figura de X con ajuste

Figura de Y con ajuste

Con estos datos, se obtuvieron los siguientes parámetros de ajuste:

Se puede ver que los resultados obtenidos se ajustan bien a los datos que se están trabajando. Por ejemplo, la media obtenida para la distribución marginal de X es de aproximadamente 9.9, lo cual se acerca bastante a la media real como se ve en la figura de distribución marginal de X obtenida, lo cual es de esperarse de una distribución normal alrededor de 10. De manera similar se ve que la media obtenida para Y se acerca a la real en la gráfica, que tiene la media alrededor de 15.

Cabe resaltar que el método curve_fit usa un algoritmo de optimización de mínimos cuadrados, en este caso el de Levenber-Marquardt. Como se ve en la documentación oficial, los parámetros que se obtienen con esta función no son siempre iguales, pero sí son muy similares, ya que se utilizan métodos estadísticos para obtener parámetros que logren cumplir con cierta cota determinada por el algoritmo.

Se puede observar que las curvas de ajuste normal no calzan perfectamente con las distribuciones que se tienen, pero esto se puede deber a ruido en la medición de los datos, así como error de muestreo. La forma general de los datos calza considerablemente bien y se considera entonces que ambas distribuciones marginales realmente tienen una distribución normal. Entonces, las funciones de densidad marginales para X y Y serían descritas por:

Asignación 2: Función de densidad conjunta para dos r.v. independientes

Como las dos variables aleatorias son independientes, se tiene que su densidad marginal conjunta es dada por:

Entonces se toman las funciones obtenidas en el inciso anterior y se obtiene:

Simplificando, esta función tiene un valor aproximado de:

Asignación 3: Correlación, covarianza y coeficiente de Pearson

El cuaderno de jupyter para la solución de esta asignación se halla en Pregunta3.ipynb.

Correlación

La correlación se define con e indica "cuánto se parecen dos variables aleatorias", o bien más formalmente "cuantifica el grado en el que dos cantidades están linealmente asociadas". Hay que destacar que la correlación no implica causalidad, dado que dos datos o variables pueden tener formas similares para describir fenómenos diferentes e independientes entre sí.

Para calcular la correlación en Python, se tomaron los datos del archivo xyp.csv en un DataFrame de Pandas. Luego, se usó la definición de , dada por:

.

Solo que se "traduce" a su versión discreta para trabajarla con los datos discretos que tenemos. Es decir, se toma cada par de valores de X, Y y su probabilidad, se multiplican y se suman. Esto se hace mediante la multiplicación de las columnas del dataframe obtenido (que tiene una columna con los valores de X, Y y la probabilidad asociada a ambos). Luego, se utiliza la función sum() de un DataFrame de pandas para sumar todos los productos, de modo que se obtiene . para los datos.

Como los datos son independientes, también se tiene . Entonces, se puede calcular el valor esperado de cada variable aleatoria por separado y multiplicar ambas, de modo que se debería obtener el mismo valor (o al menos uno aproximado, considerando errores de ruido y muestreo).

Se realizaron estas dos formas en el cuaderno, para comparar los resultados (y corroborar la independencia de las variables). Con la primer metodología se obtuvo:

Con la segunda metodología se obtuvo:

Se puede ver que ambos valores se aproximan bastante entre sí, por lo que se asegura la independencia de los datos. Entonces, se puede ver que el valor relativamente alto de correlación indica que tienen un alto grado de asociación lineal entre sí. Sin embargo, esto es la correlación entre dos variables independientes, como se ve por el hecho de que .

Covarianza

La covarianza es una medida que describe la manera en la que crece una variable con respecto a la otra. Una covarianza positiva con magnitud grande indica que ambas variables tienen la misma tendencia de crecimiento (si una sube, la otra también) y que un cambio grande y positivo en una implica un cambio grande y positivo en la otra, mientras que una covarianza negativa de gran magnitud indica que ambas variables tienen tendencias opuestas de crecimiento (si una sube, la otra baja) y un cambio grande y positivo en una implica un cambio grande y negativo en la otra. Una covarianza es igual a 0 cuando las variables en estudio no están correlacionadas/son independientes.

Se sabe que es dada por la relación:

Entonces, la covarianza se calcula con los valores de y obtenidos anteriormente. Se tiene:

Como este valor es bastante pequeño, se asegura que ambas variables son independientes.

Coeficiente de correlación de Pearson

El coeficiente de correlación de Pearson es un momento normalizado, una medida que indica la correlación entre dos variables. El valor mínimo que puede tener es -1, que indica una correlación negativa lineal total entre las variables (es decir, si una variable aumenta en una cierta cantidad, la otra disminuye proporcionalmente a esa cantidad), mientras que el valor máximo de 1 indica una correlación positiva lineal total.

Este momento se obtiene por la relación:

Se obtuvo anteriormente. Se utilizarán los valores de varianza obtenidos para la Asignación 1, que si bien corresponden al modelo teórico y se calculó con los experimentales, debería ser una aproximación suficientemente buena para estos efectos. Se tiene:

Se ve que el valor del coeficiente obtenido es muy pequeño, lo cual es otro indicador más sobre la independencia de los datos estudiados.

Asignación 4: Graficación de los modelos

El cuaderno de Jupyter de esta asignación se halla en Pregunta4.ipynb

Para se tiene:

Ajuste de X

Para se tiene:

Ajuste de Y

Para se tiene:

Conjunta

tarea3's People

Contributors

vyeoms avatar

Watchers

 avatar

Forkers

joselinecss

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.