evawinkler / APPR-2019-20

Repozitorij z gradivi za predmet Analiza podatkov s programom R v študijskem letu 2019/20
MIT License
0 stars 0 forks source link

napredna analiza #5

Open evawinkler opened 4 years ago

evawinkler commented 4 years ago

Pozdravljeni, pri napredni analizi podatkov sem naletela na težave. Na predstavitvi mi je profesor svetoval naj kot napredno analizo naredim napoved plač za izbrane regije. Izbrala sem si Pomursko in Osrednjeslovensko. Pri izdelavi napovedi, si pomagam z zadnjimi vajami, vendar sem naletela na težave oz. vprašanje. Zanima me, na kakšen način je najbolje da prikažem podatke, ali z linearno regresijo z metodo najmanjših kvadratov, ali naj uporabim prileganje z zlepki? Namreč si sama težko predstavljam, kako naj bi ta napoved izgledala v mojem primeru. Ali morem imeti kakšno povezavo med različnimi spremenljivkami za izvedbo analize ali to ni potrebno ( torej, da imam le vrednosti skozi različna leta?)

Najlepša hvala za odgovor.

timotejvesel commented 4 years ago

Potrebuješ samo vrednosti skozi različna leta. Zdi se mi, da se model, ki ga dobimo s funkcijo gam precej dobro prilega podatkom. Spodaj je en način kako lahko napoveš vrednosti za naslednja štiri leta.

library(mgcv)
g6pomurska <- ggplot(placeporegijah %>% filter(regije == "Pomurska")) + 
  aes(x = leto, y = stevilo) + geom_point() + geom_smooth(method = "gam", se = FALSE)

mgam <- gam(stevilo ~ leto , data = placeporegijah)
leta <- data.frame(leto = seq(2019,2022))
napoved <- leta %>% mutate(stevilo = predict(mgam, .))

tabela.napoved <- bind_rows(napoved, (placeporegijah %>%  filter(regije == "Pomurska"))[c(2,3)])

graf.napoved <- ggplot(tabela.napoved, aes(x = leto, y = stevilo)) + 
  geom_point() + scale_x_continuous(name = "Leto", breaks = seq(2008,2022,1)) + ylab("Plača") +
  ggtitle("Povprečna plača v Pomurju") +
  geom_smooth(method = 'gam', formula = y ~ x, se = FALSE)

Uporabiš pa lahko tudi linearno regresijo ali pa kak nelinearen model, na primer:

regresija <- ggplot(placeporegijah %>% filter(regije == "Pomurska")) + 
  aes(x = leto, y = stevilo)  + geom_point(col="red")
regresija + geom_smooth(method="lm", formula = y ~ x + I(x^2), se = FALSE)

nelin <- lm(stevilo ~ leto + I(leto^2), data = placeporegijah)
leta <- data.frame(leto = seq(2019,2022))
napoved <- leta %>% mutate(stevilo = predict(nelin, .))

tabela.napoved <- bind_rows(napoved, (placeporegijah %>%  filter(regije == "Pomurska"))[c(2,3)])

graf.napoved <- ggplot(tabela.napoved, aes(x = leto, y = stevilo)) + 
  geom_point() + scale_x_continuous(name = "Leto", breaks = seq(2008,2022,1)) + ylab("Plača") +
  ggtitle("Povprečna plača v Pomurju")
evawinkler commented 4 years ago

Najlepša hvala za pomoč. Zanima me, ali sem pravilno naredila še napoved za osrednjeslovensko regijo? `g6osrednjeslovenska <- ggplot(placeporegijah %>% filter(regije == "Osrednjeslovenska")) + aes(x = leto, y = stevilo) + geom_point() + geom_smooth(method = "gam", se = FALSE)

mgam1 <- gam(stevilo ~ leto , data = placeporegijah) leta1 <- data.frame(leto = seq(2019,2022)) napoved <- leta1 %>% mutate(stevilo = predict(mgam1, .))

tabela.napoved1 <- bind_rows(napoved, (placeporegijah %>% filter(regije == "Osrednjeslovenska"))[c(2,3)])

graf.napoved1 <- ggplot(tabela.napoved1, aes(x = leto, y = stevilo)) + geom_point() + scale_x_continuous(name = "Leto", breaks = seq(2008,2022,1)) + ylab("Plača") + ggtitle("Povprečna mesečna neto plača v osrednjeslovenski regiji") + geom_smooth(method = 'gam', formula = y ~ x, se = FALSE)`

Nato sem grafa že dodala na projekt.Rmd.

timotejvesel commented 4 years ago

Napoved ni pravilna, saj sem naredil napako. Napoved plač za obe regiji je popolnoma enaka (kar je očitno narobe), saj sem pozabil filtrirati po regijah in je izračunalo napoved za vse regije. Mislim, da bi za Pomursko regijo moralo biti pravilno sledeče

mgam1 <- gam(stevilo ~ leto , data = placeporegijah %>% filter(regije == "Pomurska"))
leta1 <- data.frame(leto = seq(2019,2022))
napoved <- leta1 %>% mutate(stevilo = predict(mgam1, .))

Ostala koda ostane enaka. Za druge regije ter modele podobno. Za napako se opravičujem.

evawinkler commented 4 years ago

Hvala sem popravila, sedaj deluje vse pravilno.