diff --git a/podsumowanie/README.md b/podsumowanie/README.md index 6177f1b..4d4a4ac 100644 --- a/podsumowanie/README.md +++ b/podsumowanie/README.md @@ -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.
+ +![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

+ +- AIC - kryterium wyboru pomiędzy modelami statystycznymi o różnej liczbie predyktorów.
+![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
+ +![bic](lab9/bic.png) + + +--- +## LAB 10 +Zagadnienia: + - + + + ### R + + + + ### Zagadnienia diff --git a/podsumowanie/lab9/aic.png b/podsumowanie/lab9/aic.png new file mode 100644 index 0000000..57eb82c Binary files /dev/null and b/podsumowanie/lab9/aic.png differ diff --git a/podsumowanie/lab9/bic.png b/podsumowanie/lab9/bic.png new file mode 100644 index 0000000..a716dfb Binary files /dev/null and b/podsumowanie/lab9/bic.png differ diff --git a/podsumowanie/lab9/wielokrotna.png b/podsumowanie/lab9/wielokrotna.png new file mode 100644 index 0000000..0bf4eba Binary files /dev/null and b/podsumowanie/lab9/wielokrotna.png differ diff --git a/testowe/pomocnicze.R b/testowe/pomocnicze.R new file mode 100644 index 0000000..e2d11fc --- /dev/null +++ b/testowe/pomocnicze.R @@ -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") \ No newline at end of file