i try predict forest stand types (n=43 classes coding landform, geology, water- , nutrient supply etc.) on large 1027206000 cell raster randomforests.
among many dem derived parameters using covariates, have 2 rasters id numbers of geological map , soil map. many categorical mapping units go ids. train models dataframe , attach categorical mapping units "merge" it.
so far ok. model should , can predict test data held in dataframe too.
but intent make maps of predictions. when running model rasterstack or brick gives rasters na's. impression is, wrong in passing factor levels rasterstack/rasterbrick.
her code reproduces problem.
library(raster) library(rastervis) library(randomforest) # make raster set.seed(0) r <- raster(nrow=10, ncol=10) r[] <- runif(ncell(r)) * 10 is.factor(r) r <- round(r) # make faktor f <- as.factor(r) is.factor(f) # none-sense levels x <- levels(f)[[1]] x$code <- paste("a",letters[10:20]) x$code2 <- paste("b",letters[10:20]) x$code3 <- letters[10:20] levels(f) <- x f<-deratify(f) # make brick levels(f) set.seed(2) # none-sense dataframe xx<-data.frame(code=sample(rep(paste("a",letters[10:20]),10)), code2=sample(rep(paste("b",letters[10:20]),10)), code3=rep( letters[10:20],10), y=as.factor(sample(rep(paste(rep(1:5)),22)))) # fit , predict random forest ranfor<-randomforest(y~.,data=xx,ntree=100) predict(ranfor) # try predict raster names(f)<-c("code","code2","code3") a<-predict(object=f,ranfor,na.omit=t,factors=list(code=levels(xx$code), code2=levels(xx$code2), code3=levels(xx$code3))) plot(a) # gives empty raster # convert raster dataframe , predict again x<-as.data.frame(f) names(x)<-c("code","code2","code3") aa<-predict(ranfor,x) plot(aa) # works fine! any suggestions? thank you!
r version 3.1.2 (2014-10-31) platform: x86_64-w64-mingw32/x64 (64-bit) locale: [1] lc_collate=english_united states.1252 lc_ctype=english_united states.1252 lc_monetary=english_united states.1252 [4] lc_numeric=c lc_time=english_united states.1252 attached base packages: [1] stats graphics grdevices utils datasets methods base other attached packages: [1] randomforest_4.6-10 rastervis_0.35 latticeextra_0.6-26 rcolorbrewer_1.1-2 lattice_0.20-33 raster_2.4-15 sp_1.1-1 loaded via namespace (and not attached): [1] grid_3.1.2 hexbin_1.27.0 rcpp_0.11.6 rgdal_1.0-4 tools_3.1.2 zoo_1.7-12
to solve problems, created rasters of categorical variables after recoded factors levels character strings "numeric" levels . predict:raster job. however, pretty poor solution problem. still: appreciated!
Comments
Post a Comment