maxfilip98 / APPR-2017-18

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

shiny #3

Closed maxfilip98 closed 6 years ago

maxfilip98 commented 6 years ago

Spoštovani, za shiny pri mojemu projektu sem mislil narediti prvo rast inflacije glede na vse države (po grafih), kjer bi v meniju potem lahko izbirali državo in potem še rast BDP-ja vsake države. Potem pa bi v naslednjem delu iskal korelacije med inflacijo posamezne države, obrestnimi merami, ter BDP-jem. Zanima me če bi lahko za prvi del naredil vse grafe prvo z for zanko po imenih vseh držav in potem te grafe uporabil za shiny? Ali naj for zanke ne bi uporabljal. Hvala za odgovor Max Filip Uršič

jaanos commented 6 years ago

Uporaba zanke ni potrebna, saj se lahko grafi izrisujejo sproti - v server.R samo izrišeš graf, ki je odvisen od izbranih podatkov (polje v spremenljivki input). Ko se bo torej spremenila izbira države, bo Shiny to zaznal in znova narisal graf, ki je od te izbire odvisen.

maxfilip98 commented 6 years ago

Spoštovani, zanima me kako bi lahko pri shiniju lahko naredil tako, da bi izbral pri vsaki državi kateri del BDP-ja mi izriše in zraven na graf postavi inflacijo in obrestne mere, čeprav se podatki med tabelami ne ujemajo popolnoma.

maxfilip98 commented 6 years ago

Sedaj sem pri shiniju sam dodal grafe, kjer izberem sestavo in državo, vendar mi pusti izbrati ko ga poženem, a napiše error in grafa ne nariše.

jaanos commented 6 years ago

Najprej, ko delaš selectInput, podaj vsako vrednost samo enkrat - uporabi torej parameter choices = unique(BDP$sestava) (in podobno tudi za državo). Ker sta imeni teh izbirnih polj sestava in drzava, v server.R filtriraj po istoimenskih poljih v objektu input:

tabela <- BDP %>% filter(drzava == input$drzava, sestava == input$sestava)

Treba bo popraviti še ime stolpca za os x - v razpredelnici BDP imaš stolpec leta (čeprav bi bilo leto boljše poimenovanje).

Za inflacijo svetujem, da jo izrišeš na drugem grafu, saj gre za drugačno lestvico. Obrestne mere pa riši posebej (lahko narediš npr. nov zavihek), saj jih nimaš ločenih po državah, pa še drugačne kategorije imaš.

maxfilip98 commented 6 years ago

Sedaj sem popravil graf za BDP in bom dodal še posebaj graf za inflacijo. Me pa zanima (se je že meni zdelo, da zaradi različne skale ne bom mogel prikazati obojega na enakem grafu) če imate kakšno idejo, kako bi lahko prikazal korelacijo med temi 3 faktorji?

jaanos commented 6 years ago

Za BDP in inflacijo bi lahko združil razpredelnici po državi in letu (inner_join), nato pa prikazal npr. BDP na osi x in inflacijo na osi y na točkovnem grafu (morda se lahko omejiš samo na eno sestavo BDP).

Podobno bi lahko naredil tudi z obrestno mero, a bi lahko združeval le po letu, ki pa bi ga moral izluščiti iz datuma:

obrestne_mere %>% mutate(leto = datum %>% strftime("%Y") %>% parse_integer())
maxfilip98 commented 6 years ago

Naredil sem kot ste omenili zgoraj, a sam ne vidim kako s tem lahko vidim korelacijo med spremenljivkami. Prav tako me zanima, če mi lahko poveste ko naredim inner_join pri bdp-ju in inflaciji, kako ga lahko naredim po državah in po letu, ker države nimajo enakih imen? Ali moram spremeniti imena vseh držav, ki nimajo enakega imena?

jaanos commented 6 years ago

Najprej, poskrbi, da bodo imeli vnosni elementi v ui.R različna imena, da bodo vsi delovali. Trenutno imaš namreč tri izbirnike z imenom drzava, tako da so vsi grafi odvisni od izbire v prvem od njih.

Ko narediš inner_join, se bodo ohranile samo vrstice, ki se pojavijo v obeh razpredelnicah. Kolikor vidim, imaš različni imeni samo za Makedonijo (pri BDP imaš sicer še BiH in Kosovo, pri inflaciji pa ZDA in različne variante EU/evroobmočja). Najbolje bo torej, da pri inflaciji spremeniš ime za Makedonijo, tako da se bo ujemalo z BDP in zemljevidom. Pri združevanju z inner_join potem povej, da združuješ tudi po državi - uporabi parameter by = c("leto" = "leta", "drzava") (slednji stolpec ima enako ime v obeh razpredelnicah, zato ga ni potrebno navajati dvakrat).

Da v razpredelnici pomozna_BDP_obrestne_mere ne boš imel stolpcev vrednost.x in vrednost.y, ustrezna stolpca raje že prej preimenuj, npr.

pomozna_BDP_obrestne_mere <- inner_join(BDP %>% rename(BDP = vrednost),
                                        obrestne_mere %>% rename(obrestna.mera = vrednost) %>%
                                          mutate(leto = datum %>% strftime("%Y") %>%
                                                   parse_integer()), by = c("leta"="leto"))

Neko grobo korelacijo lahko vidiš že iz izrisanih grafov za BDP in obrestne mere, če pa želiš narisati še regresijsko premico, lahko grafu prišteješ še npr. geom_smooth(method = "lm").

maxfilip98 commented 6 years ago

Naredil sem še zadnje popravke pri Shiniju. Ali je sedaj projekt razen tega, da shiny vključim še v rmd končan ali bi lahko naredil še kaj da ga izboljšam?

maxfilip98 commented 6 years ago

Pri končevanju projekta sem zasledil še dve stvari, ki bi jih rad spremenil. Ko v shiniju izbiram države, se graf spremeni, le ko imam pri vseh izbrano enako državo. Sepravi, če nekje izberem Belgija povsod drugje pa Slovenija, se ne zgodi nič, dokler ne izberem povsod Slovenija. Prav tako me zanima ali lahko shiny razdelim in 2 izmed grafov vključim vmes v poročilu, dva pa na koncu pri napredni analizi projekta.

maxfilip98 commented 6 years ago

Drug problem sem že razrešil, saj bom vse vključil v napredno analizo podatkov.

jaanos commented 6 years ago

Glede Shinyja glej zgoraj, kar sem napisal glede imen izbirnikov. Sicer pa svetujem, da v poročilu pri Shinyju povečaš vrednost parametra height, da bo celotna aplikacija vidna brez drsnika (lahko pa jo tudi razbiješ po zavihkih - glej primer iz vzorca).

Svetoval bi še, da pri grafih poskrbiš za ustrezne oznake osi, saj npr. vrednost ne pove prav veliko - raje povej, za kakšno vrednost gre, ter kakšna enota je uporabljena (npr. BDP v milijonih evrov). Oznake spremeniš tako, da grafu prišteješ funkciji xlab oziroma ylab, ki jima podaš želeno oznako. Prav tako ni potrebe, da se v poročilu vidi ime spremenljivke, v kateri imaš graf - raje grafom dodaj ustrezen naslov (funkcija ggtitle). Pri grafu inflacije v EU se ti za leta pojavijo decimalke v lestvici - katere letnice naj se prikažejo, lahko kontroliraš s funkcijo scale_x_continuous, npr.

graf.inflacijaEU + scale_x_continuous(breaks = seq(2005, 2017, 2))

Sicer pa, glede na to, da program deluje, bom dodal povezavo, tako da se lahko z @alenFMF domeniš za termin zagovora. Če boš še kaj spreminjal, mi prosim javi, da posodobim povezavo.

maxfilip98 commented 6 years ago

Projektu sem dodal še zadnje popravke in vas prosim, če lahko posodobite povezavo. Še enkrat se vam zahvaljujem za vso pomoč pri projektu. Max Filip Uršič

jaanos commented 6 years ago

V redu, bom posodobil.