This commit is contained in:
Jakub Adamski 2021-06-20 10:42:15 +02:00
parent b67c4e6ecf
commit d1df50a039
5 changed files with 102 additions and 2 deletions

View File

@ -544,7 +544,7 @@ Wykonując później test ANOVA - analiza wariancji możemy zobaczyć czy porów
Zagadnienia:
- regresja liniowa
- wykład 9 na stronie - pierwsza część
- wykład 9 na stronie - początek
### R
@ -636,14 +636,77 @@ Założenia analizy regresji:
---
## LAB 9
Zagadnienia:
-
- regresja wielokrotna i krokowa
- wykład 9 na stronie środek
### R
```r
# regresja wielokrotna
pairs(auto_wna_sel)
model_1 <- lm(price ~ horsepower + city.mpg + peak.rpm + curb.weight + num.of.doors, data = auto_wna)
coef(model_1)
confint(model_1)
summary(model_1)
fitted(model_1)
residuals(model_1)
# regresja krokowa w tył (jeden krok)
step(model_1) # AIC
step(model_1, k = log(nrow(auto_wna))) # BIC
# regresja krokowa w przód (jeden krok)
model_0 <- lm(price ~ 1, data = auto_wna)
step(model_0, direction = "forward", scope = formula(model_1))
# predykcja
new_data <- data.frame(curb.weight = 2823, horsepower = 154)
model_2 <- lm(price ~ curb.weight + horsepower, data = auto_wna)
stats::predict(model_2, new_data, interval = "prediction")
summary(model_2)$adj.r.squared
```
### Zagadnienia
- Regresja wielokrotna - z regresją wielokrotną (wieloraką) mamy do czynienia, jeśli zmianna zależna Y związana jest z większą ilością zmiennych niezależnych.
- Na stronie są wzory z dopasowaniem, pedykcją, odrzuceniem wyrazu wolnego i estymatorami - analogicznie jak do regresji liniowej.<br/>
![wielokrotna](lab9/wielokrotna.png)
- Regresja krokowa - regresja krokowa jest odmianą analizy regresji (nie tylko regresji liniowej), w której do modelu wprowadzane są jedynie istotne statystycznie zmienne, predyktory, które rzeczywiście „poprawiają” zbudowany model. Możemy odrzucić lub dodać zmienną w każdym kroku.
- Jeśli zaczynamy od stałej i dodajemy zmienne to jest to regresja w przód.
- Możemy też zacząć od wszyskich zmiennych i odejmować - regresja w tył.
- Decydujemy o dodaniu / sprawdzamy co się stanie jak odejmiemy - za pomocą kryterium np test istotności AIC, BIC<br/><br/>
- AIC - kryterium wyboru pomiędzy modelami statystycznymi o różnej liczbie predyktorów.<br/>
![aic](lab9/aic.png)
- BIC - w modelowaniu równań strukturalnych jest to jeden ze wskaźników dopasowania modelu. Minimalizujemy wartość wskaźnika.
- step z k=log to regresja krokowa BIC, k=2 to AIC
- L to zmaksymalizowana funkcja prawdopodobieństwa modelu M L=p(x|theta,M)
- n to liczba obserwacji
- k - liczba parametrów<br/>
![bic](lab9/bic.png)
---
## LAB 10
Zagadnienia:
-
### R
### Zagadnienia

BIN
podsumowanie/lab9/aic.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

BIN
podsumowanie/lab9/bic.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

37
testowe/pomocnicze.R Normal file
View File

@ -0,0 +1,37 @@
rok <- 1995:2002
liczba_przypadkow <- c(39.7, 38.2, 34.7, 33.1, 30.1, 28.4, 26.3, 24.7)
data_set <- data.frame(rok = rok, liczba_przypadkow = liczba_przypadkow)
plot(data_set, main = "Wykres rozrzutu", pch = 16)
model <- lm(liczba_przypadkow ~ rok, data = data_set)
model$coefficients
plot(data_set, main = "Wykres rozrzutu", pch = 16)
abline(model, col = "red", lwd = 2)
coef(model)
confint(model)
summary(model)
fitted(model)
residuals(model)
temp_rok <- data.frame(rok = seq(min(data_set$rok) - 10,
max(data_set$rok) + 10,
length = 100))
pred <- stats::predict(model, temp_rok, interval = "prediction")
plot(data_set, main = "Wykres rozrzutu", pch = 16)
abline(model, col = "red", lwd = 2)
lines(temp_rok$rok, pred[, 2], lty = 2, col = "red")
lines(temp_rok$rok, pred[, 3], lty = 2, col = "red")
new_rok <- data.frame(rok = 2003:2007)
(pred_2003_2007 <- stats::predict(model, new_rok, interval = 'prediction'))
plot(data_set, main = "Wykres rozrzutu z predykcją na lata 2003-2007", pch = 16,
xlim = c(1995, 2007), ylim = c(10, 40))
abline(model, col = "red", lwd = 2)
points(2003:2007, pred_2003_2007[, 1], col = "blue", pch = 16)
temp_rok <- data.frame(rok = seq(1994, 2008, length = 100))
pred <- stats::predict(model, temp_rok, interval = "prediction")
lines(temp_rok$rok, pred[, 2], lty = 2, col = "red")
lines(temp_rok$rok, pred[, 3], lty = 2, col = "red")