gapipust / 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

Poročilo #3

Open katarinabrilej opened 4 years ago

katarinabrilej commented 4 years ago

Če želiš v ponedeljek predstavljati projekt, prosim poskrbi, da boš imel delujoče poročilo. Poskrbi, da se poženejo tvoji programi (svojo kodo imaš v uvoz/projekt_uvoz.r torej ni treba uvažati source("uvoz/uvoz.r", encoding="UTF-8") iz vzorčnega repozitorija), preostali del iz vzorca pa pobriši.

gapipust commented 4 years ago

Pozdravljeni, zanima me, če je v poročilu še kaj, kar bi moral popraviti. Zanima me tudi, če je poleg grafov potrebna še analiza (torej da napišem kaj je razvidno iz grafov) in kako bi lahko razširil 2 grafa, ki sta zaradi legende zelo ozka, če je to možno. Hvala in lep pozdrav

katarinabrilej commented 4 years ago

Poleg grafov pripiši tudi opažanja. Pri grafih, ki sta zaradi legende ozka, lahko legendo prestaviš pod graf in se bosta razširila. Lahko pa tudi skrajšaš imena v legendi, recimo pri Nemčiji brez oklepaja. Pri teh dveh grafih lahko tudi razdeliš na dva dela, da posebej obravnavaš še države, ki so na dnu grafa in se v tem skupnem grafu ne ločijo med seboj. Prav tako poenoti naslove grafov (šumniki, velika začetnica). Dobro bi bilo dodati tudi napredno analizo (grafe napovedi). Za boljšo oceno pa lahko dodaš še shiny.

gapipust commented 4 years ago

Kako bi najlažje spremenil ime Nemčije, saj ne najdem nobene funkcije, ki bi to omogočala?

katarinabrilej commented 4 years ago

V uvozu spremeniš ime v tabeli nocitve:

nocitve$izvor_turistov[nocitve$izvor_turistov == "Germany (until 1990 former territory of the FRG)"] <- "Germany"

Lahko pa spremeniš tudi ime za prebivališče, v recimo hotel in kamp, pa ne bo več problema s preširoko legendo.

gapipust commented 4 years ago

Zdaj sem začel delati še shiny, vendar pa mi kljub temu, da imam kodo zelo podobno primeru, ki smo ga gledali v šoli, ne najde datoteke iz uvoza podatkov (poskusil sem tudi s source, vendar mi jo nikakor ne najde). Opazil sem tudi, da na vzorčnem repozitoriju v nobeni datoteki ni na začetku source(), jaz pa imam to v vsaki datoteki, da pokličem funkcije iz prejšnje datoteke in me zanima, če je to narobe.

gapipust commented 4 years ago

Poleg tega imam še vprašanje glede Binderja in sicer mi poganja zelo dolgo, potem pa mi sicer dela, vendar mi pri zemljevidu veliko več občin obarva, kot da ni podatka. Ko sem šel gledat tabelo občine sem potem videl, da ima težave s šumniki, zato mi je verjetno vse občine s šumniki pobarval sivo, čeprav je podatek za število nočitev zraven. Zanima me, če je to kakšna moja napaka, ali pa bo to delalo normalno, ko bom oddal nalogo.

katarinabrilej commented 4 years ago

Glede Shinyja, en primer kako izrišeš graf bi bil sledeč.

library(shiny)

shinyUI(fluidPage(
  titlePanel("Nočitve po slovenskih občinah"),
  tabPanel("Število nočitev", 
           sidebarPanel(
             selectInput("drzava1", label = "Izberi drzavo", 
                         choices = colnames(vse_nocitve)[2:3])),
           mainPanel(plotOutput("obcine"))),
))
library(shiny)

shinyServer(function(input, output) {
  output$obcine <- renderPlot({
    graf.obcine <- ggplot(vse_nocitve[,c("leto",input$drzava1)]) + aes(x=leto, y = get(input$drzava1)) + geom_point()
    print(graf.obcine)

  })
})

Vendar je bolje, če izrišeš kak primer, ko imaš več izbire, ne samo nočitve za Slovenijo in Hrvaško (če imaš takšne podatke).

Gledesource, tega ne potrebuješ za začetku vsake datoteke, ker potem v poročilu narediš source za vse te datoteke. Je pa uporabno zdaj, ko še delaš, da ti ni treba ročno pognati teh datotek.

gapipust commented 4 years ago

Sem naredil za shiny tabelo občin in število nočitev v njih, samo še nekaj me zanima in sicer, kako bi spremenil nekatera imena občin, da bi se ujemala s tistimi na zemljevidu. Nekaj podobnega smo delali pri pouku, ampak mi pri taki funkciji zamenja nekatere kraje oz. jih zamakne (npr. podatke za Ljubljano ima zdaj Ljubno). Zamenjal bi, ker sumim, da mi nekatere kraje na zemljevidu obarva sivo, ker se razlikujejo v imenu (npr. Piran).

gapipust commented 4 years ago

`obcine <- uvozi.obcine()

obcine_zem <- uvozi.zemljevid("http://baza.fmf.uni-lj.si/OB.zip", "OB", pot.zemljevida="OB", encoding="Windows-1250"); names(obcine_zem) primerjava <- data.frame(obcina.obcine=sort(unique(obcine$obcina)), obcina.zemljevid=sort(levels(obcine_zem$OB_UIME)), stringsAsFactors=FALSE) razlicne <- primerjava %>% filter(obcina.obcine != obcina.zemljevid)

popravimo imena, ki se razlikujejo:

obcine <- obcine %>% inner_join(primerjava, by=c("obcina"="obcina.obcine")) %>% mutate(obcina=factor(obcina.zemljevid)) %>% select(-obcina.zemljevid)`

jaanos commented 4 years ago

Problem s šumniki se pojavi pri uvozu razpredelnice obcine - glede na to, da jo uvažaš z read.csv, bo potrebno dodati parameter fileEncoding="Windows-1250" (sicer pa bi svetoval, da za uvoz raje uporabiš funkcijo read_csv iz knjižnice readr). Poleg tega sta v obcine.csv odvečna znaka 0 pred imenom občine Mežica - svetujem, da ju odstraniš kar v podatkih.

Ko to popraviš, lahko s primerjavo imen občin v podatkih in zemljevidu (po vstavitvi presledkov okoli pomišljajev) opaziš, da se razlikujejo v prisotnosti dvojezičnih imen v podatkih (lahko odstraniš vse od / naprej) in pa okrajšave Slov. v podatkih pri imenih dveh občin (v zemljevidu se pojavi celotna beseda Slovenskih). Ko to poenotiš, bi se morale prikazati vse občine.

Kar se tiče časa zaganjanja na Binderju, je lahko ta večji pri prvem poganjanju, saj se mora najprej prenesti osnovna slika (kar vzame večino časa) in nato zgraditi slika s projektom. Pri vnovičnem zaganjanju se lahko potem uporabi že prenesena slika (ali pa celo že zgrajena končna slika), zaradi česar je zaganjanje bistveno hitrejše.

gapipust commented 4 years ago

Sem popravil uvoz (spregledal sem minimalno razliko v imenu funkcije) in preimenoval občine kar v datoteki uvoz, vendar pa mi zdaj javi napako v poročilu in mi ne izriše oz. obarva zemljevida.

jaanos commented 4 years ago

Problem se pojavi, ker funkcija read_csv (za razliko od read.csv) znakovnih stolpcev ne spremeni v faktorje, kar pričakuješ pri obdelavi imen občin v zemljevidu. Glede na to, da zemljevid rišeš z ggplot (in se zaradi tega imena po fortify velikokrat ponovijo), bo učinkoviteje, če delaš s faktorji. Po preimenovanju občin lahko torej narediš še

obcine$obcina <- factor(obcine$obcina)

Obenem bi opozoril še na vrstico https://github.com/gapipust/APPR-2019-20/blob/06a3c1bb84008ce3682c01474a51aa5331b862ec/uvoz/projekt_uvoz.r#L65 Tukaj imaš pred imenom občine odvečen tabulator, zaradi česar se ti preimenovanje ne izvede.

Seveda pa nekateri podatki manjkajo, tako da bodo nekatere občine vseeno ostale sive.

gapipust commented 4 years ago

Sem popravil in zdaj deluje normalno. Mislim, da je zdaj naloga pripravljena na predstavitev. Hvala za pomoč.

jaanos commented 4 years ago

V redu, bom dodal povezavo na repozitorij za zagovore. Če se še nisi, se lahko z @alenFMF domeniš za termin zagovora. Če boš do takrat še kaj spreminjal, mi javi, da posodobim povezavo.

Svetoval bi še, da se znebiš eksponentne notacije na oseh nekaterih grafov (glej https://github.com/laravidmar/APPR-2019-20/issues/4#issuecomment-589603210), pri napovedih pa ločiš dejanske podatke od napovednih točk (npr. z drugačno barvo ali obliko točk) ter izrišeš model (uporabi geom_smooth).

gapipust commented 4 years ago

Grafe sem popravil, da sedaj prikazujejo številke v normalnem formatu. Glede prileganja ne vem če bi bilo smiselno uporabiti funkcijo geom_smooth, saj se premica praktično ne bi ločila od napovedi. To sem sicer tudi že tudi poskušal, vendar pa sem imel težave, ker sta na enem grafu "2 spremenljivki y" in zato geom_smooth ne ve, kateri naj se prilega. Glede obarvanja točk pa me zanima, ali je možno pol točk iz tabele obarvati z eno in pol z drugo barvo, saj je v tabeli tudi nekaj dejanskih podatkov. Zaenkrat še ni treba posodabljati povezave, saj bi najprej rad še to razrešil.

katarinabrilej commented 4 years ago

Dejanske podatke od napovedi lahko ločiš tako, da v razpredelnici dodaš vrsto, torej ali so podatki ali napoved, in potem v grafu spremeniš obliko točk glede na vrsto.

vse_slo_nocitve_pr$vrsta <- "podatki"
vse_slo_nocitve1$vrsta <- "napoved"

Enako za Hrvaško.

vse_hrv_nocitve_pr$vrsta <- "podatki"
vse_hrv_nocitve1$vrsta <- "napoved"

V geom_point dodaš parameter shape = vrsta.

geom_point(aes(y=stevilo_slo, colour="Slovenija", shape = vrsta))
geom_point(aes(y=stevilo_hrv, colour="Hrvaška", shape = vrsta)) 
katarinabrilej commented 4 years ago

Pri graf9 je morda smiselno, da vključiš tudi leta pred 2016, saj si iz teh let naredil napoved (to pojasni zakaj je rdeča premica tako naraščajoča). Pri geom_smooth enako kot pri geom_point dodaš aes( y = stevilo_slo), tako bo vedel čemu se prilegati.

graf9 <- ggplot(vse_nocitve_pr, aes(x=leto)) + geom_point(aes(y=stevilo_slo, colour="Slovenija", shape = vrsta )) + 
  geom_point(aes(y=stevilo_hrv, colour="Hrvaška", shape = vrsta, group = "podatki")) + 
  scale_colour_manual("", values = c("Slovenija" = "blue", "Hrvaška" = "red")) + 
  ylab('predvideno število nocitev v prihodnosti') + 
  ggtitle('Napoved vseh nočitev za prihodnost') + 
  scale_x_continuous(breaks = 1*2010:2025) + 
  scale_y_continuous(labels=comma_format(big.mark="")) +
  geom_smooth(method = "lm"  ,aes(y = stevilo_slo,colour="Slovenija"))+
  geom_smooth(method = "lm" ,aes(y = stevilo_hrv, colour="Hrvaška"))
gapipust commented 4 years ago

Sem popravil in zdaj vse deluje (popravil sem tudi graf10 na enak način). Če lahko bi zdaj prosil, da se posodobi povezavo do repozitorija za ustne zagovore. Hvala

jaanos commented 4 years ago

V redu, sem posodibil povezavo.