Multicollinearità (fattore di inflazione della varianza). Variabili da rimuovere prima di fare un modello

datascience.stackexchange https://datascience.stackexchange.com/questions/54280

Domanda

Sto facendo un esercizio di un modulo del sistema di apprendimento automatico in Python che prende un set di dati di auto (cilindri, anno, consumo ....) e chiede un modello, essendo la variabile per prevedere il consumo di benzina. Dato che ha tre variabili categoriche, ho generato i manichini.

enter image description here

Nell'esercizio ho bisogno di eliminare le variabili con la multicollinearità, quindi ho usato il metodo mostrato sulle note del mio corso:

from sklearn.linear_model import LinearRegression

def calculateVIF(data):
    features = list(data.columns)
    num_features = len(features)

    model = LinearRegression()

    result = pd.DataFrame(index = ['VIF'], columns = features)
    result = result.fillna(0)

    for ite in range(num_features):
        x_features = features[:]
        y_featue = features[ite]
        x_features.remove(y_featue)

        x = data[x_features]
        y = data[y_featue]

        model.fit(data[x_features], data[y_featue])

        result[y_featue] = 1/(1 - model.score(data[x_features], data[y_featue]))

    return result

Quindi se lancio il metodo calcola un coefficiente per ciascuna variabile:

enter image description here

Nel mio corso si dice che si dice:

  • $ Vif> 5 $ è un valore elevato.
  • $ Vif> 10 $ è un valore molto alto

Cosa dovrei fare? Ho bisogno di rimuovere le variabili che hanno a $ Vif> 10 $ Prima di eseguire il modello?

Il problema che vedo, per i miei cilindri variabili categorici, è solo cilindri_5 ha un VIF sotto i 10, quindi dovrei rimuovere gli altri e lasciare ciclinders_5?

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
scroll top