Errors: incorrect number of dimensions when using BIOMOD_Modeling()

250 Views Asked by At

I recently start learning how to use biomod2 package, with latest version, 4.2-3. I try to fit a model using the GBM algorithm in BIOMOD_Modeling() from the package biomod2. I've checked the help file and googled for the error. However, the error seems to be a general error, so that I can't figure out what happened when carry out the function. I Expected the function can build a correct model.

For species data, I subset species Acacia confusa from vegetation database, with 1 means presence and 0 means absence. There are totally 7796 plots. I have checked that there is no any NA. If need more details about the data, please let me know.

> dim(test_spe)
[1] 7796    1
>
> head(test_spe)
# A tibble: 6 x 1
  `Acacia confusa`
             <dbl>
1                0
2                0
3                0
4                0
5                0
6                1

For environmental data, there is a mean annual temperature (MAT) for each plot.

> dim(test_env)
[1] 7796    1
>
> head(test_env)
       MAT
1 19.08279
2 19.08279
3 19.08279
4 20.02513
5 19.08279
6 17.25201

Next, I prepare data and settings for the modeling.

> data4biomod = BIOMOD_FormatingData(
+   resp.var = test_spe,  # Presence absence data, can only be one species
+   expl.var = test_env,  # Environmental variable
+   resp.name = "Acacia.confusa"  # Name of the modeled species
+ )

-=-=-=-=-=-=-=-=-=-=-=-=-=-= Acacia.confusa Data Formating -=-=-=-=-=-=-=-=-=-=-=-=-=-=

> No pseudo absences selection !
      ! No data has been set aside for modeling evaluation
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Done -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
>
> settings4biomod = BIOMOD_ModelingOptions()  # Use the default settings

Last, the error occurs when I fit the model.

> biomod = BIOMOD_Modeling(
+   bm.format = data4biomod,  # Data used to build model
+   modeling.id = "testing",  # Name of the output model
+   models = c("GBM"),  # Algorithms
+   bm.options = settings4biomod,  # Settings for algorithms
+   nb.rep = 1,  # How many times to repeat the algorithms
+   data.split.perc = 100,  # Percentages for cross-validation, 100 means no cv
+ )

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Build Single Models -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=


Checking Models arguments...
Warning in .BIOMOD_Modeling.check.args(bm.format, modeling.id, models, bm.options,  :
  The models will be evaluated on the calibration data only (nb.rep=0 and no independent data) 
     It could lead to over-optimistic predictive performances.


Creating suitable Workdir...

    > Automatic weights creation to rise a 0.5 prevalence


-=-=-=-=-=-=-=-=-=-=-=-=-= Acacia.confusa Modeling Summary -=-=-=-=-=-=-=-=-=-=-=-=-=

 1  environmental variables ( MAT )
Number of evaluation repetitions : 1
Models selected : GBM 

Total number of model runs: 1 

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=


-=-=-=- Run :  Acacia.confusa_allData 


-=-=-=--=-=-=- Acacia.confusa_allData_allRun 

Model=Generalised Boosting Regression 
     2500 maximum different trees and  3  Fold Cross-Validation
    > GBM modeling...CV: 1 
Error in x[i.train, , drop = TRUE][i, , drop = FALSE] : 
  incorrect number of dimensions
Error in h(simpleError(msg, call)) : 
  在為 'predict' 函式選擇方法時評估 'object' 引數發生錯誤: object 'model.bm' not found 

*** inherits(g.pred,'try-error')
   ! Note :  Acacia.confusa_allData_allRun_GBM failed!

! All models failed

The same data can be used for GAM and GLM algorithms in BIOMOD_Modeling().

Whole code as below (no raw data):

data4biomod = BIOMOD_FormatingData(
  resp.var = test_spe,  # Presence absence data, can only be one species
  expl.var = test_env,  # Environmental variable
  resp.name = "Acacia.confusa"  # Name of the modeled species
)

settings4biomod = BIOMOD_ModelingOptions()  # Use the default settings

biomod = BIOMOD_Modeling(
  bm.format = data4biomod,  # Data used to build model
  modeling.id = "testing",  # Name of the output model
  models = c("GBM"),  # Algorithms
  bm.options = settings4biomod,  # Settings for algorithms
  nb.rep = 1,  # How many times to repeat the algorithms
  data.split.perc = 100,  # Percentages for cross-validation, 100 means no cv
)
1

There are 1 best solutions below

0
HsunHung Chu On BEST ANSWER

GAM algorithms in biomod2 package can't deal with the data with only one explained variable. The problem can be solved by downloading the package released by @raptin!!

For more details, please check the issue on GitHub.