R Βηματική και πολλαπλή γραμμική παλινδρόμηση [Παράδειγμα βήμα προς βήμα]

Απλή γραμμική παλινδρόμηση στο R

Η γραμμική παλινδρόμηση απαντά σε μια απλή ερώτηση: Μπορείτε να μετρήσετε μια ακριβή σχέση μεταξύ μιας μεταβλητής στόχου και ενός συνόλου προγνωστικών;

Το απλούστερο πιθανολογικό μοντέλο είναι το ευθύγραμμο μοντέλο:

Απλή γραμμική παλινδρόμηση στο R

όπου

  • y = Εξαρτημένη μεταβλητή
  • x = Ανεξάρτητη μεταβλητή
  • Απλή γραμμική παλινδρόμηση στο R = συστατικό τυχαίου σφάλματος
  • Απλή γραμμική παλινδρόμηση στο R = αναχαιτίζω
  • Απλή γραμμική παλινδρόμηση στο R = Συντελεστής x

Εξετάστε την ακόλουθη πλοκή:

Απλή γραμμική παλινδρόμηση στο R

Η εξίσωση είναι Απλή γραμμική παλινδρόμηση στο R είναι η αναχαίτιση. Αν το x ισούται με 0, το y θα είναι ίσο με την τομή, 4.77. είναι η κλίση της γραμμής. Λέει σε ποια αναλογία μεταβάλλεται το y όταν το x μεταβάλλεται.

Για να υπολογίσετε τις βέλτιστες τιμές του Απλή γραμμική παλινδρόμηση στο R και Απλή γραμμική παλινδρόμηση στο R, χρησιμοποιείτε μια μέθοδο που ονομάζεται Συνήθη ελάχιστα τετράγωνα (OLS). Αυτή η μέθοδος προσπαθεί να βρει τις παραμέτρους που ελαχιστοποιούν το άθροισμα των τετραγωνικών σφαλμάτων, δηλαδή την κατακόρυφη απόσταση μεταξύ των προβλεπόμενων τιμών y και των πραγματικών τιμών y. Η διαφορά είναι γνωστή ως το όρος σφάλματος.

Πριν υπολογίσετε το μοντέλο, μπορείτε να προσδιορίσετε εάν μια γραμμική σχέση μεταξύ y και x είναι εύλογη σχεδιάζοντας ένα διάγραμμα διασποράς.

Διάγραμμα διασποράς

Θα χρησιμοποιήσουμε ένα πολύ απλό σύνολο δεδομένων για να εξηγήσουμε την έννοια της απλής γραμμικής παλινδρόμησης. Θα εισαγάγουμε τα μέσα ύψη και βάρη για Αμερικανίδες. Το σύνολο δεδομένων περιέχει 15 παρατηρήσεις. Θέλετε να μετρήσετε εάν τα ύψη συσχετίζονται θετικά με τα βάρη.

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()

Παραγωγή:

Διάγραμμα διασποράς

Το διάγραμμα διασποράς προτείνει μια γενική τάση για το y να αυξάνεται καθώς το x αυξάνεται. Στο επόμενο βήμα, θα μετρήσετε με πόσες αυξήσεις για κάθε επιπλέον .

Εκτιμήσεις ελάχιστων τετραγώνων

Σε μια απλή παλινδρόμηση OLS, ο υπολογισμός του Εκτιμήσεις ελάχιστων τετραγώνων και Εκτιμήσεις ελάχιστων τετραγώνων είναι ευθύς. Ο στόχος δεν είναι να εμφανιστεί η παραγωγή σε αυτό το σεμινάριο. Θα γράψετε μόνο τον τύπο.

Θέλετε να υπολογίσετε: Εκτιμήσεις ελάχιστων τετραγώνων

Ο στόχος της παλινδρόμησης OLS είναι να ελαχιστοποιήσει την ακόλουθη εξίσωση:

Εκτιμήσεις ελάχιστων τετραγώνων

όπου

Εκτιμήσεις ελάχιστων τετραγώνων είναι η πραγματική τιμή και Εκτιμήσεις ελάχιστων τετραγώνων είναι η προβλεπόμενη τιμή.

Η λύση για Εκτιμήσεις ελάχιστων τετραγώνων is Εκτιμήσεις ελάχιστων τετραγώνων

Σημειώστε ότι Εκτιμήσεις ελάχιστων τετραγώνων σημαίνει τη μέση τιμή του x

Η λύση για Εκτιμήσεις ελάχιστων τετραγώνων is Εκτιμήσεις ελάχιστων τετραγώνων

Στο R, μπορείτε να χρησιμοποιήσετε τη συνάρτηση cov() και var() για εκτίμηση Εκτιμήσεις ελάχιστων τετραγώνων και μπορείτε να χρησιμοποιήσετε τη συνάρτηση mean() για να εκτιμήσετε Εκτιμήσεις ελάχιστων τετραγώνων

beta <- cov(df$height, df$weight) / var (df$height)
beta

Παραγωγή:

##[1] 3.45
alpha <- mean(df$weight) - beta * mean(df$height)
alpha

Παραγωγή:

## [1] -87.51667

Ο συντελεστής βήτα υποδηλώνει ότι για κάθε επιπλέον ύψος, το βάρος αυξάνεται κατά 3.45.

Η χειροκίνητη εκτίμηση της απλής γραμμικής εξίσωσης δεν είναι ιδανική. R παρέχει μια κατάλληλη συνάρτηση για την εκτίμηση αυτών των παραμέτρων. Θα δείτε αυτή τη λειτουργία σύντομα. Πριν από αυτό, θα εισαγάγουμε τον τρόπο υπολογισμού με το χέρι ενός απλού μοντέλου γραμμικής παλινδρόμησης. Στο ταξίδι του επιστήμονα δεδομένων, μετά βίας ή ποτέ δεν θα εκτιμήσετε ένα απλό γραμμικό μοντέλο. Στις περισσότερες περιπτώσεις, οι εργασίες παλινδρόμησης εκτελούνται σε πολλούς εκτιμητές.

Πολλαπλή Γραμμική Παλινδρόμηση στο R

Πιο πρακτικές εφαρμογές της ανάλυσης παλινδρόμησης χρησιμοποιούν μοντέλα που είναι πιο περίπλοκα από το απλό μοντέλο της ευθείας γραμμής. Το πιθανοτικό μοντέλο που περιλαμβάνει περισσότερες από μία ανεξάρτητες μεταβλητές ονομάζεται πολλαπλά μοντέλα παλινδρόμησης. Η γενική μορφή αυτού του μοντέλου είναι:

Πολλαπλή Γραμμική Παλινδρόμηση στο R

Στη σημειογραφία μήτρας, μπορείτε να ξαναγράψετε το μοντέλο:

  • Πολλαπλή Γραμμική Παλινδρόμηση στο R

Η εξαρτημένη μεταβλητή y είναι πλέον συνάρτηση k ανεξάρτητων μεταβλητών. Η τιμή του συντελεστή Πολλαπλή Γραμμική Παλινδρόμηση στο R καθορίζει τη συνεισφορά της ανεξάρτητης μεταβλητής Πολλαπλή Γραμμική Παλινδρόμηση στο R και Πολλαπλή Γραμμική Παλινδρόμηση στο R.

Εισάγουμε εν συντομία την υπόθεση που κάναμε για το τυχαίο σφάλμα Πολλαπλή Γραμμική Παλινδρόμηση στο R του OLS:

  • Μέση τιμή ίση με 0
  • Διακύμανση ίση με Πολλαπλή Γραμμική Παλινδρόμηση στο R
  • Κανονική κατανομή
  • Τα τυχαία σφάλματα είναι ανεξάρτητα (με πιθανολογική έννοια)

Πρέπει να λύσετε Πολλαπλή Γραμμική Παλινδρόμηση στο R, το διάνυσμα των συντελεστών παλινδρόμησης που ελαχιστοποιούν το άθροισμα των τετραγωνικών σφαλμάτων μεταξύ της προβλεπόμενης και της πραγματικής τιμής y.

Η λύση κλειστής μορφής είναι:

Πολλαπλή Γραμμική Παλινδρόμηση στο R

με:

  • δείχνει το μεταθέτω του πίνακα X
  • Πολλαπλή Γραμμική Παλινδρόμηση στο R δείχνει το αντιστρέψιμη μήτρα

Χρησιμοποιούμε το σύνολο δεδομένων mtcars. Είστε ήδη εξοικειωμένοι με το σύνολο δεδομένων. Στόχος μας είναι να προβλέψουμε το μίλι ανά γαλόνι σε ένα σύνολο χαρακτηριστικών.

Συνεχείς μεταβλητές στο R

Προς το παρόν, θα χρησιμοποιήσετε μόνο τις συνεχείς μεταβλητές και θα αφήσετε στην άκρη τα κατηγορηματικά χαρακτηριστικά. Η μεταβλητή am είναι μια δυαδική μεταβλητή που παίρνει την τιμή 1 εάν το κιβώτιο ταχυτήτων είναι χειροκίνητο και 0 για αυτόματα αυτοκίνητα. Το vs είναι επίσης μια δυαδική μεταβλητή.

library(dplyr)
df <- mtcars % > %
select(-c(am, vs, cyl, gear, carb))
glimpse(df)

Παραγωγή:

## 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...

Μπορείτε να χρησιμοποιήσετε τη συνάρτηση lm() για να υπολογίσετε τις παραμέτρους. Η βασική σύνταξη αυτής της συνάρτησης είναι:

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

Θυμηθείτε ότι μια εξίσωση έχει την ακόλουθη μορφή

Συνεχείς μεταβλητές στο R

στο Ρ

  • Το σύμβολο = αντικαθίσταται από ~
  • Κάθε x αντικαθίσταται από το όνομα της μεταβλητής
  • Εάν θέλετε να αφαιρέσετε τη σταθερά, προσθέστε -1 στο τέλος του τύπου

Παράδειγμα:

Θέλετε να υπολογίσετε το βάρος των ατόμων με βάση το ύψος και τα έσοδά τους. Η εξίσωση είναι

Συνεχείς μεταβλητές στο R

Η εξίσωση στο R γράφεται ως εξής:

y ~ X1+ X2+…+Xn # Με διακοπή

Έτσι για το παράδειγμά μας:

  • Ζυγίζω ~ ύψος + έσοδα

Ο στόχος σας είναι να υπολογίσετε το μίλι ανά γαλόνι με βάση ένα σύνολο μεταβλητών. Η εξίσωση προς εκτίμηση είναι:

Συνεχείς μεταβλητές στο R

Θα εκτιμήσετε την πρώτη σας γραμμική παλινδρόμηση και θα αποθηκεύσετε το αποτέλεσμα στο κατάλληλο αντικείμενο.

model <- mpg~.disp + hp + drat + wt
fit <- lm(model, df)
fit

Επεξήγηση κώδικα

  • μοντέλο <- mpg ~. disp + hp + drat+ wt: Αποθηκεύστε το μοντέλο για εκτίμηση
  • lm(μοντέλο, df): Υπολογίστε το μοντέλο με το πλαίσιο δεδομένων df
## 
## 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	

Η έξοδος δεν παρέχει αρκετές πληροφορίες σχετικά με την ποιότητα της προσαρμογής. Μπορείτε να αποκτήσετε πρόσβαση σε περισσότερες λεπτομέρειες, όπως η σημασία των συντελεστών, ο βαθμός ελευθερίας και το σχήμα των υπολειμμάτων με τη συνάρτηση summary().

summary(fit)

Παραγωγή:

## 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

Συμπεράσματα από την έξοδο του παραπάνω πίνακα

  • Ο παραπάνω πίνακας αποδεικνύει ότι υπάρχει ισχυρή αρνητική σχέση μεταξύ wt και χιλιομέτρων και θετική σχέση με drat.
  • Μόνο η μεταβλητή wt έχει στατιστικό αντίκτυπο στο mpg. Θυμηθείτε, για να ελέγξουμε μια υπόθεση στη στατιστική, χρησιμοποιούμε:
    • H0: Καμία στατιστική επίπτωση
    • H3: Ο προγνωστικός παράγοντας έχει σημαντική επίδραση στο y
    • Εάν η τιμή p είναι μικρότερη από 0.05, σημαίνει ότι η μεταβλητή είναι στατιστικά σημαντική
  • Προσαρμοσμένο R-τετράγωνο: Διακύμανση που εξηγείται από το μοντέλο. Στο μοντέλο σας, το μοντέλο εξήγησε το 82 τοις εκατό της διακύμανσης του y. Το τετράγωνο του R είναι πάντα μεταξύ 0 και 1. Όσο υψηλότερο τόσο το καλύτερο

Μπορείτε να εκτελέσετε το ANOVA δοκιμή για την εκτίμηση της επίδρασης κάθε χαρακτηριστικού στις διακυμάνσεις με τη συνάρτηση anova().

anova(fit)

Παραγωγή:

## 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	

Ένας πιο συμβατικός τρόπος εκτίμησης της απόδοσης του μοντέλου είναι η εμφάνιση του υπολειπόμενου σε διαφορετικές μετρήσεις.

Μπορείτε να χρησιμοποιήσετε τη συνάρτηση plot() για να εμφανίσετε τέσσερα γραφήματα:

– Υπολείμματα έναντι προσαρμοσμένων τιμών

– Κανονική γραφική παράσταση QQ: Θεωρητικό τεταρτημόριο έναντι τυποποιημένων υπολειμμάτων

– Κλίμακα-Τοποθεσία: Προσαρμοσμένες τιμές έναντι τετραγωνικών ριζών των τυποποιημένων υπολειμμάτων

– Υπολείμματα έναντι μόχλευσης: Μόχλευση έναντι τυποποιημένων υπολειμμάτων

Προσθέτετε τον κωδικό par(mfrow=c(2,2)) πριν από το plot(fit). Εάν δεν προσθέσετε αυτήν τη γραμμή κώδικα, το R σας ζητά να πατήσετε την εντολή enter για να εμφανιστεί το επόμενο γράφημα.

par(mfrow=(2,2))

Επεξήγηση κώδικα

  • (mfrow=c(2,2)): επιστρέψτε ένα παράθυρο με τα τέσσερα γραφήματα δίπλα-δίπλα.
  • Οι πρώτες 2 προσθέτουν τον αριθμό των σειρών
  • Το δεύτερο 2 προσθέτει τον αριθμό των στηλών.
  • Εάν γράψετε (mfrow=c(3,2)): θα δημιουργήσετε ένα παράθυρο 3 σειρών 2 στηλών
plot(fit)

Παραγωγή:

Συνεχείς μεταβλητές στο R

Ο τύπος lm() επιστρέφει μια λίστα που περιέχει πολλές χρήσιμες πληροφορίες. Μπορείτε να αποκτήσετε πρόσβαση σε αυτά με το κατάλληλο αντικείμενο που έχετε δημιουργήσει, ακολουθούμενο από το σύμβολο $ και τις πληροφορίες που θέλετε να εξαγάγετε.

– συντελεστές: «fit$coefficients».

– υπολείμματα: «fit$residuals».

– προσαρμοσμένη τιμή: «fit$fitted.values».

Παλινδρόμηση παραγόντων στο R

Στην τελευταία εκτίμηση μοντέλου, υποχωρείτε mpg μόνο σε συνεχείς μεταβλητές. Είναι εύκολο να προσθέσετε μεταβλητές παραγόντων στο μοντέλο. Προσθέτετε τη μεταβλητή am στο μοντέλο σας. Είναι σημαντικό να βεβαιωθείτε ότι η μεταβλητή είναι επίπεδο παράγοντα και όχι συνεχής.

df <- mtcars % > %
mutate(cyl = factor(cyl),
    vs = factor(vs),
    am = factor(am),
    gear = factor(gear),
    carb = factor(carb))
summary(lm(model, df))

Παραγωγή:

## 
## 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 χρησιμοποιεί το πρώτο επίπεδο παράγοντα ως βασική ομάδα. Πρέπει να συγκρίνετε τους συντελεστές της άλλης ομάδας με τη βασική ομάδα.

Βηματική Γραμμική Παλινδρόμηση στο R

Το τελευταίο μέρος αυτού του σεμιναρίου ασχολείται με το σταδιακή παλινδρόμηση αλγόριθμος. Ο σκοπός αυτού του αλγορίθμου είναι να προσθέσει και να αφαιρέσει πιθανούς υποψηφίους στα μοντέλα και να διατηρήσει αυτούς που έχουν σημαντικό αντίκτυπο στην εξαρτημένη μεταβλητή. Αυτός ο αλγόριθμος έχει νόημα όταν το σύνολο δεδομένων περιέχει μια μεγάλη λίστα προγνωστικών. Δεν χρειάζεται να προσθέσετε και να αφαιρέσετε μη αυτόματα τις ανεξάρτητες μεταβλητές. Η σταδιακή παλινδρόμηση έχει δημιουργηθεί για να επιλέγει τους καλύτερους υποψηφίους που ταιριάζουν στο μοντέλο.

Ας δούμε στην πράξη πώς λειτουργεί. Χρησιμοποιείτε το σύνολο δεδομένων mtcars με τις συνεχείς μεταβλητές μόνο για παιδαγωγική απεικόνιση. Πριν ξεκινήσετε την ανάλυση, είναι καλό να καθορίσετε παραλλαγές μεταξύ των δεδομένων με έναν πίνακα συσχέτισης. Η βιβλιοθήκη GGally είναι μια επέκταση του ggplot2.

Η βιβλιοθήκη περιλαμβάνει διαφορετικές συναρτήσεις για την εμφάνιση συνοπτικών στατιστικών, όπως συσχέτιση και κατανομή όλων των μεταβλητών σε έναν πίνακα. Θα χρησιμοποιήσουμε τη συνάρτηση ggscatmat, αλλά μπορείτε να ανατρέξετε στο βινιέτα για περισσότερες πληροφορίες σχετικά με τη βιβλιοθήκη GGally.

Η βασική σύνταξη για το ggscatmat() είναι:

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

Εμφανίζετε τη συσχέτιση για όλες τις μεταβλητές σας και αποφασίζετε ποια θα είναι η καλύτερη υποψήφια για το πρώτο βήμα της σταδιακής παλινδρόμησης. Υπάρχουν ορισμένες ισχυρές συσχετίσεις μεταξύ των μεταβλητών σας και της εξαρτημένης μεταβλητής, mpg.

library(GGally)
df <- mtcars % > %
	select(-c(am, vs, cyl, gear, carb))
ggscatmat(df, columns = 1: ncol(df))

Παραγωγή:

Βηματική Γραμμική Παλινδρόμηση στο R

Βήμα προς βήμα Παλινδρόμηση Παράδειγμα

Η επιλογή μεταβλητών είναι ένα σημαντικό μέρος για την προσαρμογή ενός μοντέλου. Η σταδιακή παλινδρόμηση θα εκτελέσει τη διαδικασία αναζήτησης αυτόματα. Για να υπολογίσετε πόσες πιθανές επιλογές υπάρχουν στο σύνολο δεδομένων, υπολογίζετε Βήμα προς βήμα Παλινδρόμηση Παράδειγμα με k είναι ο αριθμός των προβλέψεων. Ο αριθμός των δυνατοτήτων μεγαλώνει με τον αριθμό των ανεξάρτητων μεταβλητών. Γι' αυτό πρέπει να έχετε μια αυτόματη αναζήτηση.

Πρέπει να εγκαταστήσετε το πακέτο olsrr από το CRAN. Το πακέτο δεν είναι ακόμα διαθέσιμο στο Anaconda. Ως εκ τούτου, το εγκαθιστάτε απευθείας από τη γραμμή εντολών:

install.packages("olsrr")

Μπορείτε να σχεδιάσετε όλα τα υποσύνολα δυνατοτήτων με τα κριτήρια προσαρμογής (π.χ. R-square, Adjusted R-square, Bayesian κριτήρια). Το μοντέλο με τα χαμηλότερα κριτήρια AIC θα είναι το τελικό μοντέλο.

library(olsrr)
model <- mpg~.
fit <- lm(model, df)
test <- ols_all_subset(fit)
plot(test)

Επεξήγηση κώδικα

  • mpg ~.: Κατασκευάστε το μοντέλο για εκτίμηση
  • lm(μοντέλο, df): Εκτελέστε το μοντέλο OLS
  • ols_all_subset(fit): Κατασκευάστε τα γραφήματα με τα σχετικά στατιστικά στοιχεία
  • πλοκή (δοκιμή): Σχεδιάστε τα γραφήματα

Παραγωγή:

Βήμα προς βήμα Παλινδρόμηση Παράδειγμα

Τα μοντέλα γραμμικής παλινδρόμησης χρησιμοποιούν το δοκιμή t για την εκτίμηση της στατιστικής επίδρασης μιας ανεξάρτητης μεταβλητής στην εξαρτημένη μεταβλητή. Οι ερευνητές έθεσαν το μέγιστο όριο στο 10 τοις εκατό, ενώ οι χαμηλότερες τιμές υποδηλώνουν ισχυρότερη στατιστική σύνδεση. Η στρατηγική της σταδιακής παλινδρόμησης κατασκευάζεται γύρω από αυτό το τεστ για την προσθήκη και την αφαίρεση πιθανών υποψηφίων. Ο αλγόριθμος λειτουργεί ως εξής:

Βηματική Γραμμική Παλινδρόμηση στο R
Βηματική Γραμμική Παλινδρόμηση στο R
  • Βήμα 1: Αναδρομή κάθε προγνωστικού στο y ξεχωριστά. Δηλαδή, παλινδρομήστε το x_1 στο y, το x_2 στο y στο x_n. Αποθηκεύστε το p-value και διατηρήστε τον παλινδρομητή με τιμή p χαμηλότερη από ένα καθορισμένο όριο (0.1 από προεπιλογή). Οι προγνωστικοί παράγοντες με σημαντικότητα χαμηλότερη από το όριο θα προστεθούν στο τελικό μοντέλο. Εάν καμία μεταβλητή δεν έχει τιμή p χαμηλότερη από το όριο εισαγωγής, τότε ο αλγόριθμος σταματά και έχετε το τελικό σας μοντέλο μόνο με σταθερά.
  • Βήμα 2: Χρησιμοποιήστε τον προγνωστικό δείκτη με τη χαμηλότερη τιμή p και προσθέτετε ξεχωριστά μία μεταβλητή. Παθαίνεις μια σταθερά, ο καλύτερος προγνωστικός δείκτης του βήματος ένα και μιας τρίτης μεταβλητής. Προσθέτετε στο σταδιακό μοντέλο, τους νέους προγνωστικούς παράγοντες με τιμή χαμηλότερη από το όριο εισαγωγής. Εάν καμία μεταβλητή δεν έχει τιμή p μικρότερη από 0.1, τότε ο αλγόριθμος σταματά και έχετε το τελικό σας μοντέλο με έναν μόνο προγνωστικό παράγοντα. Παθάνετε το σταδιακό μοντέλο για να ελέγξετε τη σημασία των καλύτερων προγνωστικών του βήματος 1. Εάν είναι υψηλότερο από το όριο αφαίρεσης, το κρατάτε στο σταδιακό μοντέλο. Διαφορετικά το αποκλείεις.
  • Βήμα 3: Αντιγράφετε το βήμα 2 στο νέο καλύτερο σταδιακό μοντέλο. Ο αλγόριθμος προσθέτει προγνωστικούς παράγοντες στο σταδιακό μοντέλο με βάση τις τιμές εισαγωγής και αποκλείει τον προγνωστικό από το σταδιακό μοντέλο εάν δεν ικανοποιεί το όριο εξαίρεσης.
  • Ο αλγόριθμος συνεχίζει μέχρι να μην μπορεί να προστεθεί ή να εξαιρεθεί καμία μεταβλητή.

Μπορείτε να εκτελέσετε τον αλγόριθμο με τη συνάρτηση ols_stepwise() από το πακέτο olsrr.

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

Πριν από αυτό, σας δείχνουμε τα βήματα του αλγορίθμου. Ακολουθεί ένας πίνακας με τις εξαρτημένες και ανεξάρτητες μεταβλητές:

Εξαρτημένη μεταβλητή Ανεξάρτητες μεταβλητές
mpg διανομή
hp
αρουραίος
wt
qsec

Αρχική

Αρχικά, ο αλγόριθμος ξεκινά εκτελώντας το μοντέλο σε κάθε ανεξάρτητη μεταβλητή ξεχωριστά. Ο πίνακας δείχνει την τιμή p για κάθε μοντέλο.

## [[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

Για να εισαγάγετε το μοντέλο, ο αλγόριθμος διατηρεί τη μεταβλητή με τη χαμηλότερη τιμή p. Από την παραπάνω έξοδο, είναι wt

Βήμα 1

Στο πρώτο βήμα, ο αλγόριθμος τρέχει mpg σε wt και τις άλλες μεταβλητές ανεξάρτητα.

## [[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

Κάθε μεταβλητή είναι πιθανή υποψήφια να εισέλθει στο τελικό μοντέλο. Ωστόσο, ο αλγόριθμος διατηρεί μόνο τη μεταβλητή με τη χαμηλότερη τιμή p. Αποδεικνύεται ότι ο hp έχει ελαφρώς χαμηλότερη τιμή p από το qsec. Επομένως, η hp μπαίνει στο τελικό μοντέλο

Βήμα 2

Ο αλγόριθμος επαναλαμβάνει το πρώτο βήμα αλλά αυτή τη φορά με δύο ανεξάρτητες μεταβλητές στο τελικό μοντέλο.

## [[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

Καμία από τις μεταβλητές που εισήχθησαν στο τελικό μοντέλο δεν έχει τιμή p αρκετά χαμηλή. Ο αλγόριθμος σταματά εδώ. έχουμε το τελικό μοντέλο:

## 
## 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

Μπορείτε να χρησιμοποιήσετε τη συνάρτηση ols_stepwise() για να συγκρίνετε τα αποτελέσματα.

stp_s <-ols_stepwise(fit, details=TRUE)

Παραγωγή:

Ο αλγόριθμος βρίσκει μια λύση μετά από 2 βήματα και επιστρέφει την ίδια έξοδο που είχαμε πριν.

Στο τέλος, μπορείτε να πείτε ότι τα μοντέλα εξηγούνται από δύο μεταβλητές και μια τομή. Το μίλι ανά γαλόνι συσχετίζεται αρνητικά με την ακαθάριστη ιπποδύναμη και το βάρος

## 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.

Μηχανική μάθηση

Μηχανική μάθηση γίνεται ευρέως διαδεδομένο μεταξύ των επιστημόνων δεδομένων και αναπτύσσεται σε εκατοντάδες προϊόντα που χρησιμοποιείτε καθημερινά. Μία από τις πρώτες εφαρμογές ML ήταν Φίλτρο ανεπιθύμητων.

Ακολουθούν άλλες εφαρμογές της Μηχανικής Μάθησης-

  • Αναγνώριση ανεπιθύμητων ανεπιθύμητων μηνυμάτων σε email
  • Τμηματοποίηση συμπεριφοράς πελατών για στοχευμένη διαφήμιση
  • Μείωση των δόλιων συναλλαγών με πιστωτικές κάρτες
  • Βελτιστοποίηση της χρήσης ενέργειας σε κτίρια σπιτιού και γραφείων
  • Αναγνώριση προσώπου

Εποπτευόμενη μάθηση

In Εποπτευόμενη μάθηση, τα δεδομένα εκπαίδευσης που τροφοδοτείτε στον αλγόριθμο περιλαμβάνουν μια ετικέτα.

Ταξινόμηση είναι ίσως η πιο χρησιμοποιούμενη τεχνική εποπτευόμενης μάθησης. Ένα από τα πρώτα καθήκοντα ταξινόμησης που αντιμετώπισαν οι ερευνητές ήταν το φίλτρο ανεπιθύμητης αλληλογραφίας. Ο στόχος της μάθησης είναι να προβλέψει εάν ένα email ταξινομείται ως ανεπιθύμητο ή ραμ (καλό email). Το μηχάνημα, μετά το βήμα εκπαίδευσης, μπορεί να εντοπίσει την κατηγορία του email.

Υποχωρήσεις χρησιμοποιούνται συνήθως στο πεδίο μηχανικής εκμάθησης για την πρόβλεψη συνεχούς τιμής. Η εργασία παλινδρόμησης μπορεί να προβλέψει την τιμή του α εξαρτημένη μεταβλητή με βάση ένα σύνολο από ανεξάρτητες μεταβλητές (ονομάζονται επίσης προγνωστικοί παράγοντες ή οπισθοδρομικοί). Για παράδειγμα, οι γραμμικές παλινδρομήσεις μπορούν να προβλέψουν μια τιμή μετοχής, πρόβλεψη καιρού, πωλήσεις και ούτω καθεξής.

Ακολουθεί ο κατάλογος ορισμένων βασικών εποπτευόμενων αλγορίθμων μάθησης.

  • Γραμμικής παλινδρόμησης
  • Λογιστική παλινδρόμηση
  • Κοντινότεροι γείτονες
  • Μηχανή φορέα υποστήριξης (SVM)
  • Δέντρα απόφασης και Τυχαίο Δάσος
  • Νευρωνικά δίκτυα

Μη εποπτευόμενη μάθηση

In Μη εποπτευόμενη μάθηση, τα δεδομένα εκπαίδευσης δεν έχουν ετικέτα. Το σύστημα προσπαθεί να μάθει χωρίς αναφορά. Παρακάτω είναι μια λίστα αλγορίθμων μάθησης χωρίς επίβλεψη.

  • Κ-μέσος
  • Ιεραρχικός Cluster Ανάλυση
  • Μεγιστοποίηση προσδοκιών
  • Οπτικοποίηση και μείωση διαστάσεων
  • Ανάλυση κύριων συστατικών
  • PCA πυρήνα
  • Τοπική-Γραμμική Ενσωμάτωση

Σύνοψη

  • Η γραμμική παλινδρόμηση απαντά σε μια απλή ερώτηση: Μπορείτε να μετρήσετε μια ακριβή σχέση μεταξύ μιας μεταβλητής στόχου και ενός συνόλου προγνωστικών;
  • Η συνηθισμένη μέθοδος ελαχίστων τετραγώνων προσπαθεί να βρει τις παραμέτρους που ελαχιστοποιούν το άθροισμα των τετραγωνικών σφαλμάτων, δηλαδή την κατακόρυφη απόσταση μεταξύ των προβλεπόμενων τιμών y και των πραγματικών τιμών y.
  • Το πιθανοτικό μοντέλο που περιλαμβάνει περισσότερες από μία ανεξάρτητες μεταβλητές ονομάζεται μοντέλα πολλαπλής παλινδρόμησης.
  • Ο σκοπός του αλγόριθμου Βηματικής Γραμμικής Παλινδρόμησης είναι να προσθέσει και να αφαιρέσει πιθανούς υποψηφίους στα μοντέλα και να διατηρήσει αυτούς που έχουν σημαντικό αντίκτυπο στην εξαρτημένη μεταβλητή.
  • Η επιλογή μεταβλητών είναι ένα σημαντικό μέρος για την προσαρμογή ενός μοντέλου. Η σταδιακή παλινδρόμηση εκτελεί αυτόματα τη διαδικασία αναζήτησης.

Η συνηθισμένη παλινδρόμηση του ελάχιστου τετραγώνου μπορεί να συνοψιστεί στον παρακάτω πίνακα:

Βιβλιοθήκη Σκοπός Λειτουργία Επιχειρήματα
βάση Υπολογίστε μια γραμμική παλινδρόμηση lm() τύπος, δεδομένα
βάση Συνοψίστε το μοντέλο συνοψίζω() ταιριάζουν
βάση Απόσπασμα συντελεστών lm()$συντελεστής
βάση Εξαγωγή υπολειμμάτων lm()$υπολείμματα
βάση Απόσπασμα προσαρμοσμένης αξίας lm()$fitted.values
olsrr Εκτέλεση σταδιακής παλινδρόμησης ols_stepwise() fit, pent = 0.1, prem = 0.3, λεπτομέρειες = FALSE

Σημείωση: Θυμηθείτε να μετατρέψετε την κατηγορική μεταβλητή σε παράγοντα πριν για να ταιριάζει στο μοντέλο.