User:Sharp: Difference between revisions

From Opasnet
Jump to navigation Jump to search
No edit summary
No edit summary
Line 1: Line 1:
Koodi on keskeneräinen, mutta antaa kyllä nättejä tuloksia esim:
Ajokelpoinen, antaa ymmärrykseni mukaan varsin oikeanlaisia tuloksia. Käyttöliittymä ja mallin tulosten uploadaus täytyy vielä tehdä.


> summary(kalaframe)
library(OpasnetUtils)
    kala          keskipitoisuus 
Length:16          Min.  :0.0350 
Class :character  1st Qu.:0.3175 
Mode  :character  Median :0.5058 
                    Mean  :0.5965 
                    3rd Qu.:0.7809 
                    Max.  :1.9400 
> summary(järviframe)
    järvi          keskipitoisuus 
Length:77          Min.  :0.0450 
Class :character  1st Qu.:0.2633 
Mode  :character  Median :0.4100 
                    Mean  :0.5736 
                    3rd Qu.:0.7400 
                    Max.  :2.2996 


<rcode>
data <- opbase.data(id="op_en4004.kerty_database")
data <- opbase.data(id="op_en4004.kerty_database")
# Otetaan mukaan vain yksilömittaukset
# Otetaan mukaan vain yksilömittaukset
Line 37: Line 20:


# Tutkitaan koodausvaiheessa pienempää otosta
# Tutkitaan koodausvaiheessa pienempää otosta
otos <- hdata[1:2000,]
otos <- hdata #hdata[1:2000,]


# Muutetaan tulossarake numeroiksi ja...
# Muutetaan tulossarake numeroiksi ja...
Line 84: Line 67:
järviframe <- data.frame(järvi, keskipitoisuus, stringsAsFactors = FALSE)
järviframe <- data.frame(järvi, keskipitoisuus, stringsAsFactors = FALSE)


summary(kalaframe)
# Lisätään dataframeihin koko suomeen suhteutettu pitoisuus
summary(järviframe)
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)
 
#Tässä kohti voisi uploadata asiat
#Tähän kohti käyttöliittymä jolla tarkastaa asioita.
 
 
#järvi <- vector(length = 23*513)
#kala <- järvi
#pitoisuus <- järvi
#indeksi <- 0
#for (vesistö in järviframe$järvi){
# for (laji in kalaframe$kala){
# indeksi <- indeksi + 1
# järvi[indeksi] <- vesistö
# kala[indeksi] <- laji
# keski <- mean(otos$Tulos)
# fisu <- suhtkala[suhtkala$kala == laji,]$suht
# lampi <-  suhtjärvi[suhtjärvi$järvi == vesistö,]$suht
# pitoisuus[indeksi] <-  keski + fisu + lampi
# }
#}
 
#testiframe1 <- data.frame(järvi, kala, pitoisuus, stringsAsFactors = FALSE)
 
 
# Tämä pätkä tarkastaa mallin antaman tuloksen suhteutettuna koko suomeen,
# ja virhearvoksi saadaan -2.702283e-13.
#summa <- 0
#keski <- mean(otos$Tulos)
#for (vesistö in levels(otos$Järvi)){
# for (laji in levels(otos$Näytelaji)){
# temp <- otos[otos$Järvi == vesistö,]
# temp <- temp[temp$Näytelaji == laji,]
#
# temp2 <- testiframe1[testiframe1$järvi == vesistö,]
# pitoisuus <- temp2[temp2$kala == laji,]$pitoisuus
#
# for (tulos in temp$Tulos){
# summa <- summa + (tulos - pitoisuus)
# }
# }
#}
 
#summary(kalaframe)
#summary(järviframe)
</rcode>
</rcode>
En suosittele ajamaan, mutta tästä jatkan.

Revision as of 20:00, 31 August 2015

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>