{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Laboratorio su regressione logistica\n", "Supponiamo di voler studiare la correlazione tra due variabili, di cui una (la variabile dipendente) sia categorica e binaria (ovvero, che può assumere solo i valori $0$ e $1$). Per studiare questo caso, considereremo un esempio riadattato da http://nbviewer.jupyter.org/github/justmarkham/DAT8/blob/master/notebooks/12_logistic_regression.ipynb.\n", "\n", "Consideriamo il **Glass Identification Data Set** (https://archive.ics.uci.edu/ml/datasets/glass+identification). Si tratta di un dataset che contiene una serie di misurazioni per diversi campioni di vetro. Carichiamo il dataset mediante la API di UCI ML:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "RangeIndex: 214 entries, 0 to 213\n", "Data columns (total 10 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", " 0 RI 214 non-null float64\n", " 1 Na 214 non-null float64\n", " 2 Mg 214 non-null float64\n", " 3 Al 214 non-null float64\n", " 4 Si 214 non-null float64\n", " 5 K 214 non-null float64\n", " 6 Ca 214 non-null float64\n", " 7 Ba 214 non-null float64\n", " 8 Fe 214 non-null float64\n", " 9 Type_of_glass 214 non-null int64 \n", "dtypes: float64(9), int64(1)\n", "memory usage: 16.8 KB\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
RINaMgAlSiKCaBaFeType_of_glass
01.5210113.644.491.1071.780.068.750.00.01
11.5176113.893.601.3672.730.487.830.00.01
21.5161813.533.551.5472.990.397.780.00.01
31.5176613.213.691.2972.610.578.220.00.01
41.5174213.273.621.2473.080.558.070.00.01
\n", "
" ], "text/plain": [ " RI Na Mg Al Si K Ca Ba Fe Type_of_glass\n", "0 1.52101 13.64 4.49 1.10 71.78 0.06 8.75 0.0 0.0 1\n", "1 1.51761 13.89 3.60 1.36 72.73 0.48 7.83 0.0 0.0 1\n", "2 1.51618 13.53 3.55 1.54 72.99 0.39 7.78 0.0 0.0 1\n", "3 1.51766 13.21 3.69 1.29 72.61 0.57 8.22 0.0 0.0 1\n", "4 1.51742 13.27 3.62 1.24 73.08 0.55 8.07 0.0 0.0 1" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from ucimlrepo import fetch_ucirepo \n", " \n", "# fetch dataset \n", "glass_identification = fetch_ucirepo(id=42) \n", " \n", "# data (as pandas dataframes) \n", "X = glass_identification.data.features \n", "y = glass_identification.data.targets \n", "\n", "glass= X.join(y)\n", "glass.info()\n", "glass.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Il dataset contiene $214$ osservazioni e $10$ colonne. I significati delle variabili sono i seguenti:\n", " * **id**: l'id della riga del DataFrame;\n", " * **ri**: indice di rifrazione del vetro;\n", " * **na**: percentuale di sodio;\n", " * **mg**: percentuale di mercurio;\n", " * **al**: percentuale di alluminio;\n", " * **si**: percentuale di silicio;\n", " * **k**: percentuale di potassio;\n", " * **ca**: percentuale di calcio;\n", " * **ba**: percentuale di bario;\n", " * **fe**: percentuale di ferro;\n", " * **Type of Glass**:\n", " 1. building_windows_float_processed;\n", " 2. building_windows_non_float_processed;\n", " 3. vehicle_windows_float_processed;\n", " 4. vehicle_windows_non_float_processed (questo tipo di vetro non è presente nel dataset!);\n", " 5. containers;\n", " 6. tableware;\n", " 7. headlamps.\n", "\n", "I diversi tipi di vetro possono essere raggruppati in due macro-categorie:\n", " * vetro da finestre (edifici o veicoli): classi 1, 2, 3 (la classe 4 non è presente nel dataset);\n", " * vetro non da finestre: classi 5, 6, 7;\n", " \n", "Costruiamo una nuova variabile **window_glass** binaria che mappi le calssi come appena definito. Ciò può essere fatto mediante il metodo `replace`:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
RINaMgAlSiKCaBaFeType_of_glasswindow_glass
01.5210113.644.491.1071.780.068.750.00.011
11.5176113.893.601.3672.730.487.830.00.011
21.5161813.533.551.5472.990.397.780.00.011
31.5176613.213.691.2972.610.578.220.00.011
41.5174213.273.621.2473.080.558.070.00.011
\n", "
" ], "text/plain": [ " RI Na Mg Al Si K Ca Ba Fe Type_of_glass \\\n", "0 1.52101 13.64 4.49 1.10 71.78 0.06 8.75 0.0 0.0 1 \n", "1 1.51761 13.89 3.60 1.36 72.73 0.48 7.83 0.0 0.0 1 \n", "2 1.51618 13.53 3.55 1.54 72.99 0.39 7.78 0.0 0.0 1 \n", "3 1.51766 13.21 3.69 1.29 72.61 0.57 8.22 0.0 0.0 1 \n", "4 1.51742 13.27 3.62 1.24 73.08 0.55 8.07 0.0 0.0 1 \n", "\n", " window_glass \n", "0 1 \n", "1 1 \n", "2 1 \n", "3 1 \n", "4 1 " ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "glass['window_glass']=glass['Type_of_glass'].replace({1:1,2:1,3:1,5:0,6:0,7:0})\n", "glass.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Regressione Logistica Semplice\n", "\n", "Supponiamo adesso di voler indagare la correlazione tra la percentuale di alluminio presente nel vetro (variabile `Al`) e la variabile dicotomica `window_glass`. In particolare, vogliamo capire se la variabile `Al` influenza l'esito di `window_glass`, ovvero fino a che punto è possibile prevedere il tipo di vetro conoscendo solo la percentuale di alluminio presente. Iniziamo a studiare la correlazione mediante uno scatterplot:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from matplotlib import pyplot as plt\n", "plt.scatter(glass.Al,glass.window_glass)\n", "plt.grid()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "> **🙋‍♂️ Domanda 1**\n", ">\n", "> Sembra esserci una correlazione tra le due variabili? Quale tipo di vetro sembra contere in genere maggiori concentrazioni di alluminio?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Limiti della regressione lineare con variabile dipendente categorica\n", "Proviamo adesso a visualizzare la retta di regressione relativa alle due variabili:" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import seaborn as sns\n", "sns.regplot('Al','window_glass',glass)\n", "plt.grid()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "> **🙋‍♂️ Domanda 2**\n", ">\n", "> Guardando il grafico con la retta di regressione, che tipo di vetro prevediamo per i seguenti valori di **Al**?\n", "> * Al = 3.5\n", "> * Al = 0.8\n", "> * Al = 1.5\n", "> * Al = 2.5\n", "> * Al = 0.5\n", "> \n", "> Sulla base di quale criterio basiamo le nostre predizioni?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Il regressore lineare, in pratica, ci permette di ottenere un numero reale che ci da qualche indicazione sul valore più verosimile della variabile dicotomica `window_glass`. Se il valore ottenuto mediante il regressore lineare è maggiore o uguale a $0.5$, ha senso prevedere che **window_glass** sia uguale a **1**, altrimenti ha senso prevedere che **window_glass** sia uguale a **0**. Possiamo dunque ottenere delle predizioni binarie sogliando i valori ottenuti mediante il regressore:" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([1., 0.])" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from statsmodels.formula.api import ols\n", "#calcoliamo il regressore lineare\n", "model = ols('window_glass ~ Al',glass).fit()\n", "#otteniamo le predizioni\n", "predictions = model.predict(glass)\n", "#arrotondiamo le predizioni al valore più vicino\n", "#ciò corrisponde a sogliare con 0.5\n", "predictions = predictions.round()\n", "#i valori predetti sono adesso binari\n", "predictions.unique()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Plottiamo le predizioni sul grafico di regressione visto prima:" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import numpy as np\n", "#ordiniamo i valori di al in ordine crescente\n", "#prima troviamo gli indici che ordinano l'array\n", "idx=np.argsort(glass['Al'])\n", "#poi applichiamo lo stesso ordinamento sia ad al che alle predizioni\n", "al = glass['Al'].values[idx]\n", "pred = predictions.values[idx]\n", "\n", "#infine plottiamo\n", "sns.regplot(x='Al',y='window_glass',data=glass)\n", "plt.plot(al,pred,'r')\n", "plt.grid()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Abbiamo individuato un punto di soglia per `al` (vicino a $2.0$) che permette di distinguere gli elementi appartenenti alle due classi con qualche errore (si pensi ai valori a sinistra di $2.0$ con classe `window_glass` pari a zero)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Benché il regressore lineare trovato possa essere utilizzato per la classificazione, esso ha diversi limiti:\n", " * Non è chiaro come interpretare i valori ottenuti dal regressore. Si noti che, dato che essi possono essere inferiori a $0$ o superiori a $1$, essi non possono essere interpretati come probabilità;\n", " * Il metodo non è molto robusto agli outliers. Si immagini che il nostro campione contenga molti punti di classe `window_glass` pari a $0$ e valori di `al` molto alti (es. $300$). La retta di regressione trovata in questo caso sarebbe molto più orizzontale e molti degli elementi con valori bassi di `al` (es. $2.5$) verrebbero assegnati alla classe `window_glass=0`;\n", " * Il metodo non cattura l'incertezza con la quale possiamo prevedere le classi alle quali appartengono gli elementi. Si considerino ad esempio i punti di valori `al=2.5` e `al=2.0`. Ci aspetteremmo che il modello è \"più certo\" della classe di appartenenza del primo punto, piuttosto che del secondo." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Regressione Logistica\n", "Possiamo calcolare un **regressore logistico** come segue:" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Optimization terminated successfully.\n", " Current function value: 0.354364\n", " Iterations 7\n" ] } ], "source": [ "from statsmodels.formula.api import logit\n", "\n", "model = logit('window_glass ~ Al', glass).fit()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Vedremo come analizzare il regressore e interpretare i coefficienti trovati in seguito." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Possiamo ottenere le probabilità predette per i valori delle variabili indipendenti come segue:" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 0.957513\n", "1 0.883730\n", "2 0.781728\n", "3 0.910590\n", "4 0.926211\n", "dtype: float64" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "probs = model.predict(glass)\n", "probs.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Si noti che i valori ottenuti sono adesso compresi tra $0$ e $1$ e dunque interpretabili come probabilità:" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(0.0009889852519933211, 0.9985007304335234)" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "probs.min(), probs.max()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Considereremo un elemento come appartenente alla classe `window_glass=1` se la sua probabilità predetta è superiore a $0.5$. In tal caso infatti, la probabilità di `window_glass=0` sarà inferiore a $0.5$, e dunque l'esito più probabile sarà che l'elemento appartiene alla classe `window_glass`." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Plottiamo le predizioni come fatto in precedenza:" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "#riordiniamo le probabilità utilizzando \n", "#gli indici trovati prima\n", "p = probs.values[idx]\n", "\n", "sns.regplot(x='Al',y='window_glass',data=glass)\n", "plt.plot(al,p,'r')\n", "plt.grid()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Le probabilità ottenute mostrano adesso \"dove\" il modello è più incerto e permettono di **prevedere la probabilità che un dato elemento sia di classe `window_glass=1`**. Possiamo ottenere un plot di regressione logistica con seaborn come segue:" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/furnari/opt/anaconda3/lib/python3.9/site-packages/seaborn/_decorators.py:36: FutureWarning: Pass the following variables as keyword args: x, y. From version 0.12, the only valid positional argument will be `data`, and passing other arguments without an explicit keyword will result in an error or misinterpretation.\n", " warnings.warn(\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "sns.regplot(glass['Al'],glass['window_glass'],logistic=True)\n", "plt.grid()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "> **🙋‍♂️ Domanda 3**\n", ">\n", "> Il regressore logistico individua, in maniera simile a quanto visto per il regressore lineare, una soglia oltre la quale i punti vengono assegnati a una classe piuttosto che a un'altra. Si confronti questo punto di soglia con quello ottenuto nel caso del regressore lineare. I due punti sono diversi? Perché?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Analisi del regressore logistico\n", "Visualizziamo il summary del regressore logistico calcolato in precedenza:" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "
Logit Regression Results
Dep. Variable: window_glass No. Observations: 214
Model: Logit Df Residuals: 212
Method: MLE Df Model: 1
Date: Tue, 31 Oct 2023 Pseudo R-squ.: 0.3547
Time: 07:41:22 Log-Likelihood: -75.834
converged: True LL-Null: -117.51
Covariance Type: nonrobust LLR p-value: 6.835e-20
\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "
coef std err z P>|z| [0.025 0.975]
Intercept 7.7136 1.078 7.158 0.000 5.602 9.826
Al -4.1804 0.660 -6.338 0.000 -5.473 -2.888
" ], "text/plain": [ "\n", "\"\"\"\n", " Logit Regression Results \n", "==============================================================================\n", "Dep. Variable: window_glass No. Observations: 214\n", "Model: Logit Df Residuals: 212\n", "Method: MLE Df Model: 1\n", "Date: Tue, 31 Oct 2023 Pseudo R-squ.: 0.3547\n", "Time: 07:41:22 Log-Likelihood: -75.834\n", "converged: True LL-Null: -117.51\n", "Covariance Type: nonrobust LLR p-value: 6.835e-20\n", "==============================================================================\n", " coef std err z P>|z| [0.025 0.975]\n", "------------------------------------------------------------------------------\n", "Intercept 7.7136 1.078 7.158 0.000 5.602 9.826\n", "Al -4.1804 0.660 -6.338 0.000 -5.473 -2.888\n", "==============================================================================\n", "\"\"\"" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model.summary()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Significatività\n", "Il summary presenta diversi elementi. Analizziamone i più importanti:\n", " * Pseudo R-squared: va interpretato come l'R-Squared nel caso della regressione lineare. Ci dice quanto il modello \"spiega\" bene i dati;\n", " * LLR p-value: è il p-value calcolato da un \"Likelihood-ratio test\" (Rapporto di verosimiglianza). Se il valore del p-value è al di sotto di una soglia critica, (es. $0.0$), il regressore logistico è statisticamente rilevante;\n", " * P-value dei coefficienti ($P>|z|$): vanno interpretati come nel caso della regressione lineare. P-value piccoli indicano che le variabili coinvolte contribuiscono significativamente alla regressione.\n", " \n", "Nel caso specifico del regressore allenato, possiamo dire che:\n", " * Il regressore logistico spiega parte della relazione tra le variabili (pseudo $R^2$ pari a circa $0.35$);\n", " * Il regressore logistico è statisticamente rilevante (p-value al di sotto di $0.05$);\n", " * I coefficienti sono tutti statisticamente rilevanti (p-value bassi);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Analisi dei coefficienti\n", "Analizziamo i coefficienti del regressore logistico calcolato prima. Visualizziamo nuovamente il summary:" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "
Logit Regression Results
Dep. Variable: window_glass No. Observations: 214
Model: Logit Df Residuals: 212
Method: MLE Df Model: 1
Date: Tue, 31 Oct 2023 Pseudo R-squ.: 0.3547
Time: 07:41:53 Log-Likelihood: -75.834
converged: True LL-Null: -117.51
Covariance Type: nonrobust LLR p-value: 6.835e-20
\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "
coef std err z P>|z| [0.025 0.975]
Intercept 7.7136 1.078 7.158 0.000 5.602 9.826
Al -4.1804 0.660 -6.338 0.000 -5.473 -2.888
" ], "text/plain": [ "\n", "\"\"\"\n", " Logit Regression Results \n", "==============================================================================\n", "Dep. Variable: window_glass No. Observations: 214\n", "Model: Logit Df Residuals: 212\n", "Method: MLE Df Model: 1\n", "Date: Tue, 31 Oct 2023 Pseudo R-squ.: 0.3547\n", "Time: 07:41:53 Log-Likelihood: -75.834\n", "converged: True LL-Null: -117.51\n", "Covariance Type: nonrobust LLR p-value: 6.835e-20\n", "==============================================================================\n", " coef std err z P>|z| [0.025 0.975]\n", "------------------------------------------------------------------------------\n", "Intercept 7.7136 1.078 7.158 0.000 5.602 9.826\n", "Al -4.1804 0.660 -6.338 0.000 -5.473 -2.888\n", "==============================================================================\n", "\"\"\"" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model.summary()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Calcoliamo l'esponenziale dei valori dei coefficienti:" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Intercept 2238.577657\n", "Al 0.015292\n", "dtype: float64" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.exp(model.params)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Possiamo dire che:\n", " * Per $al=0$, l'odds che il vetro sia da finestra (`window_glass=1`) è pari a circa $2238$. E' dunque $2238$ volte più probabile che il vetro sia da finestra;\n", " * L'incremento di una unità del valore della variabile `al` corrisponde a un incremento moltiplicativo di $0.015$. Dato che il numero è minore di 1, ciò corrisponde a un decremento moltiplicativo pari a $1-0.015=0.985$. Possiamo dire dunque che l'incremento di una unità del valore di `al` corrisponde a un decremento del $98.5\\%$ dell'odds." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "> **🙋‍♂️ Domanda 4**\n", ">\n", "> Le considerazioni tratte dall'analisi dei coefficienti sono coerenti con quanto visualizzato nel plot di regressione logistica visto in precedenza?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Regressione Logistica Multipla\n", "\n", "E' possibile calcolare un regressore logistico a partire da più variabili indipendenti semplicemente rivedendo il modello come:\n", "\n", "\\begin{equation}\n", "logit(p)=\\beta_0 + \\beta_1 x_1 + \\ldots + \\beta_n x_n\n", "\\end{equation}\n", "\n", "Proviamo a calcolare il modello scegliendo come variabili indipendenti **na** e **si** e mantenendo **window_glass** come variabile dipendente. Possiamo visualizzare lo scatterplot con le classi evidenziate utilizzando searborn:" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAs0AAAHgCAYAAABelVD0AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAABw4klEQVR4nO3dZXRc1/X38e8VM0uWRbbMjHJiiB0mh5s0zAzN/ym3aaBp2rRpkzaFtKGGmzjsMDvosGwnZkbZlixm1n1eHMmj0UgawWhG8PusNcu6Z+69szWW5a2jffaxbNtGREREREQ65ufrAERERERE+jslzSIiIiIibihpFhERERFxQ0mziIiIiIgbSppFRERERNxQ0iwiIiIi4kaArwPoioSEBHvkyJG+DkNEREREBrkVK1YU2Lad2HZ8QCTNI0eOJDs729dhiIiIiMggZ1nWrvbGVZ4hIiIiIuKGkmYRERERETeUNIuIiIiIuDEgaprbU19fT05ODjU1Nb4OZUAICQkhLS2NwMBAX4ciIiIiMuAM2KQ5JyeHyMhIRo4ciWVZvg6nX7Ntm8LCQnJycsjMzPR1OCIiIiIDzoAtz6ipqSE+Pl4JcxdYlkV8fLxm5UVERER6aMAmzYAS5m7QeyUiIiLScwM6aRYRERER8YYhkzQvXryYkpKSLp+/c+dOpkyZ0ncBteOII47QJi4iIiIi/dCAXQjYXW+99ZavQxARERGRAWrQzDT/5S9/4Z///CcAP/nJTzjqqKMAWLZsGRdeeCEjR46koKCAnTt3MnHiRK666iomT57McccdR3V1NQArVqxg+vTpzJs3j3//+98H711TU8Nll13G1KlTmTlzJh999BFgZq9Xr14NwMyZM7njjjsAuPXWW/nvf//bbpxNTU1cf/31TJ48mZNPPpnFixfz4osvupx33XXXkZWVxeTJk/ntb397cPzXv/41kyZNYtq0afz85z8H4IUXXmDKlClMnz6dRYsW9ep9FBERERFXgyZpXrRoEZ999hkA2dnZVFRUUF9fz/Lly1m4cKHTuVu2bOGGG25g3bp1xMTE8NJLLwFw2WWX8c9//pMvv/zS6fyWBHrNmjUsWbKESy65hJqamoOvWVZWRkBAAJ9//jlAu6/Z4uWXX2bnzp2sWbOG//73vy6v1eLOO+8kOzub1atX88knn7B69WqKiopYunQp69atY/Xq1dxyyy0A3HHHHbz77rt8//33vPbaaz18B0VERESkI4MmaZ49ezYrVqygvLyc4OBg5s2bR3Z2Np999plLApuZmcmMGTMOXrdz505KS0spKSnh8MMPB+Ciiy46eP7y5csPHk+YMIERI0awefNmFi5cyKeffsry5cs56aSTqKiooKqqip07dzJ+/Ph241y+fDk//OEP8fPzIzk5mSOPPLLd855//nlmzZrFzJkzWbduHevXrycqKoqQkBCuvPJKXn75ZcLCwgBYsGABl156KQ8//DCNjY29eh9FRERExNWgSZoDAwMZOXIkjz32GPPnz2fhwoV89NFHbNu2jYkTJzqdGxwcfPBjf39/GhoasG27w7Zstm23Oz5nzpyDifmiRYuYOXMmDz/8MLNnz+4wzo7u1dqOHTu45557WLZsGatXr+akk06ipqaGgIAAvvnmG84880xeeeUVTjjhBAAeeOAB/vCHP7Bnzx5mzJhBYWGh29cQERERka4bNEkzmBKNe+65h0WLFrFw4UIeeOABZsyY0aUexTExMURHR7N8+XIAnn76aaf7thxv3ryZ3bt3M378eIKCgkhPT+f5559n7ty5LFy4kHvuuafD0gyAww47jJdeeommpiby8vL4+OOPXc4pKysjPDyc6Oho8vLyePvttwGoqKigtLSUxYsX8/e//53vvvsOgG3btnHooYdyxx13kJCQwJ49e7r6lomIiIj0G7Ztk1Ncxc6CSuoa+tdvzwdV94yFCxdy5513Mm/ePMLDwwkJCek0gW3rscce4/LLLycsLIzjjz/+4Pj111/Ptddey9SpUwkICODxxx8/OFu9cOFCli1bRlhYGAsXLiQnJ6fT1zzzzDNZtmwZU6ZMYdy4cRx66KFER0c7nTN9+nRmzpzJ5MmTGTVqFAsWLACgvLyc0047jZqaGmzb5t577wXgF7/4BVu2bMG2bY4++mimT5/e5c9ZREREpD8ora7jpRU5/PW9zdQ0NHHOnHRuOGI0qbFhvg4NAKsr5QK+lpWVZbftX7xhwwaXsouBoqKigoiICAoLCznkkEP4/PPPSU5O7vPXHcjvmYiIiAxuH206wGWPfes09ovjxnPDUWO8GodlWSts285qOz6oZpoHipNPPpmSkhLq6uq49dZbvZIwi4iIiPRnX21zXZP10socLpo3gqjQQB9E5ExJcx9Zs2aN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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(12,8))\n", "sns.scatterplot(x='Na',y='Si',data=glass, hue='window_glass')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "> **🙋‍♂️ Domanda 5**\n", ">\n", "> Come si distribuiscono i dati delle due classi nello spazio? Quale potrebbe essere un buon criterio per classificarli?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Calcoliamo il regressore logistico multiplo:" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Optimization terminated successfully.\n", " Current function value: 0.409695\n", " Iterations 7\n" ] }, { "data": { "text/html": [ "\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "
Logit Regression Results
Dep. Variable: window_glass No. Observations: 214
Model: Logit Df Residuals: 211
Method: MLE Df Model: 2
Date: Tue, 31 Oct 2023 Pseudo R-squ.: 0.2539
Time: 07:43:20 Log-Likelihood: -87.675
converged: True LL-Null: -117.51
Covariance Type: nonrobust LLR p-value: 1.098e-13
\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "
coef std err z P>|z| [0.025 0.975]
Intercept 91.9716 22.944 4.008 0.000 47.002 136.941
Na -1.8780 0.306 -6.143 0.000 -2.477 -1.279
Si -0.8988 0.292 -3.075 0.002 -1.472 -0.326
" ], "text/plain": [ "\n", "\"\"\"\n", " Logit Regression Results \n", "==============================================================================\n", "Dep. Variable: window_glass No. Observations: 214\n", "Model: Logit Df Residuals: 211\n", "Method: MLE Df Model: 2\n", "Date: Tue, 31 Oct 2023 Pseudo R-squ.: 0.2539\n", "Time: 07:43:20 Log-Likelihood: -87.675\n", "converged: True LL-Null: -117.51\n", "Covariance Type: nonrobust LLR p-value: 1.098e-13\n", "==============================================================================\n", " coef std err z P>|z| [0.025 0.975]\n", "------------------------------------------------------------------------------\n", "Intercept 91.9716 22.944 4.008 0.000 47.002 136.941\n", "Na -1.8780 0.306 -6.143 0.000 -2.477 -1.279\n", "Si -0.8988 0.292 -3.075 0.002 -1.472 -0.326\n", "==============================================================================\n", "\"\"\"" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model = logit('window_glass ~ Na + Si',glass).fit()\n", "model.summary()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Analizziamo in breve il risultato della regressione logistica:\n", " * Il modello spiega parte della relazione tra le variabili indipendenti e la variabile dipendente ($R^2=0.2539$);\n", " * Il regressore si distingue in maniera rilevante dal regressore nullo (p-value sotto la soglia critica $0.05$);\n", " * I parametri del regressore sono tutti statisticamente rilevanti (p-value tutti sotto la soglia $0.05$);\n", "Calcoliamo l'esponenziale dei parametri:" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Intercept 8.764972e+39\n", "Na 1.528937e-01\n", "Si 4.070460e-01\n", "dtype: float64" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.exp(model.params)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ " * Se `Na=0` e `Si=0`, il vetro è da finestra in maniera quasi certa;\n", " * Se la variabile `Si=0`, l'incremento di una unità della variabile `na` causa un decremento dell'odds di circa il $98.48\\%$;\n", " * Se la variabile `Na=0`, l'incremento di una unità della variabile `si` causa un decremento dell'odds pari a circa il $96\\%$." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "> **🙋‍♂️ Domanda 6**\n", ">\n", "> Considerato che `Si` e `Na` hanno la stessa unità di misura (misurano entrambe delle concentrazioni), quali delle due variabili influenza maggiormente l'esito dell'appartenenza o meno alla classe `window_glass`? Se le unità di misura fossero diverse, potremmo fare le stesse considerazioni?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Esempio di regressione logistica con più di due variabili indipendenti\n", "Vediamo un esempio di regressione logistica con più di due variabili indipendenti. Utilizzeremo il dataset di R `biopsy`. Possiamo caricarlo mediante `statsmodels`:" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "scrolled": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ ".. container::\n", "\n", " ====== ===============\n", " biopsy R Documentation\n", " ====== ===============\n", "\n", " .. rubric:: Biopsy Data on Breast Cancer Patients\n", " :name: biopsy\n", "\n", " .. rubric:: Description\n", " :name: description\n", "\n", " This breast cancer database was obtained from the University of\n", " Wisconsin Hospitals, Madison from Dr. William H. Wolberg. He assessed\n", " biopsies of breast tumours for 699 patients up to 15 July 1992; each\n", " of nine attributes has been scored on a scale of 1 to 10, and the\n", " outcome is also known. There are 699 rows and 11 columns.\n", "\n", " .. rubric:: Usage\n", " :name: usage\n", "\n", " .. code:: R\n", "\n", " biopsy\n", "\n", " .. rubric:: Format\n", " :name: format\n", "\n", " This data frame contains the following columns:\n", "\n", " ``ID``\n", " sample code number (not unique).\n", "\n", " ``V1``\n", " clump thickness.\n", "\n", " ``V2``\n", " uniformity of cell size.\n", "\n", " ``V3``\n", " uniformity of cell shape.\n", "\n", " ``V4``\n", " marginal adhesion.\n", "\n", " ``V5``\n", " single epithelial cell size.\n", "\n", " ``V6``\n", " bare nuclei (16 values are missing).\n", "\n", " ``V7``\n", " bland chromatin.\n", "\n", " ``V8``\n", " normal nucleoli.\n", "\n", " ``V9``\n", " mitoses.\n", "\n", " ``class``\n", " ``\"benign\"`` or ``\"malignant\"``.\n", "\n", " .. rubric:: Source\n", " :name: source\n", "\n", " P. M. Murphy and D. W. Aha (1992). UCI Repository of machine learning\n", " databases. [Machine-readable data repository]. Irvine, CA: University\n", " of California, Department of Information and Computer Science.\n", "\n", " O. L. Mangasarian and W. H. Wolberg (1990) Cancer diagnosis via\n", " linear programming. *SIAM News* **23**, pp 1 & 18.\n", "\n", " William H. Wolberg and O.L. Mangasarian (1990) Multisurface method of\n", " pattern separation for medical diagnosis applied to breast cytology.\n", " *Proceedings of the National Academy of Sciences, U.S.A.* **87**, pp.\n", " 9193–9196.\n", "\n", " O. L. Mangasarian, R. Setiono and W.H. Wolberg (1990) Pattern\n", " recognition via linear programming: Theory and application to medical\n", " diagnosis. In *Large-scale Numerical Optimization* eds Thomas F.\n", " Coleman and Yuying Li, SIAM Publications, Philadelphia, pp 22–30.\n", "\n", " K. P. Bennett and O. L. Mangasarian (1992) Robust linear programming\n", " discrimination of two linearly inseparable sets. *Optimization\n", " Methods and Software* **1**, pp. 23–34 (Gordon & Breach Science\n", " Publishers).\n", "\n", " .. rubric:: References\n", " :name: references\n", "\n", " Venables, W. N. and Ripley, B. D. (2002) *Modern Applied Statistics\n", " with S-PLUS.* Fourth Edition. Springer.\n", "\n" ] } ], "source": [ "from statsmodels.datasets import get_rdataset\n", "biopsy = get_rdataset('biopsy',package='MASS')\n", "print(biopsy.__doc__)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Il dataset contiene $699$ osservazioni e $11$ colonne. Ogni osservazioni contiene misurazioni di $9$ grandezze relative a campioni di tessuto che possono essere tumori \"benigni\" o \"maligni\". Iniziamo manipolando un po' i dati. Visualizziamo i valori della variabile `class`:" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array(['benign', 'malignant'], dtype=object)" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "biopsy.data['class'].unique()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Per calcolare il modello di regressione logistica mediante statsmodels è necessario convertire questi valori in interi ($0$ o $1$). Inoltre, conviene evitare di chiamare la colonna `class` in quanto questa è una parola riservata per statsmodels. Costruiamo una nuova colonna `cl` che contiene i valori di `class` modificati:" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [], "source": [ "biopsy.data['cl'] = biopsy.data['class'].replace({'benign':0, 'malignant':1})" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Procediamo a calcolare il regressore logistico considerando tutte le variabili:" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Optimization terminated successfully.\n", " Current function value: 0.075321\n", " Iterations 10\n" ] }, { "data": { "text/html": [ "\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "
Logit Regression Results
Dep. Variable: cl No. Observations: 683
Model: Logit Df Residuals: 673
Method: MLE Df Model: 9
Date: Tue, 31 Oct 2023 Pseudo R-squ.: 0.8837
Time: 07:44:51 Log-Likelihood: -51.444
converged: True LL-Null: -442.18
Covariance Type: nonrobust LLR p-value: 2.077e-162
\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "
coef std err z P>|z| [0.025 0.975]
Intercept -10.1039 1.175 -8.600 0.000 -12.407 -7.801
V1 0.5350 0.142 3.767 0.000 0.257 0.813
V2 -0.0063 0.209 -0.030 0.976 -0.416 0.404
V3 0.3227 0.231 1.399 0.162 -0.129 0.775
V4 0.3306 0.123 2.678 0.007 0.089 0.573
V5 0.0966 0.157 0.617 0.537 -0.210 0.404
V6 0.3830 0.094 4.082 0.000 0.199 0.567
V7 0.4472 0.171 2.609 0.009 0.111 0.783
V8 0.2130 0.113 1.887 0.059 -0.008 0.434
V9 0.5348 0.329 1.627 0.104 -0.110 1.179
" ], "text/plain": [ "\n", "\"\"\"\n", " Logit Regression Results \n", "==============================================================================\n", "Dep. Variable: cl No. Observations: 683\n", "Model: Logit Df Residuals: 673\n", "Method: MLE Df Model: 9\n", "Date: Tue, 31 Oct 2023 Pseudo R-squ.: 0.8837\n", "Time: 07:44:51 Log-Likelihood: -51.444\n", "converged: True LL-Null: -442.18\n", "Covariance Type: nonrobust LLR p-value: 2.077e-162\n", "==============================================================================\n", " coef std err z P>|z| [0.025 0.975]\n", "------------------------------------------------------------------------------\n", "Intercept -10.1039 1.175 -8.600 0.000 -12.407 -7.801\n", "V1 0.5350 0.142 3.767 0.000 0.257 0.813\n", "V2 -0.0063 0.209 -0.030 0.976 -0.416 0.404\n", "V3 0.3227 0.231 1.399 0.162 -0.129 0.775\n", "V4 0.3306 0.123 2.678 0.007 0.089 0.573\n", "V5 0.0966 0.157 0.617 0.537 -0.210 0.404\n", "V6 0.3830 0.094 4.082 0.000 0.199 0.567\n", "V7 0.4472 0.171 2.609 0.009 0.111 0.783\n", "V8 0.2130 0.113 1.887 0.059 -0.008 0.434\n", "V9 0.5348 0.329 1.627 0.104 -0.110 1.179\n", "==============================================================================\n", "\"\"\"" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model = logit('cl ~ V1 + V2 + V3 + V4 + V5 + V6 + V7 + V8 + V9',biopsy.data).fit()\n", "model.summary()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Il regressore logistico spiega bene la relazione tra le variabili ($R^2$ alto) ed è significativo (p-value quasi nullo). Alcuni coefficienti hanno un p-value alto. Iniziamo eliminando la variabile `V2`, che ha il p-value più alto:" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Optimization terminated successfully.\n", " Current function value: 0.075321\n", " Iterations 10\n" ] }, { "data": { "text/html": [ "\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "
Logit Regression Results
Dep. Variable: cl No. Observations: 683
Model: Logit Df Residuals: 674
Method: MLE Df Model: 8
Date: Tue, 31 Oct 2023 Pseudo R-squ.: 0.8837
Time: 07:45:00 Log-Likelihood: -51.445
converged: True LL-Null: -442.18
Covariance Type: nonrobust LLR p-value: 2.036e-163
\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "
coef std err z P>|z| [0.025 0.975]
Intercept -10.0976 1.155 -8.739 0.000 -12.362 -7.833
V1 0.5346 0.141 3.784 0.000 0.258 0.811
V3 0.3182 0.174 1.826 0.068 -0.023 0.660
V4 0.3299 0.121 2.723 0.006 0.092 0.567
V5 0.0961 0.156 0.618 0.537 -0.209 0.401
V6 0.3831 0.094 4.082 0.000 0.199 0.567
V7 0.4465 0.170 2.628 0.009 0.114 0.779
V8 0.2125 0.112 1.902 0.057 -0.006 0.432
V9 0.5341 0.328 1.630 0.103 -0.108 1.176
" ], "text/plain": [ "\n", "\"\"\"\n", " Logit Regression Results \n", "==============================================================================\n", "Dep. Variable: cl No. Observations: 683\n", "Model: Logit Df Residuals: 674\n", "Method: MLE Df Model: 8\n", "Date: Tue, 31 Oct 2023 Pseudo R-squ.: 0.8837\n", "Time: 07:45:00 Log-Likelihood: -51.445\n", "converged: True LL-Null: -442.18\n", "Covariance Type: nonrobust LLR p-value: 2.036e-163\n", "==============================================================================\n", " coef std err z P>|z| [0.025 0.975]\n", "------------------------------------------------------------------------------\n", "Intercept -10.0976 1.155 -8.739 0.000 -12.362 -7.833\n", "V1 0.5346 0.141 3.784 0.000 0.258 0.811\n", "V3 0.3182 0.174 1.826 0.068 -0.023 0.660\n", "V4 0.3299 0.121 2.723 0.006 0.092 0.567\n", "V5 0.0961 0.156 0.618 0.537 -0.209 0.401\n", "V6 0.3831 0.094 4.082 0.000 0.199 0.567\n", "V7 0.4465 0.170 2.628 0.009 0.114 0.779\n", "V8 0.2125 0.112 1.902 0.057 -0.006 0.432\n", "V9 0.5341 0.328 1.630 0.103 -0.108 1.176\n", "==============================================================================\n", "\"\"\"" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model = logit('cl ~ V1 + V3 + V4 + V5 + V6 + V7 + V8 + V9',biopsy.data).fit()\n", "model.summary()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Procediamo rimuovendo `V5`, che ha p-value pari a $0.537$:" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Optimization terminated successfully.\n", " Current function value: 0.075598\n", " Iterations 10\n" ] }, { "data": { "text/html": [ "\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "
Logit Regression Results
Dep. Variable: cl No. Observations: 683
Model: Logit Df Residuals: 675
Method: MLE Df Model: 7
Date: Tue, 31 Oct 2023 Pseudo R-squ.: 0.8832
Time: 07:45:02 Log-Likelihood: -51.633
converged: True LL-Null: -442.18
Covariance Type: nonrobust LLR p-value: 2.240e-164
\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "
coef std err z P>|z| [0.025 0.975]
Intercept -9.9828 1.126 -8.865 0.000 -12.190 -7.776
V1 0.5340 0.141 3.793 0.000 0.258 0.810
V3 0.3453 0.172 2.012 0.044 0.009 0.682
V4 0.3425 0.119 2.873 0.004 0.109 0.576
V6 0.3883 0.094 4.150 0.000 0.205 0.572
V7 0.4619 0.168 2.746 0.006 0.132 0.792
V8 0.2261 0.111 2.037 0.042 0.009 0.444
V9 0.5312 0.324 1.637 0.102 -0.105 1.167
" ], "text/plain": [ "\n", "\"\"\"\n", " Logit Regression Results \n", "==============================================================================\n", "Dep. Variable: cl No. Observations: 683\n", "Model: Logit Df Residuals: 675\n", "Method: MLE Df Model: 7\n", "Date: Tue, 31 Oct 2023 Pseudo R-squ.: 0.8832\n", "Time: 07:45:02 Log-Likelihood: -51.633\n", "converged: True LL-Null: -442.18\n", "Covariance Type: nonrobust LLR p-value: 2.240e-164\n", "==============================================================================\n", " coef std err z P>|z| [0.025 0.975]\n", "------------------------------------------------------------------------------\n", "Intercept -9.9828 1.126 -8.865 0.000 -12.190 -7.776\n", "V1 0.5340 0.141 3.793 0.000 0.258 0.810\n", "V3 0.3453 0.172 2.012 0.044 0.009 0.682\n", "V4 0.3425 0.119 2.873 0.004 0.109 0.576\n", "V6 0.3883 0.094 4.150 0.000 0.205 0.572\n", "V7 0.4619 0.168 2.746 0.006 0.132 0.792\n", "V8 0.2261 0.111 2.037 0.042 0.009 0.444\n", "V9 0.5312 0.324 1.637 0.102 -0.105 1.167\n", "==============================================================================\n", "\"\"\"" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model = logit('cl ~ V1 + V3 + V4 + V6 + V7 + V8 + V9',biopsy.data).fit()\n", "model.summary()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Rimuoviamo `V9`, che ha p-value superiore a $0.05$:" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Optimization terminated successfully.\n", " Current function value: 0.078436\n", " Iterations 9\n" ] }, { "data": { "text/html": [ "\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "
Logit Regression Results
Dep. Variable: cl No. Observations: 683
Model: Logit Df Residuals: 676
Method: MLE Df Model: 6
Date: Tue, 31 Oct 2023 Pseudo R-squ.: 0.8788
Time: 07:45:06 Log-Likelihood: -53.572
converged: True LL-Null: -442.18
Covariance Type: nonrobust LLR p-value: 1.294e-164
\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "
coef std err z P>|z| [0.025 0.975]
Intercept -9.7671 1.085 -9.001 0.000 -11.894 -7.640
V1 0.6225 0.137 4.540 0.000 0.354 0.891
V3 0.3495 0.165 2.118 0.034 0.026 0.673
V4 0.3375 0.116 2.920 0.004 0.111 0.564
V6 0.3786 0.094 4.035 0.000 0.195 0.562
V7 0.4713 0.166 2.837 0.005 0.146 0.797
V8 0.2432 0.109 2.240 0.025 0.030 0.456
" ], "text/plain": [ "\n", "\"\"\"\n", " Logit Regression Results \n", "==============================================================================\n", "Dep. Variable: cl No. Observations: 683\n", "Model: Logit Df Residuals: 676\n", "Method: MLE Df Model: 6\n", "Date: Tue, 31 Oct 2023 Pseudo R-squ.: 0.8788\n", "Time: 07:45:06 Log-Likelihood: -53.572\n", "converged: True LL-Null: -442.18\n", "Covariance Type: nonrobust LLR p-value: 1.294e-164\n", "==============================================================================\n", " coef std err z P>|z| [0.025 0.975]\n", "------------------------------------------------------------------------------\n", "Intercept -9.7671 1.085 -9.001 0.000 -11.894 -7.640\n", "V1 0.6225 0.137 4.540 0.000 0.354 0.891\n", "V3 0.3495 0.165 2.118 0.034 0.026 0.673\n", "V4 0.3375 0.116 2.920 0.004 0.111 0.564\n", "V6 0.3786 0.094 4.035 0.000 0.195 0.562\n", "V7 0.4713 0.166 2.837 0.005 0.146 0.797\n", "V8 0.2432 0.109 2.240 0.025 0.030 0.456\n", "==============================================================================\n", "\"\"\"" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model = logit('cl ~ V1 + V3 + V4 + V6 + V7 + V8',biopsy.data).fit()\n", "model.summary()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Tutti i coefficienti hanno adesso un p-value accettabile. Proseguiamo all'analisi dei coefficienti. Calcoliamo gli esponenziali:" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Intercept 0.000057\n", "V1 1.863641\n", "V3 1.418374\n", "V4 1.401487\n", "V6 1.460166\n", "V7 1.602133\n", "V8 1.275287\n", "dtype: float64" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.exp(model.params)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ " * Il valore dell'esponenziale dell'intercetta quasi nullo indica che, quando tutte le variabili assumono valori nulli, l'odds è molto basso. Ciò indica che $p$ è basso, mentre $1-p$ è molto alto. La probabilità di avere un tumore maligno è quindi molto bassa se tutte le variabili assumono valori nulli;\n", " * L'incremento di una unità del valore di `V1` corrisponde all'incremento di circa l'$86\\%$ dell'odds, il che rende la possibilità di un tumore maligno più alta;\n", " * L'incremento di una unità del valore di `V3` corrisponde all'incremento di circa il $41\\%$ dell'odds;\n", " * L'incremento di una unità del valore di `V4` corrisponde all'incremento di circa il $40\\%$ dell'odds;\n", " * L'incremento di una unità del valore di `V6` corrisponde all'incremento di circa il $46\\%$ dell'odds;\n", " * L'incremento di una unità del valore di `V7` corrisponde all'incremento di circa il $60\\%$ dell'odds;\n", " * L'incremento di una unità del valore di `V8` corrisponde all'incremento di circa il $27\\%$ dell'odds;\n", " \n", "L'incremento delle variabili, in genere, causa un incremento dell'odds. Pertanto ci aspettiamo che i valori delle variabili siano piccoli in presenza di tumori benigni." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "> **🙋‍♂️ Domanda 7**\n", ">\n", "> Si legga la documentazione del dataset considerato per capire su quale scala sono stati registrati i valori delle variabili indipendenti. Si calcolino inoltre le deviazioni standard delle singole variabili nel dataset. Possiamo dire che qualcuna di queste variabili è più influente sulla presenza di un tumore maligno rispetto alle altre?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Regressore Logistico Multinomiale (Opzionale)\n", "Vediamo un esempio di regressore logistico multinomiale sul dataset delle Iris di Fisher. Carichiamo il dataset con `seaborn`:" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
sepal_lengthsepal_widthpetal_lengthpetal_widthspecies
05.13.51.40.2setosa
14.93.01.40.2setosa
24.73.21.30.2setosa
34.63.11.50.2setosa
45.03.61.40.2setosa
..................
1456.73.05.22.3virginica
1466.32.55.01.9virginica
1476.53.05.22.0virginica
1486.23.45.42.3virginica
1495.93.05.11.8virginica
\n", "

150 rows × 5 columns

\n", "
" ], "text/plain": [ " sepal_length sepal_width petal_length petal_width species\n", "0 5.1 3.5 1.4 0.2 setosa\n", "1 4.9 3.0 1.4 0.2 setosa\n", "2 4.7 3.2 1.3 0.2 setosa\n", "3 4.6 3.1 1.5 0.2 setosa\n", "4 5.0 3.6 1.4 0.2 setosa\n", ".. ... ... ... ... ...\n", "145 6.7 3.0 5.2 2.3 virginica\n", "146 6.3 2.5 5.0 1.9 virginica\n", "147 6.5 3.0 5.2 2.0 virginica\n", "148 6.2 3.4 5.4 2.3 virginica\n", "149 5.9 3.0 5.1 1.8 virginica\n", "\n", "[150 rows x 5 columns]" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import seaborn as sns\n", "iris = sns.load_dataset('iris')\n", "iris" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Come visto a lezione, considereremo intanto una unica feature `petal_length`:" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "sns.scatterplot(x='petal_length', y='species', data=iris)\n", "plt.grid()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Posso calcolare il regressore multinomiale mediante `MNLogit` di `statsmodels`. Prima però dovrò effettuare un mapping delle classe su valori interi:" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Optimization terminated successfully.\n", " Current function value: 0.606893\n", " Iterations 8\n" ] }, { "data": { "text/html": [ "\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "
MNLogit Regression Results
Dep. Variable: species No. Observations: 150
Model: MNLogit Df Residuals: 146
Method: MLE Df Model: 2
Date: Tue, 31 Oct 2023 Pseudo R-squ.: 0.4476
Time: 07:49:17 Log-Likelihood: -91.034
converged: True LL-Null: -164.79
Covariance Type: nonrobust LLR p-value: 9.276e-33
\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "
species=1 coef std err z P>|z| [0.025 0.975]
Intercept 12.6771 2.906 4.362 0.000 6.981 18.373
sepal_length -2.0307 0.466 -4.361 0.000 -2.943 -1.118
species=2 coef std err z P>|z| [0.025 0.975]
Intercept 38.7590 5.691 6.811 0.000 27.605 49.913
sepal_length -6.8464 1.022 -6.698 0.000 -8.850 -4.843
" ], "text/plain": [ "\n", "\"\"\"\n", " MNLogit Regression Results \n", "==============================================================================\n", "Dep. Variable: species No. Observations: 150\n", "Model: MNLogit Df Residuals: 146\n", "Method: MLE Df Model: 2\n", "Date: Tue, 31 Oct 2023 Pseudo R-squ.: 0.4476\n", "Time: 07:49:17 Log-Likelihood: -91.034\n", "converged: True LL-Null: -164.79\n", "Covariance Type: nonrobust LLR p-value: 9.276e-33\n", "================================================================================\n", " species=1 coef std err z P>|z| [0.025 0.975]\n", "--------------------------------------------------------------------------------\n", "Intercept 12.6771 2.906 4.362 0.000 6.981 18.373\n", "sepal_length -2.0307 0.466 -4.361 0.000 -2.943 -1.118\n", "--------------------------------------------------------------------------------\n", " species=2 coef std err z P>|z| [0.025 0.975]\n", "--------------------------------------------------------------------------------\n", "Intercept 38.7590 5.691 6.811 0.000 27.605 49.913\n", "sepal_length -6.8464 1.022 -6.698 0.000 -8.850 -4.843\n", "================================================================================\n", "\"\"\"" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from statsmodels.formula.api import mnlogit\n", "iris2 = iris.copy(); \n", "iris2['species'] = iris2['species'].replace({'setosa':2, 'versicolor':1, 'virginica':0})\n", "mnlogit(\"species ~ sepal_length\", iris2).fit().summary()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Il regressore logistico multinomiale è statisticamente rilevante (p-value basso) e che tutti i coefficienti hanno p-value bassi. \n", "\n", "Possiamo notare che ci sono due insiemi di coefficienti: uno per `species=1` (versicolor) e uno per `species=2` (setosa). Non sono stati stimati coefficienti per `virginica`, perché è stata scelta come linea di base. Tutti i valori p sono bassi, quindi possiamo mantenere tutte le variabili. Vediamo come interpretare i coefficienti:\n", "- L'intercetta per `species=1` è $12.6771$. Ciò indica che la probabilità di `versicolor` rispetto a `virginica` è $e^{12.6771}=320327.76$, quando `sepal_length` è impostato a zero. Questo è un numero molto grande, probabilmente a causa del fatto che `sepal_length=0` non è un'osservazione realistica.\n", "- L'intercetta per `species=2` è $38.7590$. Ciò indica che la probabilità di `setosa` rispetto a `virginica` è $e^{38.7590}=6.8e+16$, quando `sepal_length` è impostato a zero. Anche in questo caso, otteniamo un numero molto grande, probabilmente a causa del fatto che `sepal_length=0` non è un'osservazione realistica.\n", "- Il coefficiente $-2.0307$ di `sepal_length` per `species=1` indica che quando osserviamo un aumento di un centimetro di `sepal_length`, la probabilità di `versicolor` rispetto a `virginica` diminuisce moltiplicativamente del $e^{-2.0307} = 0.13$ (una diminuzione del -87%).\n", "- Il coefficiente $-6.8564$ di `sepal_length` per `species=2` indica che quando osserviamo un aumento di un centimetro di `sepal_length`, la probabilità di `setosa` rispetto a `virginica` diminuisce moltiplicativamente del $e^{-6.8464} = 0.001$ (una diminuzione del -99.9%)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Esercizi" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "> 🧑‍💻 Esercizio 1\n", "> \n", "> Si calcoli un regressore logistico per predire i valori della variabile `Survived` a partire dalle altre variabili del dataset Titanic. Si gestiscano adeguatamente le variabili categoriche. Si utilizzi il metodo della backward elimination per eliminare le variabili che non contribuiscono significativamente alla regressione. Si analizzi il regressore trovato e si discuta il significato dei suoi parametri." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "> 🧑‍💻 Esercizio 2\n", "> \n", "> Si scelgano due variabili significative del regressore calcolato al punto precedente e si calcoli un regressore bivariato usando solo queste due variabili. Si visualizzi un plot di regressione logistica sui dati bidimensionali individuati dalle due variabili. Si plotti il decision boundary individuato dal regressore sullo scatterplot delle due variabili." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "> 🧑‍💻 Esercizio 3\n", "> \n", "> Si consideri il dataset Boston. Si costruisca un regressore logistico per prevedere i valori della variabile `chas` a partire dai valori delle altre variabili. Si gesticano adeguatamente le variabili categoriche mediante l'introduzione di variabili dummy. Si utilizzi il metodo della backward elimination per eliminare le variabili che non contribuiscono significativamente alla regressione." ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.12" } }, "nbformat": 4, "nbformat_minor": 1 }