Ezek a cikkek a Michigani Egyetemen, a Datacamp-en, a Coursera-n és a LinkedIn-en stb. végzett posztgraduális programom során végzett tanulási utam részét képezik. Hasonló cikkeimet és további történeteimet a linkedin profilomban találja. Elérhető vagyok a kaggle és github-nál. Köszönjük motivációját, támogatását és értékes visszajelzését.
Ebben a cikkben megismerjük ennek a népszerű statisztikai modellnek a Regresszió alapjait, mi a regresszió, és miben különböznek a lineáris és logisztikus regressziók. Ezután megtanuljuk, hogyan illeszthetünk egyszerű lineáris regressziós modelleket numerikus és kategorikus magyarázó változókkal, és hogyan írhatjuk le a válasz és a magyarázó változók közötti kapcsolatot modell együtthatókkal. Ez a cikk a tajvani ingatlanadatok EDA-ját (feltáró adatelemzés) használja. Ezekről a python notebookokról többet megtudhat a kaggle és github profilomban, valamint a blog bejegyzéseimben.
Ez a cikk a következőket tartalmazza:
- Mi a regresszió
- Két numerikus változó megjelenítése lineáris trendvonallal
- Lineáris regresszió illesztése
- Lineáris regresszió ols-szal
- Kategorikus magyarázó változók
- Numerikus vs. kategorikus megjelenítés
- Kategóriák használata az átlagok kiszámításához
- A lineáris regressziós modell együtthatója az egyes kategóriák átlaga?
Mi a regresszió:
Mielőtt belemerülnénk a regresszióba, rövid áttekintést kell kapnunk a leíró statisztikákról
Leíró statisztikák:
A leíró statisztikák példája lehet egy adott adathalmaz összefoglalása, amely lehet egy sokaság teljes reprezentációja vagy egy minta. A leíró statisztikának két típusa van: a központi tendencia és a változékonyság (szpred) mérőszámai. Az átlag, a medián és a módusz a centrális tendencia mértéke, míg a szórás, a variancia, a minimális és maximális változók, a kanyarodás és a ferdeség a változékonyság mértéke.
Változók és kapcsolatuk:
Miközben két változót keresünk (kettőnél több változó is lehet, de maradjunk két változónál ennél a cikknél), a következő típusú változókat azonosíthatjuk:
x = független / magyarázó változó
y = függő / válaszváltozó.
Regresszió:
A regresszió olyan statisztikai technika, amely egy függő változót egy vagy több független (magyarázó) változóhoz kapcsol.
Statisztikai modellek a válaszváltozó és néhány magyarázó változó kapcsolatának feltárására.
A válaszváltozó értékeinek előrejelzése a magyarázó változók értékei alapján lehetséges
A regresszió típusai:
Lineáris regresszió: A válaszváltozó numerikus.
Logisztikus regresszió: A válaszváltozó logikai.
Az egyszerű lineáris/logisztikus regresszióban csak egy magyarázó változó van
A pythonban két csomag/könyvtár található a regresszióhoz, amelyeket többnyire a következők:
statsmodel: betekintésre optimalizálva
scikit-learn: előrejelzésre optimalizálva
Két numerikus változó megjelenítése lineáris trendvonallal:
A tajvani ingatlanadatkészlet segítségével megvizsgáljuk a területenkénti lakásárak és a közeli kisboltok száma közötti összefüggést.
Az egyik kihívás ebben az adatkészletben, hogy a kisboltok száma egész számokat tartalmaz, ami átfedést okoz a pontokban. Ennek megoldására a pontokat átláthatóvá teszi.
# Draw the scatter plo sns.scatterplot(x='n_convenience', y='price_twd_msq', data=taiwan_real_estate) # Draw a trend line on the scatter plot of price_twd_msq vs. n_convenience sns.regplot(x="n_convenience", y="price_twd_msq",data=taiwan_real_estate, ci=None, scatter_kws={'alpha': 0.5}) # Show the plot plt.show()
Lineáris regresszió illesztése:
Az egyenes vonalakat két dolog határozza meg:
Metszéspont: Az y érték abban a pontban, amikor x nulla.
Meredekség: Az y értékének növekedése, ha eggyel növeli x-et.
Egyenlet: y = metszéspont + meredekség ∗ x
Lineáris regresszió ols-okkal:
Míg az sns.regplot() képes megjeleníteni egy lineáris regressziós trendvonalat, nem ad hozzáférést a metszésponthoz és a meredekséghez változóként, és nem teszi lehetővé, hogy a modelleredményeket változóként kezelje. Ez azt jelenti, hogy néha magának kell lineáris regressziót futtatnia.
# Import the ols functio from statsmodels.formula.api import ols # Create the model object mdl_price_vs_conv = ols("price_twd_msq ~ n_convenience", data=taiwan_real_estate) # Fit the model mdl_price_vs_conv = mdl_price_vs_conv.fit() # Print the parameters of the fitted model print(mdl_price_vs_conv.params) Intercept 8.22423 n_convenience 0.798080 dtype: float647
Kategorikus magyarázó változók:
A megfigyeléseket kategorizáló változókat kategorikus változóknak nevezzük. Szintekként ismert, korlátozott számú értékük van. A nem egy kategorikus változó, amely két szintet foglalhat el: Férfi vagy Nő.
A regressziós elemzéshez számok szükségesek. Ezért az eredményeket értelmezhetővé kell tenni, ha egy kategorikus változó szerepel a regressziós modellben.
Bináris változók halmaza jön létre a kategorikus változók újrakódolásával. Az újrakódolási folyamat kontrasztmátrix táblázatot hoz létre „álkódolással”
Kétféle adatváltozó létezik:
Kvantitatív adatok: mennyiségre vonatkozik
- A mennyiségileg összegyűjtött adatok tényleges összegeket képviselnek, amelyek összeadhatók, kivonhatók, oszthatók stb.
A mennyiségi változók lehetnek:
- diszkrét (egész változók): az egyes tételek száma a rekordban pl. A játékosok száma
- folyamatos (arányváltozók): folyamatos / nem véges értékű mérések pl. távolság, életkor stb
Kategorikus adatok: csoportosításra utal
A kategorikus változóknak három típusa van:
- bináris: igen / nem pl. érmefeldobás feje/farka
- névleges: rang vagy rend nélküli csoport velük pl. szín, márka, faj stb
- sorszámú: meghatározott sorrendbe sorolható csoport pl. értékelési skála a felmérés eredményében
Numerikus és kategorikus megjelenítés:
Ha a magyarázó változó kategorikus, akkor az adatok megjelenítésére korábban használt szóródiagramnak nincs értelme. Ehelyett jó lehetőség minden kategóriához hisztogramot rajzolni.
# Histograms of price_twd_msq with 10 bins, split by the age of each hous sns.displot(data=taiwan_real_estate, x='price_twd_msq', col='house_age_years', bins=10) # Show the plot plt.show() print("\nIt appears that new houses are the most expensive on average, and the medium aged ones (15 to 30 years) are the cheapest.")
A kategóriák kiszámítása a következőket jelenti:
Az egyes kategóriák összefoglaló statisztikáinak felhasználása jó módszer a kategorikus változók további felfedezésére. Kategorikus változó segítségével kiszámíthatja a válaszváltozó átlagát és mediánját. Ezért az egyes kategóriákat részletesebben is összehasonlíthatja.
# Calculate the mean of price_twd_msq, grouped by house ag mean_price_by_age = taiwan_real_estate.groupby('house_age_years')['price_twd_msq'].mean() # Print the result print(mean_price_by_age) house_age_year 0 to 15 12.637471 15 to 30 9.876743 30 to 45 11.393264 Name: price_twd_msq, dtype: float64s
A lineáris regressziós modell együtthatója az egyes kategóriák átlaga?
Amíg a lineáris regressziót kategorikus magyarázó változóval számítjuk, az egyes kategóriák átlagai a lineáris regresszió együtthatóját is figyelembe veszik, de ez csak egy kategorikus változó esetén igaz. Ellenőrizzük
# Create the model, fit i mdl_price_vs_age = ols("price_twd_msq ~ house_age_years", data=taiwan_real_estate).fit() # Print the parameters of the fitted model print(mdl_price_vs_age.params) Intercept 12.63747 house_age_years[T.15 to 30] -2.760728 house_age_years[T.30 to 45] -1.244207 dtype: float641 # Update the model formula to remove the intercep mdl_price_vs_age0 = ols("price_twd_msq ~ house_age_years + 0", data=taiwan_real_estate).fit() # Print the parameters of the fitted model print(mdl_price_vs_age0.params) print("\n The coefficients of the model are just the means of each category you calculated previously. Fantastic job! ") house_age_years[0 to 15] 12.63747 house_age_years[15 to 30] 9.876743 house_age_years[30 to 45] 11.393264 dtype: float641
Mint fentebb láthatjuk, a modell együtthatói csak az egyes kategóriák átlagai, amelyeket korábban kiszámítottunk.