Nie mogę znaleźć żadnych bibliotek Pythona, które wykonują regresję wielokrotną. Jedyne, co widzę, to tylko prosta regresja. Muszę dokonać regresji mojej zmiennej zależnej (y) względem kilku zmiennych niezależnych (x1, x2, x3 itd.).
Na przykład z tymi danymi:
print 'y x1 x2 x3 x4 x5 x6 x7'
for t in texts:
print "{:>7.1f}{:>10.2f}{:>9.2f}{:>9.2f}{:>10.2f}{:>7.2f}{:>7.2f}{:>9.2f}" /
.format(t.y,t.x1,t.x2,t.x3,t.x4,t.x5,t.x6,t.x7)
(wyjście powyżej :)
y x1 x2 x3 x4 x5 x6 x7
-6.0 -4.95 -5.87 -0.76 14.73 4.02 0.20 0.45
-5.0 -4.55 -4.52 -0.71 13.74 4.47 0.16 0.50
-10.0 -10.96 -11.64 -0.98 15.49 4.18 0.19 0.53
-5.0 -1.08 -3.36 0.75 24.72 4.96 0.16 0.60
-8.0 -6.52 -7.45 -0.86 16.59 4.29 0.10 0.48
-3.0 -0.81 -2.36 -0.50 22.44 4.81 0.15 0.53
-6.0 -7.01 -7.33 -0.33 13.93 4.32 0.21 0.50
-8.0 -4.46 -7.65 -0.94 11.40 4.43 0.16 0.49
-8.0 -11.54 -10.03 -1.03 18.18 4.28 0.21 0.55
Jak mógłbym je cofnąć w Pythonie, aby uzyskać wzór regresji liniowej:
Y = a1x1 + a2x2 + a3x3 + a4x4 + a5x5 + a6x6 + + a7x7 + c
Y
mogą być ze sobą skorelowane, ale założenie niezależności nie pozwala dokładnie modelować zbioru danych.Odpowiedzi:
sklearn.linear_model.LinearRegression
zrobię to:Wtedy
clf.coef_
będą miały współczynniki regresji.sklearn.linear_model
ma również podobne interfejsy do wykonywania różnego rodzaju regularyzacji regresji.źródło
score
metoda to zrobi;sklearn.metrics
ma inne kryteria oceny modelu. Jeśli chcesz czegoś takiego jak w odpowiedzi Akavalla, modele statystyczne mają więcej diagnostyki podobnej do R.Oto mała praca, którą stworzyłem. Sprawdziłem R i działa poprawnie.
Wynik:
Wynik:
pandas
zapewnia wygodny sposób uruchamiania OLS, jak podano w tej odpowiedzi:Uruchom regresję OLS z ramką danych Pandas
źródło
reg_m
Funkcja jest niepotrzebnie skomplikowane.x = np.array(x).T
,x = sm.add_constant(x)
Iresults = sm.OLS(endog=y, exog=x).fit()
to wystarczy.x = x[::-1]
w definicji funkcji, aby uzyskać odpowiednią kolejnośćcoef +- 2 * std err
(w rzeczywistości rozkład t Studenta sparametryzowany stopniami swobody reszt). tj. większe bezwzględne wartości t oznaczają CI dalej od zera, ale nie należy ich bezpośrednio porównywać. wyjaśnienie jest trochę spóźnione, ale mam nadzieję, że komuś się przydaWłaśnie w celu wyjaśnienia, przykład dałeś jest wielokrotnością regresja liniowa, nie wieloczynnikowej regresji liniowej odnoszą. Różnica :
W skrócie:
(Inne źródło .)
źródło
Możesz użyć numpy.linalg.lstsq :
Wynik:
Możesz zobaczyć szacowaną wydajność za pomocą:
Wynik:
źródło
Użyj
scipy.optimize.curve_fit
. I to nie tylko do liniowego dopasowania.źródło
Po przekonwertowaniu danych na pandas dataframe (
df
),Termin przechwycenia jest uwzględniony domyślnie.
Więcej przykładów znajdziesz w tym notatniku .
źródło
Myślę, że to najłatwiejszy sposób na dokończenie tej pracy:
źródło
Wielokrotna regresja liniowa może być obsługiwana za pomocą biblioteki sklearn, jak wspomniano powyżej. Używam instalacji Anaconda Pythona 3.6.
Utwórz model w następujący sposób:
źródło
Możesz użyć numpy.linalg.lstsq
źródło
Możesz użyć poniższej funkcji i przekazać jej DataFrame:
źródło
Scikit-learn to biblioteka uczenia maszynowego dla Pythona, która może wykonać to zadanie za Ciebie. Po prostu zaimportuj moduł sklearn.linear_model do swojego skryptu.
Znajdź szablon kodu dla wielokrotnej regresji liniowej za pomocą sklearn w Pythonie:
Otóż to. Możesz użyć tego kodu jako szablonu do implementowania wielokrotnej regresji liniowej w dowolnym zbiorze danych. Aby lepiej zrozumieć przykład, odwiedź: Regresja liniowa z przykładem
źródło
Oto alternatywna i podstawowa metoda:
Zamiast
sm.OLS
ciebie możesz również użyćsm.Logit
lubsm.Probit
i itp.źródło