es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo comparar estadísticamente columnas categóricas utilizando Python.

He calculado algunos puntajes de similitud utilizando diferentes métodos como el coseno, Jaccard, usando transformadores de oraciones, etc. Los puntajes de similitud se convirtieron en forma binaria (x=1 si x>0.5, de lo contrario 0). La salida es la siguiente:

import pandas as pd

df = pd.DataFrame.from_dict(
    {
        "q1": [
            "¿Cuál es la guía paso a paso para invertir en el mercado de valores en India?",
            "¿Cuál es la historia del Diamante Kohinoor (Koh-i-Noor)?",
            "¿Cómo puedo aumentar la velocidad de mi conexión a Internet mientras uso una VPN?",
            "¿Por qué estoy muy solo mentalmente? ¿Cómo puedo resolverlo?",
            "¿Cuál se disuelve rápidamente en agua, azúcar, sal, metano y dióxido de carbono?",
        ],
        "q2": [
            "¿Cuál es la guía paso a paso para invertir en el mercado de valores?",
            "¿Qué pasaría si el gobierno indio recuperara el Diamante Kohinoor (Koh-i-Noor)?",
            "¿Cómo se puede aumentar la velocidad de Internet pirateando DNS?",
            "Encuentre el resto cuando [math]23^{24}[/math] se divide por 24,23?",
            "¿Qué pez sobreviviría en agua salada?",
        ],
        "cos_sim": [1, 0, 0, 0, 1],
        "jac_sim": [1, 0, 1, 1, 1],
        "sentrf_sim": [1, 0, 1, 0, 0],
        "gensim_sim": [0, 0, 1, 1, 1],
    }
)

Quiero comparar estadísticamente (más que solo tomar promedios) las columnas de similitud entre sí (cos_sim, jac_sim, sentrf_sim, gensim_sim). Quizá algunas proporciones, etc. ¿Alguna sugerencia? Gracias.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Un método posible para comparar estadísticamente las columnas de similitud de banderas es realizar una prueba de chi-cuadrado de independencia. Esta prueba puede determinar si existe una asociación significativa entre dos variables categóricas, como las columnas de similitud de banderas y los resultados binarios.

    En primer lugar, podemos crear una tabla de contingencia de las frecuencias observadas de los resultados binarios para cada columna de similitud de banderas:

    freq_obs = pd.crosstab(df['cos_sim'], [df['jac_sim'], df['sentrf_sim'], df['gensim_sim']])
    

    A continuación, podemos calcular las frecuencias esperadas asumiendo que no hay ninguna asociación entre las columnas de similitud de banderas y los resultados binarios:

    from scipy.stats import chi2_contingency
    
    chi2, val_p, dof, freq_esp = chi2_contingency(freq_obs)
    

    Si el valor p es menor que un nivel de significancia predeterminado (por ejemplo, 0,05), podemos rechazar la hipótesis nula de independencia y concluir que existe una asociación significativa entre las columnas de similitud de banderas y los resultados binarios. También podemos examinar los residuos estandarizados para determinar qué celda(s) contribuyen a la asociación significativa.

    Alternativamente, también podemos usar la regresión logística para modelar los resultados binarios como una función de las columnas de similitud de banderas. Este método nos permite estimar las razones de probabilidad de cada columna de similitud de banderas y calcular su significancia estadística. También podemos incluir otras covariables (si están disponibles) para controlar las variables de confusión.

    import statsmodels.api as sm
    
    X = df[['cos_sim', 'jac_sim', 'sentrf_sim', 'gensim_sim']]
    y = df['binary_outcome']
    
    modelo = sm.Logit(y, X).fit()
    modelo.summary()
    

    Esto producirá una salida resumida del modelo de regresión logística, incluyendo los coeficientes estimados (razones de probabilidad) y su significancia estadística. También podemos examinar las estadísticas de bondad de ajuste, como la desviación y la chi-cuadrado de Pearson, para evaluar el ajuste general del modelo.

    En general, la elección del método estadístico depende de la pregunta de investigación y las suposiciones subyacentes a cada método. Puede ser útil consultar con un estadístico o analista de datos para determinar el método más apropiado para el análisis específico.

Comments are closed.