Risultati diversi quando si calcolano regressioni lineari di calcolo con Scipiy.stats e statsmadels

StackOverflow https://stackoverflow.com//questions/24005243

Domanda

Sto ottenendo diversi valori di r ^ 2 (coefficiente di determinazione) quando provo che OLS si adatta a queste due biblioteche e non riesco a capire perché.(Alcune spaziature rimosse per la vostra convenienza)

In [1]: import pandas as pd       
In [2]: import numpy as np
In [3]: import statsmodels.api as sm
In [4]: import scipy.stats
In [5]: np.random.seed(100)
In [6]: x = np.linspace(0, 10, 100) + 5*np.random.randn(100)
In [7]: y = np.arange(100)

In [8]: slope, intercept, r, p, std_err = scipy.stats.linregress(x, y)

In [9]: r**2
Out[9]: 0.22045988449873671

In [10]: model = sm.OLS(y, x)
In [11]: est = model.fit()

In [12]: est.rsquared
Out[12]: 0.5327910685035413
.

Cosa sta succedendo qui?Non riesco a capirlo!C'è un errore da qualche parte?

È stato utile?

Soluzione

Lo 0.2205 proviene da un modello che anche ha un termine di intercettazione - il valore 0.5328 è il risultato se si rimuove l'intercettazione.

Fondamentalmente, un pacchetto è modellante Y= BX considerando che l'altro (abilmente) presuppone che tu ne desideri come un termine di intercettazione (ad esempio Y= A +BX ).[Nota: il vantaggio di questa ipotesi è che altrimenti dovresti prendere x e vincolare una colonna di quelli ad esso ogni volta che volevi eseguire una regressione (o finire con a BIASED Modello)]

Check out Questo post per una discussione più lunga.

Buona fortuna!

Altri suggerimenti

Questa non è una risposta alla domanda originale che è stata data una risposta.

su R-Squared in una regressione senza costante.

Un problema è che una regressione senza intercetta non ha la definizione standard di r ^ 2.

Essenzialmente, R-Squared come una bontà di misura in forma in un modello con un'intercettazione confronta il modello completo con il modello che ha solo un'intercettazione. Se il modello completo non ha un'intercettazione, la definizione standard di R ^ 2 può produrre risultati strani come negativi r ^ 2.

La definizione convenzionale nella regressione senza costante divide dalla somma totale dei quadrati della variabile dipendente invece del deprecato. Il r ^ 2 tra una regressione con una costante e senza non può essere realmente confrontato in modo significativo.

Vedere Ad esempio il problema che ha attivato la modifica degli statsmadels per gestire R ^ 2 "correttamente" nella regressione di no-costante: https://github.com/statsmodels/statsmodels/issues/785

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