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.