User:Sharp

From Opasnet
Revision as of 20:00, 31 August 2015 by Sharp (talk | contribs)
Jump to navigation Jump to search

Ajokelpoinen, antaa ymmärrykseni mukaan varsin oikeanlaisia tuloksia. Käyttöliittymä ja mallin tulosten uploadaus täytyy vielä tehdä.

library(OpasnetUtils)

data <- opbase.data(id="op_en4004.kerty_database")

  1. Otetaan mukaan vain yksilömittaukset

hdata <- data[data$Yksilöitä < 2,]

  1. Jätetään datasta pois sukupuolet, määrät ja muut tarpeettomat? sarakkeet

hdata <- hdata[c(1,2,7,8,9,10,11,15,16,17,20,21)]

  1. Eliminoidaan käyttökelvoton data

hdata <- hdata[hdata$Märkäpaino != 0,]

  1. Analysoidaan vain lihaskudosta

hdata <- hdata[hdata$Näyteosa == "lihas",]

  1. Analysoidaan vain elohopeaa

hdata <- hdata[hdata$Suure == "Elohopea",]

  1. Tutkitaan koodausvaiheessa pienempää otosta

otos <- hdata #hdata[1:2000,]

  1. Muutetaan tulossarake numeroiksi ja...

otos$Tulos <- as.numeric(levels(otos$Tulos))[otos$Tulos]

  1. poistetaan sieltä ei-numeeriset vastaukset

otos <- otos[!is.na(otos$Tulos),]

  1. Käsitellään tässä vaiheessa vasta järvet, tarkennetaan myöhemmin

otos <- otos[otos$Järvi != "",]

  1. Poistetaan otoksen faktoreista tarpeettomat levelit

for (column in 1:ncol(otos)){ if (is.factor(otos[,column])) { otos[,column] <- factor(otos[,column]) } }

  1. Luodaan vektorit kalojen nimiä ja keskipitoisuuksia varten

kala <- vector(length = length(levels(otos$Näytelaji))) keskipitoisuus <- vector(length = length(levels(otos$Näytelaji))) indeksi <- 0

  1. Silmukassa käydään laji kerrallaan kalat läpi ja otetaan niiden keskimääräinen elohopeapitoisuus talteen

for (laji in levels(otos$Näytelaji)) { indeksi <- indeksi + 1 temp <- otos[otos$Näytelaji == laji,] kala[indeksi] <- laji keskipitoisuus[indeksi] <- mean(temp$Tulos) }

  1. Luodaan vektoreista data.frame

kalaframe <- data.frame(kala, keskipitoisuus, stringsAsFactors = FALSE)


järvi <- vector(length = length(levels(otos$Järvi))) keskipitoisuus <- vector(length = length(levels(otos$Järvi))) indeksi <- 0

  1. Silmukassa käydään järvi kerrallaan järvet läpi ja otetaan niiden kalojen keskimääräinen elohopeapitoisuus talteen

for (vesistö in levels(otos$Järvi)) { indeksi <- indeksi + 1 temp <- otos[otos$Järvi == vesistö,] järvi[indeksi] <- vesistö keskipitoisuus[indeksi] <- mean(temp$Tulos) }

järviframe <- data.frame(järvi, keskipitoisuus, stringsAsFactors = FALSE)

  1. Lisätään dataframeihin koko suomeen suhteutettu pitoisuus

suht <- kalaframe$keskipitoisuus - mean(otos$Tulos) suhtkala <- cbind(kalaframe, suht)

suht <- järviframe$keskipitoisuus - mean(otos$Tulos) suhtjärvi <- cbind(järviframe, suht)

keskipitoisuus <- mean(otos$Tulos)

  1. Tässä kohti voisi uploadata asiat
  2. Tähän kohti käyttöliittymä jolla tarkastaa asioita.


  1. järvi <- vector(length = 23*513)
  2. kala <- järvi
  3. pitoisuus <- järvi
  4. indeksi <- 0
  5. for (vesistö in järviframe$järvi){
  6. for (laji in kalaframe$kala){
  7. indeksi <- indeksi + 1
  8. järvi[indeksi] <- vesistö
  9. kala[indeksi] <- laji
  10. keski <- mean(otos$Tulos)
  11. fisu <- suhtkala[suhtkala$kala == laji,]$suht
  12. lampi <- suhtjärvi[suhtjärvi$järvi == vesistö,]$suht
  13. pitoisuus[indeksi] <- keski + fisu + lampi
  14. }
  15. }
  1. testiframe1 <- data.frame(järvi, kala, pitoisuus, stringsAsFactors = FALSE)


  1. Tämä pätkä tarkastaa mallin antaman tuloksen suhteutettuna koko suomeen,
  2. ja virhearvoksi saadaan -2.702283e-13.
  3. summa <- 0
  4. keski <- mean(otos$Tulos)
  5. for (vesistö in levels(otos$Järvi)){
  6. for (laji in levels(otos$Näytelaji)){
  7. temp <- otos[otos$Järvi == vesistö,]
  8. temp <- temp[temp$Näytelaji == laji,]
  9. temp2 <- testiframe1[testiframe1$järvi == vesistö,]
  10. pitoisuus <- temp2[temp2$kala == laji,]$pitoisuus
  11. for (tulos in temp$Tulos){
  12. summa <- summa + (tulos - pitoisuus)
  13. }
  14. }
  15. }
  1. summary(kalaframe)
  2. summary(järviframe)

</rcode>