Többszörös lineáris regresszió R-ben: egyszerű és lépésenkénti példákkal
⚡ Okos összefoglaló
Az R-ben az egyszerű és többszörös lineáris regresszió a folytonos eredményt a közönséges legkisebb négyzetek módszerével illesztett prediktorok súlyozott összegeként modellezi. Ez a bemutató az lm() módszert, az együtthatóolvasást, a faktorprediktorokat, a reziduális diagnosztikát, a predikciót és az automatikus változókiválasztást tárgyalja.

Ahol a lineáris regresszió illeszkedik a gépi tanulásba
A lineáris regresszió az egyik legrégebbi felügyelt regresszió. gépi tanulás algoritmusok, és ez még mindig az elsődleges modell, amelyhez a legtöbb elemző nyúl. Az egyik legkorábbi gépi tanulási alkalmazás a spamszűrő.
A gépi tanulás egyéb gyakori alkalmazásai a következők:
- A nem kívánt spam üzenetek azonosítása e-mailben
- A vásárlói magatartás szegmentálása célzott reklámozáshoz
- A csalárd hitelkártya-tranzakciók csökkentése
- Az energiafelhasználás optimalizálása otthonokban és irodaépületekben
- arcfelismerő
Felügyelt tanulás
In Felügyelt tanulás, az algoritmusba betáplált képzési adatok tartalmaznak egy címkét.
Osztályozás valószínűleg a leggyakrabban használt felügyelt tanulási technika. Az egyik első osztályozási feladat, amellyel a kutatók foglalkoztak, a spamszűrő volt. A tanulás célja annak előrejelzése, hogy egy e-mailt spamnek vagy ham (jó e-mail) minősítenek-e. A gép a betanítási lépés után képes érzékelni az e-mail osztályát.
Regressziók gyakran használják a gépi tanulás területén a folytonos érték előrejelzésére. Egy regressziós feladat meg tudja jósolni egy függő változó halmaza alapján független változók (más néven prediktorokat vagy regresszorokat). Például a lineáris regresszió előre jelezheti a részvényárfolyamot, az időjárás-előrejelzést, az eladásokat és így tovább.
Néhány alapvető felügyelt tanulási algoritmus:
- Lineáris regresszió
- Logisztikus regresszió
- Legközelebbi szomszédok
- Támogatja a vektorgépet (SVM)
- Döntési fák és Random Forest
- Neurális hálózatok
Felügyelet nélküli tanulás
In Felügyelet nélküli tanulás, az edzési adatok címkézetlenek. A rendszer referencia nélkül próbál tanulni. Az alábbiakban felsoroljuk a nem felügyelt tanulási algoritmusokat.
- K-átlag
- hierarchikus Cluster Elemzés
- Elvárás maximalizálása
- Vizualizálás és dimenziócsökkentés
- Főkomponens analízis
- Kernel PCA
- Helyi-lineáris beágyazás
Ezt a kontextust figyelembe véve, az oktatóanyag további részében lépésről lépésre építjük fel a regressziós modelleket R-ben.
Egyszerű lineáris regresszió R-ben
A lineáris regresszió egy egyszerű kérdésre ad választ: mérhető-e egy pontos kapcsolat egy célváltozó és egy prediktorkészlet között?
A legegyszerűbb valószínűségi modell az egyenes vonalú modell:
ahol
- y = Függő változó
- x = Független változó
-
= véletlenszerű hibakomponens
-
= elfog
-
= x együtthatója
Tekintsük a következő cselekményt:
Az egyenlet az Ebben az egyenletben a tengelymetszet 4.77, tehát amikor x egyenlő 0, az y illesztett értéke 4.77. A meredekség megmutatja, hogy y milyen arányban változik x változásával.
Az optimális értékek becsléséhez és a
nevű módszert használod Közönséges legkisebb négyzetek (OLS). Ez a módszer megpróbálja megtalálni azokat a paramétereket, amelyek minimalizálják a négyzetes hibák összegét, azaz a becsült y értékek és a tényleges y értékek közötti függőleges távolságot. A különbséget a hiba kifejezés.
A modell becslése előtt szórásdiagram ábrázolásával meghatározhatja, hogy az y és x közötti lineáris kapcsolat elfogadható-e.
Szórványdiagram
Egy nagyon egyszerű adatkészletet fogunk használni az egyszerű lineáris regresszió fogalmának magyarázatára. Importáljuk az amerikai nők átlagos magasságát és súlyát. Az adatkészlet 15 megfigyelést tartalmaz. Meg akarja mérni, hogy a magasságok pozitívan korrelálnak-e a súlyokkal.
library(ggplot2) path <- 'https://raw.githubusercontent.com/guru99-edu/R-Programming/master/women.csv' df <-read.csv(path) ggplot(df,aes(x=height, y = weight))+ geom_point()
output:
A szóródási diagram általános tendenciát mutat arra, hogy a testsúly a magasság növekedésével együtt növekszik. A következő lépésben azt méred, hogy mennyivel nő a testsúly minden egyes további testmagasság-egységnyi növekedéssel.
Legkisebb négyzetszámú becslések
Egy egyszerű OLS-regresszióban a számítása és a
egyszerű. Ez az oktatóanyag nem származtatja a képleteket, csak megadja azokat.
Meg akarja becsülni:
Az OLS regresszió célja a következő egyenlet minimalizálása:
ahol
a tényleges érték és
az előre jelzett érték.
A megoldás a is
Ne feledje, hogy x átlagértékét jelenti
A megoldás a is
Az R-ben a cov() és var() függvényekkel becsülhető meg és a mean() függvényt használhatja a becsléshez
beta <- cov(df$height, df$weight) / var (df$height) beta
output:
##[1] 3.45
alpha <- mean(df$weight) - beta * mean(df$height) alpha
output:
## [1] -87.51667
A béta együttható azt jelenti, hogy minden további hüvelyknyi magasság esetén az átlagos súly 3.45 fonttal nő.
Egy lineáris egyenlet kézi becslése tanulságos, de nem praktikus. R az lm() függvényt biztosítja ehhez, és a következő szakasztól kezdve ezt fogod használni. Valódi projektekben szinte soha nem fogsz egyetlen prediktoros modellt illeszteni; a regressziós feladatok általában sok becslőt tartalmaznak egyszerre.
Többszörös lineáris regresszió R-ben
A regresszióanalízis gyakorlati alkalmazásai az egyszerű lineáris modellnél összetettebb modelleket használnak. Az egynél több független változót tartalmazó valószínűségi modellt ún. többszörös regressziós modellek. Ennek a modellnek az általános formája:
Mátrix jelölésben átírhatja a modellt:
Az y függő változó most k független változó függvénye. Az együttható értéke meghatározza a független változó hozzájárulását
és a
.
Röviden bemutatjuk a véletlenszerű hibával kapcsolatos feltételezésünket az OLS-ből:
- 0-val egyenlő átlag
- Variancia egyenlő
- Normális eloszlás
- A véletlenszerű hibák függetlenek (valószínűségi értelemben)
Meg kell oldani érte , a regressziós együtthatók vektora, amely minimalizálja a becsült és a tényleges y értékek közötti négyzetes hibák összegét.
A zárt formájú megoldás:
val vel:
- jelzi a transzponálás az X mátrixból
jelzi a invertálható mátrix
Az alábbi példák a beépített mtcars adatkészletet használják. A cél a mérföld/gallon (mpg) fogyasztás előrejelzése egy adott jellemzőkészlet alapján.
Folyamatos változók az R-ben
Egyelőre csak a folytonos változókat használja, és félreteszi a kategorikus jellemzőket. Az am változó egy bináris változó, amelynek értéke 1, ha a sebességváltó kézi, és 0 az automata autók esetében; A vs szintén bináris változó.
library(dplyr) df <- mtcars %>% select(-c(am, vs, cyl, gear, carb)) glimpse(df)
output:
## Observations: 32 ## Variables: 6 ## $ mpg <dbl> 21.0, 21.0, 22.8, 21.4, 18.7, 18.1, 14.3, 24.4, 22.8, 19.... ## $ disp <dbl> 160.0, 160.0, 108.0, 258.0, 360.0, 225.0, 360.0, 146.7, 1... ## $ hp <dbl> 110, 110, 93, 110, 175, 105, 245, 62, 95, 123, 123, 180, ... ## $ drat <dbl> 3.90, 3.90, 3.85, 3.08, 3.15, 2.76, 3.21, 3.69, 3.92, 3.9... ## $ wt <dbl> 2.620, 2.875, 2.320, 3.215, 3.440, 3.460, 3.570, 3.190, 3... ## $ qsec <dbl> 16.46, 17.02, 18.61, 19.44, 17.02, 20.22, 15.84, 20.00, 2...
A paraméterek kiszámításához használhatja az lm() függvényt. Ennek a függvénynek az alapvető szintaxisa:
lm(formula, data, subset)
Arguments:
-formula: The equation you want to estimate
-data: The dataset used
-subset: Estimate the model on a subset of the dataset
Ne feledje, hogy egy egyenlet a következő alakú
az R-ben
- Az = szimbólumot ~ helyettesíti
- Minden x helyébe a változó neve kerül
- Ha el akarja dobni az állandót, adjon hozzá -1-et a képlet végéhez
Példa:
Meg akarja becsülni az egyének súlyát magasságuk és bevételük alapján. Az egyenlet az
Az R-beli egyenlet a következőképpen írható:
y ~ X1+ X2+…+Xn # Metszőponttal
Tehát a mi példánkra:
- Mérleg ~ magasság + bevétel
Az Ön célja a mérföld/gallon becslése változók alapján. A becsléshez szükséges egyenlet:
Megbecsüli az első lineáris regressziót, és eltárolja az eredményt az illeszkedő objektumban.
model <- mpg ~ disp + hp + drat + wt + qsec
fit <- lm(model, df)
fit
Code Magyarázat
- model <- mpg ~ disp + hp + drat + wt + qsec: Tárolja a modellt a becsléshez
- lm(modell, df): A modell becslése a df adatkerettel
## ## Call: ## lm(formula = model, data = df) ## ## Coefficients: ## (Intercept) disp hp drat wt ## 16.53357 0.00872 -0.02060 2.01577 -4.38546 ## qsec ## 0.64015
A kimenet nem ad elegendő információt az illeszkedés minőségéről. További részleteket, például az együtthatók szignifikanciáját, a szabadsági fokot és a maradékok alakját az summary() függvénnyel érheti el.
summary(fit)
output:
## return the p-value and coefficient ## ## Call: ## lm(formula = model, data = df) ## ## Residuals: ## Min 1Q Median 3Q Max ## -3.5404 -1.6701 -0.4264 1.1320 5.4996 ## ## Coefficients: ## Estimate Std. Error t value Pr(>|t|) ## (Intercept) 16.53357 10.96423 1.508 0.14362 ## disp 0.00872 0.01119 0.779 0.44281 ## hp -0.02060 0.01528 -1.348 0.18936 ## drat 2.01578 1.30946 1.539 0.13579 ## wt -4.38546 1.24343 -3.527 0.00158 ** ## qsec 0.64015 0.45934 1.394 0.17523 ## --- ## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 ## ## Residual standard error: 2.558 on 26 degrees of freedom ## Multiple R-squared: 0.8489, Adjusted R-squared: 0.8199 ## F-statistic: 29.22 on 5 and 26 DF, p-value: 6.892e-10
Következtetés a fenti táblázat kimenetéből
- A táblázat erős negatív kapcsolatot mutat a tömeg és az mpg között, valamint pozitív együtthatót a légnyomás (drat) esetében.
- Csak a wt változónak van statisztikai hatása az mpg-re. Ne feledje, hogy egy hipotézis statisztikában történő teszteléséhez a következőket használjuk:
- H0: Nincs statisztikai hatás
- H1: A prediktor jelentős hatással van y-ra
- Ha a p érték kisebb, mint 0.05, az azt jelzi, hogy a változó statisztikailag szignifikáns
- Korrigált R-négyzet: az y varianciájának a modell által magyarázott aránya, korrigálva a prediktorok számával. Itt ez 0.8199, tehát a modell az mpg varianciájának körülbelül 82 százalékát magyarázza. Az R-négyzet mindig 0 és 1 között van, és a magasabb érték jobb.
Futtathatja a ANOVA teszt az egyes jellemzők varianciákra gyakorolt hatásának becslésére az anova() függvénnyel.
anova(fit)
output:
## Analysis of Variance Table ## ## Response: mpg ## Df Sum Sq Mean Sq F value Pr(>F) ## disp 1 808.89 808.89 123.6185 2.23e-11 *** ## hp 1 33.67 33.67 5.1449 0.031854 * ## drat 1 30.15 30.15 4.6073 0.041340 * ## wt 1 70.51 70.51 10.7754 0.002933 ** ## qsec 1 12.71 12.71 1.9422 0.175233 ## Residuals 26 170.13 6.54 ## --- ## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
A modell teljesítményének becslésének hagyományosabb módja a reziduális megjelenítése a különböző mértékek függvényében.
A plot() függvény segítségével négy grafikont jeleníthet meg:
– Maradékok vs beépített értékek
– Normál QQ diagram: elméleti kvartilis vs standardizált maradékok
– Scale-Location: Illesztett értékek vs a standardizált maradékok négyzetgyöke
– Maradék kontra tőkeáttétel: tőkeáttétel vs szabványos maradék
A plot(fit) függvény elé adjuk hozzá a par(mfrow = c(2, 2)) kódot. Ha nem adjuk hozzá ezt a kódsort, az R kérni fogja, hogy nyomjuk meg az Enter billentyűt a következő grafikon megjelenítéséhez.
par(mfrow = c(2, 2))
Code Magyarázat
- (mfrow=c(2,2)): visszaad egy ablakot a négy grafikonnal egymás mellett.
- Az első 2 hozzáadja a sorok számát
- A második 2 hozzáadja az oszlopok számát.
- Ha beírja (mfrow=c(3,2)): létrehoz egy 3 soros 2 oszlopos ablakot
plot(fit)
output:
Az lm() képlet egy listát ad vissza, amely sok hasznos információt tartalmaz. Ezeket a létrehozott fit objektummal érheted el, amelyet a $ jel és a kiszámolni kívánt információ követ.tract.
– együtthatók: `fit$coefficients`
– maradékok: `fit$residuals`
– illesztett érték: `fit$fitted.values`
Tényezők regressziója R-ben
Az utolsó modellbecslésben az mpg-t csak a folytonos változókon regresszi. Egyszerű faktorváltozók hozzáadása a modellhez. Hozzáadja az am változót a modellhez. Fontos megbizonyosodni arról, hogy a változó faktorszintű, és nem folyamatos.
df <- mtcars %>%
mutate(cyl = factor(cyl),
vs = factor(vs),
am = factor(am),
gear = factor(gear),
carb = factor(carb))
model <- mpg ~ .
summary(lm(model, df))
output:
## ## Call: ## lm(formula = model, data = df) ## ## Residuals: ## Min 1Q Median 3Q Max ## -3.5087 -1.3584 -0.0948 0.7745 4.6251 ## ## Coefficients: ## Estimate Std. Error t value Pr(>|t|) ## (Intercept) 23.87913 20.06582 1.190 0.2525 ## cyl6 -2.64870 3.04089 -0.871 0.3975 ## cyl8 -0.33616 7.15954 -0.047 0.9632 ## disp 0.03555 0.03190 1.114 0.2827 ## hp -0.07051 0.03943 -1.788 0.0939 . ## drat 1.18283 2.48348 0.476 0.6407 ## wt -4.52978 2.53875 -1.784 0.0946 . ## qsec 0.36784 0.93540 0.393 0.6997 ## vs1 1.93085 2.87126 0.672 0.5115 ## am1 1.21212 3.21355 0.377 0.7113 ## gear4 1.11435 3.79952 0.293 0.7733 ## gear5 2.52840 3.73636 0.677 0.5089 ## carb2 -0.97935 2.31797 -0.423 0.6787 ## carb3 2.99964 4.29355 0.699 0.4955 ## carb4 1.09142 4.44962 0.245 0.8096 ## carb6 4.47757 6.38406 0.701 0.4938 ## carb8 7.25041 8.36057 0.867 0.3995 ## --- ## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 ## ## Residual standard error: 2.833 on 15 degrees of freedom ## Multiple R-squared: 0.8931, Adjusted R-squared: 0.779 ## F-statistic: 7.83 on 16 and 15 DF, p-value: 0.000124
R az első faktorszintet használja alapcsoportként. Össze kell hasonlítani a másik csoport együtthatóit az alapcsoporttal.
A lineáris regresszió feltételezései R-ben
A közönséges legkisebb négyzetek módszere csak akkor eredményez megbízható együtthatókat és p-értékeket, ha öt feltétel teljesül. A plot(fit) által előállított négy diagnosztikai diagram pontosan ezek ellenőrzésére létezik.
- Linearitás: Az egyes prediktorok és az y közötti kapcsolat lineáris. Ellenőrizzük a Maradékok vs. illesztett ábrázoljuk; egy látható görbe azt jelenti, hogy transzformációra vagy polinom tagra van szükség.
- Függetlenség: A hibakifejezések korrelálatlanok. Az időben rendezett adatok gyakran megsértik ezt, amit a car csomag durbinWatsonTest() függvénnyel tesztelhetünk.
- Homoscedaszticitás: a hibavariancia állandó az illesztett értékek között. Egy tölcsér alakú a Méretezés-Helyszín a cselekmény szabálysértést jelez.
- A reziduálisok normalitása: a hibák normális eloszlást követnek. A pontoknak a következő átlóján kell lenniük: Normál QQ cselekmény.
- Nincs multikollinearitás: a prediktorok nem egymás közelmúltjai. Az 5 feletti variancia inflációs tényező a szokásos figyelmeztető vonal.
library(car) vif(fit) # variance inflation factors shapiro.test(residuals(fit)) # normality of residuals
A szabálysértések nem mindig érvénytelenítik a modellt, de megváltoztatják a p-értékek megbízhatóságát, ezért ellenőrizze őket, mielőtt bármilyen együtthatót közölne.
Hogyan készítsünk előrejelzéseket lineáris regressziós modellel R-ben?
Egy modell illesztése csak a munka fele. A predict() függvény az illesztett együtthatókat alkalmazza az új megfigyelésekre.
predict(object, newdata, interval = "none", level = 0.95) arguments: -object: The model returned by lm() -newdata: A data frame whose columns match the predictors used in the formula -interval: "none", "confidence" for the mean response, or "prediction" for a single new case -level: The confidence level, 0.95 by default
Kövesd ezt a három lépést.
- Új esetekből álló adatkeret létrehozása. Az oszlopneveknek pontosan meg kell egyezniük a képletben szereplő prediktornevekkel, a faktorszinteknek pedig meg kell egyezniük a betanítási adatokkal.
- Hívja meg a predict() függvényt. Add át az illesztett objektumot és az új adatkeretet.
- Adjon hozzá egy intervallumot. Válassza a „megbízhatóság” lehetőséget, ha az átlagos válasz körüli bizonytalanságra kíváncsi, és az „előrejelzés” lehetőséget, ha egyetlen autó hatótávolságára kíváncsi.
new_cars <- data.frame(wt = c(2.5, 3.2), hp = c(110, 175)) fit_final <- lm(mpg ~ wt + hp, data = mtcars) predict(fit_final, newdata = new_cars) predict(fit_final, newdata = new_cars, interval = "prediction")
Az eredmény leolvasása. Egy 1100 font súlyú és 110 lóerős autó fogyasztása nagyjából 9,3 l/100 km. Az előrejelzési intervallum mindig szélesebb, mint a konfidenciaintervallum, mivel az egyetlen megfigyelés bizonytalanságát is magában foglalja az illesztett egyenes bizonytalanságán felül.
Két szabály biztosítja az előrejelzések hitelességét. Soha ne extrapoláljunk a betanító prediktorok tartományán túl, mert az egyenesre nincs bizonyíték. És mindig olyan adatokon értékeljünk, amelyeket a modell még nem látott, különben a jelentett hiba optimista.
Lineáris regresszió vs. logisztikus regresszió R-ben
Az elemzők gyakran az lm() függvényt használják, ha az eredmény nem folytonos. Az alábbi táblázat mutatja, hol húzódik a határ.
| Kritériumai | Lineáris regresszió | Logisztikus regresszió |
|---|---|---|
| Válaszváltozó | Folyamatos | Bináris vagy kategorikus |
| Előrejelzett kimenet | Bármely valós szám | 0 és 1 közötti valószínűség |
| Becslés | közönséges legkisebb négyzetek | Maximális valószínűség |
| Illeszkedési mérték | R-négyzet, RMSE | AIC, eltérés, pontosság |
| R függvény | lm(képlet, adat) | glm(képlet, adat, család = „binomiális”) |
Ha az eredmény igen vagy nem, akkor lépjen tovább a következőre: általánosított lineáris modell ahelyett, hogy egyenes vonalat erőltetne a nullákon és egyeseken keresztül.
Lépésenkénti lineáris regresszió R-ben
Az oktatóanyag utolsó része a lépcsőzetes regresszió algoritmus. Ennek az algoritmusnak az a célja, hogy potenciális jelölteket adjon hozzá és távolítson el a modellekből, és megtartsa azokat, akik jelentős hatást gyakorolnak a függő változóra. Ez az algoritmus akkor hasznos, ha az adatkészlet prediktorok nagy listáját tartalmazza. Nem kell manuálisan hozzáadnia és eltávolítania a független változókat. A lépésenkénti regresszió a modellhez illeszkedő legjobb jelöltek kiválasztására szolgál.
Nézzük meg működés közben, hogyan működik. Az mtcars adathalmazt a folytonos változókkal csak pedagógiai szemléltetésre használjuk. Az elemzés megkezdése előtt érdemes korrelációs mátrixszal megvizsgálni az adatok közötti kapcsolatokat. A GGally könyvtár a ggplot2 kiterjesztése.
A könyvtár különböző függvényeket tartalmaz az összefoglaló statisztikák megjelenítésére, mint például a mátrix összes változójának korrelációja és eloszlása. A ggscatmat függvényt fogjuk használni, de hivatkozhat a címke további információkért a GGally könyvtárról.
A ggscatmat() alapvető szintaxisa a következő:
ggscatmat(df, columns = 1:ncol(df), corMethod = "pearson") arguments: -df: A matrix of continuous variables -columns: Pick up the columns to use in the function. By default, all columns are used -corMethod: Define the function to compute the correlation between variable. By default, the algorithm uses the Pearson formula
Megjeleníted az összes változód korrelációját, és eldöntöd, hogy melyek a legjobb jelöltek a lépcsőzetes regresszió első lépéséhez. Erős korrelációk vannak a változóid és a függő változó, az mpg között.
library(GGally) df <- mtcars %>% select(-c(am, vs, cyl, gear, carb)) ggscatmat(df, columns = 1: ncol(df))
output:
Lépésenkénti regresszió Lépésről lépésre Példa
A változók kiválasztása a modell illesztésének fontos része, és a lépésenkénti regresszió automatikusan elvégzi ezt a keresést. Az adathalmazban lehetséges választási lehetőségek becsléséhez a következő számításokat kell elvégezni: k-val a prediktorok száma. A lehetőségek száma a független változók számával nő. Ezért kell egy automatikus keresés.
Telepítenie kell az olsrr csomagot a CRAN-ból. A csomag még nem elérhető az Anacondában. Ezért közvetlenül a parancssorból telepítse:
install.packages("olsrr")
A lehetőségek összes részhalmazát ábrázolhatja az illeszkedési feltételekkel (pl. R-négyzet, Korrigált R-négyzet, Bayes-kritérium). A legalacsonyabb AIC-kritériummal rendelkező modell lesz a végső modell.
library(olsrr) model <- mpg~. fit <- lm(model, df) test <- ols_all_subset(fit) plot(test)
Code Magyarázat
- mpg ~.: A modell megalkotása a becsléshez
- lm(modell, df): Futtassa az OLS modellt
- ols_all_subset(illeszkedés): Készítse el a grafikonokat a releváns statisztikai információkkal
- plot(teszt): Rajzolja fel a grafikonokat
output:
A lineáris regressziós modellek a t-teszt ...egy független változó statisztikai hatásának becslésére a függő változóra. A kutatók általában 10 százalékra állítják be a maximális küszöbértéket, és az alacsonyabb p-értékek erősebb statisztikai kapcsolatot jeleznek. A lépcsőzetes regressziót e teszt köré építik, hogy hozzáadják és eltávolítsák a jelölt prediktorokat. Az algoritmus a következőképpen működik:

- 1 lépés: Minden egyes előrejelző visszafejlődése y-n külön-külön. Nevezetesen: regressziós x_1 y-n, x_2 y-n x_n-re. Tárolja a p-érték és tartsa a regresszort egy meghatározott küszöbértéknél alacsonyabb p-értékkel (alapértelmezés szerint 0.1). A küszöbértéknél kisebb szignifikanciájú prediktorok hozzáadódnak a végső modellhez. Ha egyik változóban sem alacsonyabb a p-érték, mint a belépési küszöb, akkor az algoritmus leáll, és megvan a végső modell, amely csak konstanst tartalmaz.
- 2 lépés: Használja a legalacsonyabb p-értékű prediktort, és adjon hozzá külön egy változót. Egy állandót, az első lépés és a harmadik változó legjobb előrejelzőjét regresszel. A lépésenkénti modellhez hozzáadja az új előrejelzőket, amelyek értéke alacsonyabb, mint a belépési küszöb. Ha egyik változónak sem kisebb a p-értéke, mint 0.1, akkor az algoritmus leáll, és a végső modell csak egy prediktorral rendelkezik. Visszafejti a lépésenkénti modellt, hogy ellenőrizze az 1. lépés legjobb előrejelzőinek jelentőségét. Ha magasabb, mint az eltávolítási küszöb, akkor a lépésenkénti modellben marad. Ellenkező esetben kizárod.
- 3 lépés: Megismétli a 2. lépést az új legjobb lépésenkénti modellen. Az algoritmus a beírt értékek alapján előrejelzőket ad a lépésenkénti modellhez, és kizárja a prediktort a lépésenkénti modellből, ha az nem teljesíti a kizárási küszöböt.
- Az algoritmus addig megy, amíg nem adható hozzá vagy nem zárható ki változó.
Az algoritmust az olsrr csomag ols_stepwise() függvényével hajthatja végre.
ols_stepwise(fit, pent = 0.1, prem = 0.3, details = FALSE) arguments: -fit: Model to fit. Need to use `lm()`before to run `ols_stepwise() -pent: Threshold of the p-value used to enter a variable into the stepwise model. By default, 0.1 -prem: Threshold of the p-value used to exclude a variable into the stepwise model. By default, 0.3 -details: Print the details of each step
⚠️ Csomag megjegyzése: Az olsrr újabb verziói átnevezték ezeket a függvényeket. Használja a ols_step_all_possible() az ols_all_subset() helyett és ols_step_both_p() az ols_stepwise() helyett. Az argumentumok és a kimenet változatlanok maradnak.
Előtte bemutatjuk az algoritmus lépéseit. Az alábbiakban egy táblázat látható a függő és független változókkal:
| Függő változó | Független változók |
|---|---|
| mpg | diszp |
| hp | |
| patkány | |
| wt | |
| qsec |
Rajt
Kezdetben az algoritmus azzal kezdődik, hogy a modellt minden független változón külön-külön lefuttatja. A táblázat az egyes modellek p-értékét mutatja.
## [[1]] ## (Intercept) disp ## 3.576586e-21 9.380327e-10 ## ## [[2]] ## (Intercept) hp ## 6.642736e-18 1.787835e-07 ## ## [[3]] ## (Intercept) drat ## 0.1796390847 0.0000177624 ## ## [[4]] ## (Intercept) wt ## 8.241799e-19 1.293959e-10 ## ## [[5] ## (Intercept) qsec ## 0.61385436 0.01708199
A modellbe való belépéshez az algoritmus megtartja a legalacsonyabb p-értékű változót. A fenti kimenetből ez wt
1 lépés
Az első lépésben az algoritmus az mpg-t wt-n és a többi változón függetlenül futtatja.
## [[1]] ## (Intercept) wt disp ## 4.910746e-16 7.430725e-03 6.361981e-02 ## ## [[2]] ## (Intercept) wt hp ## 2.565459e-20 1.119647e-06 1.451229e-03 ## ## [[3]] ## (Intercept) wt drat ## 2.737824e-04 1.589075e-06 3.308544e-01 ## ## [[4]] ## (Intercept) wt qsec ## 7.650466e-04 2.518948e-11 1.499883e-03
Minden változó potenciális jelölt a végső modellbe való bekerülésre. Az algoritmus azonban csak az alacsonyabb p-értékű változót tartja meg. Kiderül, hogy a hp p-értéke valamivel alacsonyabb, mint a qsec, így a hp bekerül a végső modellbe.
2 lépés
Az algoritmus megismétli az első lépést, de ezúttal két független változóval a végső modellben.
## [[1]] ## (Intercept) wt hp disp ## 1.161936e-16 1.330991e-03 1.097103e-02 9.285070e-01 ## ## [[2]] ## (Intercept) wt hp drat ## 5.133678e-05 3.642961e-04 1.178415e-03 1.987554e-01 ## ## [[3]] ## (Intercept) wt hp qsec ## 2.784556e-03 3.217222e-06 2.441762e-01 2.546284e-01
A fennmaradó jelöltek egyikének sem a p-értéke a belépési küszöb alatt van. Az algoritmus itt megáll, és ez a végső modell:
## ## Call: ## lm(formula = mpg ~ wt + hp, data = df) ## ## Residuals: ## Min 1Q Median 3Q Max ## -3.941 -1.600 -0.182 1.050 5.854 ## ## Coefficients: ## Estimate Std. Error t value Pr(>|t|) ## (Intercept) 37.22727 1.59879 23.285 < 2e-16 *** ## wt -3.87783 0.63273 -6.129 1.12e-06 *** ## hp -0.03177 0.00903 -3.519 0.00145 ** ## --- ## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 ## ## Residual standard error: 2.593 on 29 degrees of freedom ## Multiple R-squared: 0.8268, Adjusted R-squared: 0.8148 ## F-statistic: 69.21 on 2 and 29 DF, p-value: 9.109e-12
Az ols_stepwise() függvény segítségével összehasonlíthatja az eredményeket.
stp_s <-ols_stepwise(fit, details=TRUE)
output:
Az algoritmus két lépés után megoldást talál, és ugyanazt az eredményt adja vissza, mint a fenti manuális bejárás.
A végső modellt tehát két prediktor és egy tengelymetszet magyarázza: a gallononkénti mérföldek negatívan összefüggenek mind a bruttó lóerővel, mind a súllyal.
## You are selecting variables based on p value... ## 1 variable(s) added.... ## Variable Selection Procedure ## Dependent Variable: mpg ## ## Stepwise Selection: Step 1 ## ## Variable wt Entered ## ## Model Summary ## -------------------------------------------------------------- ## R 0.868 RMSE 3.046 ## R-Squared 0.753 Coef. Var 15.161 ## Adj. R-Squared 0.745 MSE 9.277 ## Pred R-Squared 0.709 MAE 2.341 ## -------------------------------------------------------------- ## RMSE: Root Mean Square Error ## MSE: Mean Square Error ## MAE: Mean Absolute Error ## ANOVA ## -------------------------------------------------------------------- ## Sum of ## Squares DF Mean Square F Sig. ## -------------------------------------------------------------------- ## Regression 847.725 1 847.725 91.375 0.0000 ## Residual 278.322 30 9.277 ## Total 1126.047 31 ## -------------------------------------------------------------------- ## ## Parameter Estimates ## ---------------------------------------------------------------------------------------- ## model Beta Std. Error Std. Beta t Sig lower upper ## ---------------------------------------------------------------------------------------- ## (Intercept) 37.285 1.878 19.858 0.000 33.450 41.120 ## wt -5.344 0.559 -0.868 -9.559 0.000 -6.486 -4.203 ## ---------------------------------------------------------------------------------------- ## 1 variable(s) added... ## Stepwise Selection: Step 2 ## ## Variable hp Entered ## ## Model Summary ## -------------------------------------------------------------- ## R 0.909 RMSE 2.593 ## R-Squared 0.827 Coef. Var 12.909 ## Adj. R-Squared 0.815 MSE 6.726 ## Pred R-Squared 0.781 MAE 1.901 ## -------------------------------------------------------------- ## RMSE: Root Mean Square Error ## MSE: Mean Square Error ## MAE: Mean Absolute Error ## ANOVA ## -------------------------------------------------------------------- ## Sum of ## Squares DF Mean Square F Sig. ## -------------------------------------------------------------------- ## Regression 930.999 2 465.500 69.211 0.0000 ## Residual 195.048 29 6.726 ## Total 1126.047 31 ## -------------------------------------------------------------------- ## ## Parameter Estimates ## ---------------------------------------------------------------------------------------- ## model Beta Std. Error Std. Beta t Sig lower upper ## ---------------------------------------------------------------------------------------- ## (Intercept) 37.227 1.599 23.285 0.000 33.957 40.497 ## wt -3.878 0.633 -0.630 -6.129 0.000 -5.172 -2.584 ## hp -0.032 0.009 -0.361 -3.519 0.001 -0.050 -0.013 ## ---------------------------------------------------------------------------------------- ## No more variables to be added or removed.
Lineáris regresszió R-ben: Főbb tudnivalók és függvényreferencia
- A lineáris regresszió egy egyszerű kérdésre ad választ: mérhető-e egy pontos kapcsolat egy célváltozó és egy prediktorkészlet között?
- A legkisebb négyzetek módszere megkeresi azokat a paramétereket, amelyek minimalizálják a négyzetes hibák összegét, azaz a várható y értékek és a tényleges y értékek közötti függőleges távolságot.
- Az egynél több független változót tartalmazó valószínűségi modellt többszörös regressziós modelleknek nevezzük.
- A Stepwise Linear Regression algoritmus célja, hogy potenciális jelölteket adjon hozzá és távolítson el a modellekből, és megtartsa azokat, akik jelentős hatást gyakorolnak a függő változóra.
- A változók kiválasztása a modell illesztésének fontos része, és a lépésenkénti regresszió automatikusan elvégzi ezt a keresést.
Az oktatóanyagban használt összes függvényt az alábbiakban soroljuk fel:
| könyvtár | Objektív | Funkció | érvek |
|---|---|---|---|
| bázis | Számíts ki egy lineáris regressziót | lm() | képlet, adat |
| bázis | Modell összefoglalása | összefoglaló() | megfelelő |
| bázis | Extract-együtthatók | lm()$együttható | |
| bázis | Extract reziduálisok | lm()$maradékok | |
| bázis | Extract illesztett érték | lm()$fitted.values | |
| olsrr | Futtassa le a lépésenkénti regressziót | ols_stepwise() | illeszkedés, pent = 0.1, prem = 0.3, részletek = HAMIS |
MegjegyzésekNe felejtsük el a kategorikus változókat faktorokká alakítani a modell illesztése előtt.





