Seite 1 von 1

Predict Funktion

Verfasst: Di Apr 21, 2020 4:24 pm
von R_123
Hallo,

ich möchte die Vorhersage der Abundanz einer Art in einer Karte plotten. Ich habe die gbm. step Funktion benutzt.

Code: Alles auswählen

modell_N_M_raster_2 <- gbm.step(
  data= data_wG,
  gbm.x = 2:6 , 
  gbm.y = 1,
  family = "poisson",
  tree.complexity = 3,
  max.trees = 1000,
  learning.rate = 0.001,
  bag.fraction = 0.5,
  n.folds = 5,
  plot.main=T)
Das sind meine verwendeten Daten für das Modell:

Code: Alles auswählen

> str(data_wG)
'data.frame':	90 obs. of  7 variables:
 $ ges.abundanz: int  2304 2047 1568 1120 1952 1280 1856 1247 1696 1248 ...
 $ Slope       : num  1.4 1.3 1.5 1.7 2 3.7 3.6 0.3 0.3 3.4 ...
 $ Landuse     : Factor w/ 2 levels "arable land",..: 1 1 1 1 1 2 2 2 2 2 ...
 $ TWI         : num  7.4 6.4 6.4 6.1 7 6.2 6.7 7.4 7.4 6 ...
 $ HLI         : num  0.7 0.8 0.73 0.94 0.03 0.11 0.36 0.33 0.19 0.31 ...
 $ Geology     : Factor w/ 4 levels "SA","SC","AV",..: 1 2 3 4 4 4 4 4 4 4 ...
 $ Site_ID     : chr  "Nov_1_1" "Nov_1_2" "Nov_1_3" "Nov_1_4" ...

Code: Alles auswählen

pred.abundance_HW_3 <- predict(caos_brick_2, modell_N_M_raster_2 ,n.trees=1000,  
                               na.rm =T, type = "response", )
caos_brick_2 besteht aus folgenden Raster Layern:

Code: Alles auswählen

  caos_brick_2<-brick(landuse, slope, twi,hli, geologie) 
 

So sieht mein Layer "geologie" genau aus.

Code: Alles auswählen

> str(geologie)
Formal class 'RasterLayer' [package "raster"] with 12 slots
  ..@ file    :Formal class '.RasterFile' [package "raster"] with 13 slots
  .. .. ..@ name        : chr "/Users/MAXVN/Desktop/Bachelorarbeit2/geologie.asc"
  .. .. ..@ datanotation: chr "FLT4S"
  .. .. ..@ byteorder   : chr "little"
  .. .. ..@ nodatavalue : num -9999
  .. .. ..@ NAchanged   : logi FALSE
  .. .. ..@ nbands      : int 1
  .. .. ..@ bandorder   : chr "BIL"
  .. .. ..@ offset      : int 6
  .. .. ..@ toptobottom : logi TRUE
  .. .. ..@ blockrows   : int 0
  .. .. ..@ blockcols   : int 0
  .. .. ..@ driver      : chr "ascii"
  .. .. ..@ open        : logi FALSE
  ..@ data    :Formal class '.SingleLayerData' [package "raster"] with 13 slots
  .. .. ..@ values    : logi(0) 
  .. .. ..@ offset    : num 0
  .. .. ..@ gain      : num 1
  .. .. ..@ inmemory  : logi FALSE
  .. .. ..@ fromdisk  : logi TRUE
  .. .. ..@ isfactor  : logi FALSE
  .. .. ..@ attributes: list()
  .. .. ..@ haveminmax: logi FALSE
  .. .. ..@ min       : num Inf
  .. .. ..@ max       : num -Inf
  .. .. ..@ band      : int 1
  .. .. ..@ unit      : chr ""
  .. .. ..@ names     : chr ""
  ..@ legend  :Formal class '.RasterLegend' [package "raster"] with 5 slots
  .. .. ..@ type      : chr(0) 
  .. .. ..@ values    : logi(0) 
  .. .. ..@ color     : logi(0) 
  .. .. ..@ names     : logi(0) 
  .. .. ..@ colortable: logi(0) 
  ..@ title   : chr(0) 
  ..@ extent  :Formal class 'Extent' [package "raster"] with 4 slots
  .. .. ..@ xmin: num 45806
  .. .. ..@ xmax: num 71906
  .. .. ..@ ymin: num 85296
  .. .. ..@ ymax: num 101996
  ..@ rotated : logi FALSE
  ..@ rotation:Formal class '.Rotation' [package "raster"] with 2 slots
  .. .. ..@ geotrans: num(0) 
  .. .. ..@ transfun:function ()  
  ..@ ncols   : int 522
  ..@ nrows   : int 334
  ..@ crs     :Formal class 'CRS' [package "sp"] with 1 slot
  .. .. ..@ projargs: chr NA
  ..@ history : list()
  ..@ z       : list()
Die Vorhersage des Modells auf das Raster funktioniert und mit der Funktion plot wird mir die Karte auch dargestellt. Aber ich möchte auf meiner Karte nur die Zellen darstellen, die bei dem Rasterlayer "geologie" den Wert 4 von 4 möglichen Werten und bei Landuse nur den Wert 1 und 2 von 3 möglichen Werten.

Ich habe es so probiert aber leider keinen Erfolg gehabt:

Code: Alles auswählen

pred.abundance_HW_3 <- predict(caos_brick_2, modell_N_M_raster_2 ,n.trees=1000,  
                               na.rm =T, type = "response", geologie==1, landuse==1,2)

Ich hoffe es ist deutlich geworden was meine Frage ist. Ich danke im Voraus für Tipps. :D

Re: Predict Funktion

Verfasst: Di Apr 21, 2020 5:33 pm
von EDi
Aber ich möchte auf meiner Karte nur die Zellen darstellen, die bei dem Rasterlayer "geologie" den Wert 4 von 4 möglichen Werten und bei Landuse nur den Wert 1 und 2 von 3 möglichen Werten.
Wieso machst du die Einschränkung nicht nach der Vorhersage? Die ändert sich ja nicht, man zeigt nur weniger...

Re: Predict Funktion

Verfasst: Di Apr 21, 2020 6:21 pm
von R_123
Das habe ich auch schon versucht aber mir fehlt die richtige Funktion bzw. die genaue Ausführung. Zu dem Thema Plotten von Raster Layern habe ich auch nicht viel gefunden.
Ich habe folgendes z.B. ausprobiert.

Code: Alles auswählen

ggplot( geom_area(data= pred.abundance_HW_3, aes(Landuse, 1)))
Fehler: `data` must be a data frame, or other object coercible by `fortify()`, not an S4 object with class RasterLayer
Ich bin dankbar für jeden Tipp.