# Fitting and projection datasets
fit_data <- raster::stack("../data/env/cropped_proj.tif")
A função tem que funcionar se a pessoa indicar o filename - o qual entra por um loop diferente do que apenas criar o objeto e deixá-lo no disco. nesse caso ela deve aceitar overwrite = T
args(euclidean)
## function (predictors, occurrences, env_dist = "centroid", filename = "",
## ...)
## NULL
centroide1 <- modleR::euclidean(predictors = fit_data,
occurrences = train_set[,c(2,3)],
env_dist = "centroid")
plot(centroide1)
#a unica diferença é o filename - que guarda diretamente no HD
centroide1hd <- modleR::euclidean(predictors = fit_data,
occurrences = train_set[,c(2,3)],
env_dist = "centroid",
filename = "./eucl/test_centroide.tif",
overwrite = T)
plot(centroide1hd)
compareRaster(centroide1, centroide1hd)#são iguais em efeito
## [1] TRUE
mindist1 <- modleR::euclidean(predictors = fit_data,
occurrences = train_set[,c(2,3)],
env_dist = "mindist")
mindist1hd <- modleR::euclidean(predictors = fit_data,
occurrences = train_set[,c(2,3)],
env_dist = "mindist",
filename = "./eucl/test_mindist.tif",
overwrite = T)
plot(mindist1)
#plot(mindist1hd)
compareRaster(mindist1, mindist1hd)
## [1] TRUE
##19Nov2019: isto nao deve rodar mais porque nao é mais algoritmo
setup <- setup_sdmdata(species_name = especies[1],
occurrences = coord1sp[, -1],
predictors = fit_data,
models_dir = "./eucl")
centroid_do_any <- do_any(species_name = especies[1],
predictors = fit_data,
write_png = T,
env_dist = "centroid",
models_dir = "./eucl")
mindist_do_any <- do_any(species_name = especies[1],
predictors = fit_data,
write_png = T,
env_dist = "mindist",
models_dir = "./eucl")
C <- raster("./eucl/Abarema_langsdorffii/present/partitions/centroid_cont_Abarema_langsdorffii_1_1.tif")
M <- raster("./eucl/Abarema_langsdorffii/present/partitions/mindist_cont_Abarema_langsdorffii_1_1.tif")
compareRaster(C, centroide1hd)
compareRaster(M, mindist1hd)
(blz tá fazendo bem dentro das funções do pacote)
Mas não dá pra projetar. Projetar seria:
[daí é que eu vou separar a função como domain e mahal e um dos slots vai ser o centroide e outro dos slots vai ser o resultado do extract #wishmeluck podendo separar acho que isto já é papitas –se nãõ der para fazer isso a função euclidean tem que devolver em return esses valores e projetar a partir daí - seria a solução S3 capenga - rodar duas vezes a função euclidean msa a segunda vc entra com centroide e com os valores do extract]
A lógica da distância ambiental (nos modelos e no buffer) é que deveria ter uma distância máxima para cortar o raster, ou nada do que varia do lado de maior adequabilidade (menor distância) vai poder ser observado. Isto porque a distribuição dos valores pode ser particular. Aqui vou usar centroid e mindist junto com mahal de dismo como um padrão do que já está estabelecido.
Faço esses três modelos e vejo
Centroide varia menos abruptamente, depois vem mindist e depois mahal (Mahal tem a distribuição de valores mais asimétrica), mas o maior problema é a visualização dos valores, os valores negativos fazem com que a adequabilidade alta fique invisível. Por isso Mahalanobis é a mais diferente mas também a menos interessante em termos de padrão geográfico (sem cortar)
Basicamente fitar uma função empirica da distribuição, extrair o ponto com menor adequabilidade e ver onde esse valor se encontra entre os valores. Estou usando LPT porque uma primeira alternativa era cortar pelo LPT = fazer com que esse valor fosse automaticamente a distância máxima - isso era um pouco arbitrário mas buscava obter uma distância máxima que ainda tivesse algum significado biológico para a espécie.
Fn_cen <- ecdf(df$cen) #fita a função
excen <- extract(centroide_original, coord1sp[,c(2,3)])
(LPT_cen <- min(excen))
## [1] -2.820854
Fn_cen(LPT_cen)#vê onde fica o mínimo
## [1] 0.4074534
Fn_min <- ecdf(df$min)
exmin <- extract(mindist_original, coord1sp[,c(2,3)])
(LPT_min <- min(exmin))
## [1] 0.02335842
Fn_min(LPT_min)
## [1] 0.7594015
Fn_mah <- ecdf(df$mah)
exmah <- extract(mahal_original, coord1sp[,c(2,3)])
(LPT_mah <- min(exmah))
## [1] -3.933855
Fn_mah(LPT_mah)
## [1] 0.7233202
par(mfrow = c(1, 3))
plot(sort(df$cen), main = "centroid")
abline(v = sum(!is.na(df$cen)) * Fn_cen(LPT_cen), col = "red")
plot(sort(df$min), , main = "mindist")
abline(v = sum(!is.na(df$min)) * Fn_min(LPT_min), col = "red")
plot(sort(df$mah), , main = "mahal")
abline(v = sum(!is.na(df$mah)) * Fn_mah(LPT_mah), col = "red")
buf_env <- create_buffer(species_name = especies,
occurrences = coord1sp[, -1],
predictors = fit_data,
buffer_type = "none",
env_distance = "centroid",
max_env_dist = 0.7,
write_buffer = T)
plot(fit_data[[1]])
plot(buf_env, alpha = 0.8, add = T)
plot(buf_env)