Publicat pe Lasă un comentariu

dezlegare Spline regresie în R

când vorbim despre regresie, primele lucruri care ne vin în minte sunt regresia liniară sau logistică și undeva în spatele îndepărtat al regresiei polinomiale a minții. Regresia liniară și logistică sunt 2 dintre cele mai populare tipuri de metode de regresie. Cu toate acestea, există multe tipuri diferite de metode de regresie care se pot dovedi utile în diferite scenarii. Astăzi vom analiza regresia Spline folosind funcțiile Step.

regresia splinei este o tehnică de regresie non-parametrică. Această tehnică de regresie împarte seturile de date în coșuri la intervale sau puncte numite noduri și fiecare coș are potrivirea sa separată. Să ne uităm la o implementare simplă a regresiei Spline folosind funcția step în R.

vizualizarea setului de date:

Quantity Vs Sales Data
library(plotly)plot_ly(data,x=~Quantity,
y=~Sales,
type="scatter"
)

Quantity Vs Sales Plot

Let’s fit a linear regression on and see how it works:

fit <- lm(Sales ~ Quantity, data=data)
summary(fit)

plot_ly(data,x=~Quantity,
y=~Sales,
type="scatter") %>% add_lines(x = ~Quantity, y = fitted(fit))

The equation here takes the form of:

In this case:

putem vedea că regresia liniară produce o potrivire teribilă în acest caz, așa cum se vede din graficul de mai sus și valoarea R-pătrat.

să introducem acum un termen polinomial (pătratic aici) în ecuație și să analizăm performanța modelului.

fit2 <- lm(Sales ~ poly(Quantity,2) + Quantity, data=data)
summary(fit2)

plot_ly(data,x=~Quantity,
y=~Sales,
type="scatter") %>% add_lines(x = ~Quantity, y = fitted(fit2))

The equation here takes the form of:

In this case:

putem vedea că nu este o potrivire proastă, dar nici una grozavă. Vârful prezis este oarecum departe de vârful real. Regresia polinomială vine, de asemenea, cu diverse dezavantaje pe care tinde să le suprasolicite. Aceasta poate duce la o creștere a complexității pe măsură ce numărul de caracteristici crește.

dezavantajele regresiei polinomiale și incompetenței modelului liniar pot fi depășite prin utilizarea regresiei Spline.

să vizualizăm setul de date împărțindu-l în două coșuri. Unul pe partea stângă a vârfului care apare la cantitate = 89 și celălalt în partea dreaptă, așa cum se arată în cele două imagini de mai jos, respectiv.

Now let’s combine the above two images into one equation and perform piecewise regression or spline regression using step function.

The equation would take the form of:

In this case:

Xbar here is called the Knot value.

data$Xbar <- ifelse(data$Quantity>89,1,0)
data$diff <- data$Quantity - 89
data$X <- data$diff*data$Xbar
data

After performing the above manipulation the data would look like this:

Let us now fit the equation we saw above:

The X in the equation below is (x-xbar)*Xk

reg <- lm(Sales ~ Quantity + X, data = data)
plot_ly(data,x=~Quantity,
y=~Sales,
type="scatter") %>% add_lines(x = ~Quantity, y = fitted(reg))

summary(reg)

As we can see from the plot and the R-squared values above, spline regression produces a much better result, in this scenario.

Above results can also be obtained using Segmented package in R:

Note: If you are not providing the breakpoint value (Quantity = 89, here), then use „psi = NA”

summary(fit_seg)

Both methods produce the same result.

acesta a fost un exemplu simplu de regresie spline. Splinele pot fi montate folosind și funcții polinoame, numite Spline polinomiale, deci în loc să se potrivească un polinom de grad înalt pentru întreaga gamă de X, splinele sau regresia polinomială în bucăți cu polinoame de grad inferior pot fi potrivite în regiunile sperate ale lui X.

alegerea locației și a numărului nodurilor

splinele pot fi modelate prin adăugarea unui număr mai mare de noduri, crescând astfel flexibilitatea modelului. În general, plasarea nodurilor K duce la montarea funcțiilor K + 1. Alegerea plasării unui nod poate depinde de diverși factori. Deoarece regresia este foarte flexibilă în zonele în care există mai multe noduri plasate, este intuitiv să plasați noduri acolo unde există mai multe variații ale datelor sau unde funcția se schimbă mai rapid. Regiunile care par relativ stabile nu trebuie să aibă prea multe noduri și pot folosi mai puține dintre ele.

concluzie:

am aflat despre regresia Spline folosind funcția step în acest articol. Există și alte tipuri de funcții polinomiale care pot fi aplicate. Una dintre cele comune este spline cubică care folosește funcția polinomială de ordinul al treilea. O altă metodă de implementare a splinelor este netezirea Splinelor. Splinele oferă adesea rezultate mai bune în comparație cu regresia polinomială. În spline, flexibilitatea poate fi crescută prin creșterea numărului de noduri și fără a crește gradul polinomului. De asemenea, ele produc rezultate mai stabile în comparație cu regresia polinomială, în general.

sper că acest articol a fost util în hapsân ideea de Spline și regresie în bucăți și Noțiuni de bază cu ea.

Lasă un răspuns

Adresa ta de email nu va fi publicată.