CoolFace
Apppublic

Elizabethcaar/CORRELACION

sourceHugging Faceupdated 2y agoView on Hugging Face
0likes
app.py70 linesDownload Raw Back to root
1import streamlit as st2import numpy as np3import pandas as pd4import matplotlib.pyplot as plt5import random6 7# Configuración de la aplicación en Streamlit8st.title("Estimación de estadísticas de dos series de datos históricos")9 10with st.form("form_datos"):11    num_elementos = st.number_input("¿Cuántos elementos deseas en cada serie?", min_value=1, step=1)12 13    # Botón para generar las series de datos14    if st.form_submit_button("Generar listas de números aleatorios"):15        serie_a = [random.randint(0, 20) for _ in range(num_elementos)]16        serie_b = [random.randint(0, 20) for _ in range(num_elementos)]17 18if "serie_a" in locals() and "serie_b" in locals():19    promedio_a = np.mean(serie_a)20    promedio_b = np.mean(serie_b)21 22    st.subheader("Valores esperados")23    st.write(f"Promedio de A = {promedio_a:.2f}")24    st.write(f"Promedio de B = {promedio_b:.2f}")25 26    varianza_a = np.var(serie_a)27    varianza_b = np.var(serie_b)28 29    st.subheader("Varianzas")30    st.write(f"Varianza de A = {varianza_a:.2f}")31    st.write(f"Varianza de B = {varianza_b:.2f}")32 33    correlacion_ab = np.corrcoef(serie_a, serie_b)[0, 1]34 35    st.subheader("Correlación")36    st.write(f"Correlación entre A y B = {correlacion_ab:.2f}")37 38    plt.figure(figsize=(6, 4))39    plt.scatter(serie_a, serie_b)40    plt.title("Gráfico de Dispersión A vs B")41    plt.xlabel("Serie A")42    plt.ylabel("Serie B")43    st.pyplot(plt)44 45    plt.figure(figsize=(6, 4))46    plt.plot(serie_a, label='Serie A')47    plt.plot(serie_b, label='Serie B')48    plt.title("Evolución de las Series")49    plt.xlabel("Tiempo")50    plt.ylabel("Valores")51    plt.legend()52    st.pyplot(plt)53 54    w_a = (promedio_a - promedio_b + varianza_b - correlacion_ab * np.sqrt(varianza_a * varianza_b)) / (55        varianza_a + varianza_b - 2 * correlacion_ab * np.sqrt(varianza_a * varianza_b)56    )57    w_b = 1 - w_a58 59    var_portafolio = (w_a**2) * varianza_a + (w_b**2) * varianza_b + 2 * w_a * w_b * correlacion_ab * np.sqrt(varianza_a * varianza_b)60 61    st.subheader("Ponderaciones y rendimiento del portafolio")62    st.write("Suponiendo que A y B son rendimientos de portafolios")63    st.write(f"Ponderación para A = {w_a:.2f}")64    st.write(f"Ponderación para B = {w_b:.2f}")65    st.write(f"Rendimiento esperado del portafolio = {(w_a * promedio_a + w_b * promedio_b):.2f}")66    st.write(f"Varianza del portafolio = {var_portafolio:.2f}")67 68else:69    st.error("Por favor, ingresa el número de elementos para las series.")70