Dois processos principais atuam determinando a estrutura espacial de populações vegetais: os processos ligados ao nicho (ou seja, em que a estrutura ambiental seria o principal fator para o estabelecimento de um indivíduo em um determinado local) e os processos neutros (em que o principal fator seria a limitação de dispersão). Segundo Janzen–Connell, a probabilidade de um propágulo alcançar e sobreviver um determinado local segue a distribuição de poisson.
Ao longo de muitos anos na literatura se debateu qual destes dois processos seria mais importante e atualmente se considera que ambos podem ocorrer simultaneamente.
Proponho na minha função simular a dinâmica de uma população vegetal segundo os modelos de nicho, neutro e ambos simultaneamente. Neste caso estamos interessados principalmente no padrão espacial final, mas seria possível também acessar as simulações intermediárias. Para isto, pensei em fazer a função de duas maneiras diferentes:
Utilizando espaço contínuo
Prós: seria mais fácil visualizar padrões de agregação em qualquer xmax e ymax
Contras: Não tenho certeza de como transformaria as informações da matriz ambiente para espaço contínuo. Essa ideia está menos estruturada na minha cabeça.
nichoneutro(N, modelo, nsim, xmax, ymax, plot = TRUE, i.neutro, i.nicho)
n
= número de indivíduos (classe: integer, N > 0).nsim
= Numero de iterações da simulação (classe: integer, N > 0).modelo
= Modelo a ser escolhido (classe character: “nicho”
, “neutro”
, “nichoeneutro”
).xmax
= x máximo (classe: integer, N > 0).ymax
= y máxima (classe: integer, N > 0).plot
= lógico. Se verdadeiro retorna gráfico final da distribuição espacial.i.nicho
= influência proporcional dos processos relacionados a nicho (classe numeric 0 < i.nicho < 1).i.neutro
= influência proporcional dos processos neutros (classe numeric 0 < i.neutro < 1).n
é um número inteiro e maior que 0? Se não, escreve: “N precisa ser um número inteiro e > 0.”nsim
é um número inteiro e maior que 0? Se não, escreve: “Nsim precisa ser um número inteiro e > 0.”modelo
é um character contendo “nicho”
, “neutro”
ou “nichoeneutro”
? Se não, escreve “modelo precisa ser um caracter contendo “nicho”
, “neutro”
ou “nichoeneutro”
.xmax
é um número inteiro e maior que 0? Se não, escreve: “xmax precisa ser um número inteiro e > 0.”ymax
é um número inteiro e maior que 0? Se não, escreve: “ymax precisa ser um número inteiro e > 0.”n
é menor que nrow*ncol? Se não, retorna “não há espaço para tantas arvores. Diminua N ou aumente nrow e/ou ncol.”plot
é lógico? Se não, escreve “plot precisa ser lógico.”i.neutro
< 1? Se não, escreve “i.neutro
deve ser entre 0 e 1.”i.nicho
< 1? Se não, escreve “i.neutro
deve ser entre 0 e 1.”i.nicho
e i.neutro
estão sendo utilizados quando modelo
= “nicho”
ou “neutro”
? Se sim, escreve “Os argumentos i.nicho e i.neutro não estão sendo utilizados”.i.nicho
+ i.neutro
= 1? Se não, escreve “a soma de i.nicho e i.neutro deve ser 1.”espaço
, um dataframe com n
linhas e 2
colunas (x e y) contendo apenas 0.espaço
simulação
com nsim
linhas e quatro colunas: x_mort
, y_mort
, x_col
, y_col
, contendo NAs
.ambiente
, uma matriz com ymax
linhas e xmax
colunas. Geração de gradiente ambiental adaptando da função cria_gradiente.r. A matriz terá valores entre 0 e 1 que estarão associadas a probabilidade de mortalidade naquela posição.nsim
ambiente
1)x_mort[i]
e y_mort[i]
em simulação
x_col[i]
e y_col[i]
em simulação
nsim
.x_mort[i]
e y_mort[i]
em simulação
.espaço
, sobrescrevendo a que morreux_col[i]
e y_col[i]
em simulação
.ambiente
, uma matriz com ymax
linhas e xmax
colunas. Geração de gradiente ambiental adaptando da função cria_gradiente.r. A matriz terá valores entre 0 e 1 que estarão associadas a probabilidade de mortalidade naquela posição.nsim
ambiente*i.nicho
x_mort[i]
e y_mort[i]
em simulação
i.neutro
.espaço
, sobrescrevendo a que morreux_col[i]
e y_col[i]
em simulação
.plot = TRUE
, Gera gráfico em que cada cédula corresponde a uma posição da matriz espaço
ao final de todas iterações. Coloca um ponto em cada cédula que apresenta 1. Se modelo = “nicho”
ou “nichoeneutro”
também coloca em escalas de cores a probabilidade de mortalidade associada aquela posição.simulação
Utilizando matrizes para indicar a localização dos pontos.
Prós: talvez seja mais simples fazer um gradiente ambiental associado a posição de cada ponto, uma vez que cada ponto deespaço
terá sua correspondência na matrizambiente
Contras: seria necessário ncol e nrow muito grandes para verificar alguma estrutura espacial
nichoneutro(N, modelo, nsim, ncol, nrow, plot = TRUE, i.neutro, i.nicho)
n
= número de indivíduos (classe: integer, N > 0).nsim
= Numero de iterações da simulação (classe: integer, N > 0).modelo
= Modelo a ser escolhido (classe character: “nicho”
, “neutro”
, “nichoeneutro”
).ncol
= número de colunas de habitat da paisagem (classe: integer, N > 0).nrow
= número de linhas de habitat da paisagem (classe: integer, N > 0).plot
= lógico. Se verdadeiro retorna gráfico final da distribuição espacial.i.nicho
= influência proporcional dos processos relacionados a nicho (classe numeric 0 < i.nicho < 1).i.neutro
= influência proporcional dos processos neutros (classe numeric 0 < i.neutro < 1).n
é um número inteiro e maior que 0? Se não, escreve: “N precisa ser um número inteiro e > 0.”nsim
é um número inteiro e maior que 0? Se não, escreve: “Nsim precisa ser um número inteiro e > 0.”modelo
é um character contendo “nicho”
, “neutro”
ou “nichoeneutro”
? Se não, escreve “modelo precisa ser um caracter contendo “nicho”
, “neutro”
ou “nichoeneutro”
.ncol
é um número inteiro e maior que 0? Se não, escreve: “ncol precisa ser um número inteiro e > 0.”nrow
é um número inteiro e maior que 0? Se não, escreve: “nrow precisa ser um número inteiro e > 0.”plot
é lógico? Se não, escreve “plot precisa ser lógico.”i.neutro
< 1? Se não, escreve “i.neutro
deve ser entre 0 e 1.”i.nicho
< 1? Se não, escreve “i.neutro
deve ser entre 0 e 1.”i.nicho
e i.neutro
estão sendo utilizados quando modelo
= “nicho”
ou “neutro”
? Se sim, escreve “Os argumentos i.nicho e i.neutro não estão sendo utilizados”.i.nicho
+ i.neutro
= 1? Se não, escreve “a soma de i.nicho e i.neutro deve ser 1.”espaço
, uma matriz com nrow
linhas e ncol
colunas contendo apenas 0.n
posições de espaço e atribuição de 1 para as posições sorteadas.simulação
com nsim
linhas e quatro colunas: x_mort
, y_mort
, x_col
, y_col
, contendo NAs
.ambiente
, uma matriz com nrow
linhas e ncol
colunas. Geração de gradiente ambiental adaptando da função cria_gradiente.r. A matriz terá valores entre 0 e 1 que estarão associadas a probabilidade de mortalidade naquela posição.nsim
ambiente
x_mort[i]
e y_mort[i]
em simulação
espaço
sorteadax_col[i]
e y_col[i]
em simulação
espaço
sorteadansim
x_mort[i]
e y_mort[i]
em simulação
espaço
sorteadaespaço
sorteadax_col[i]
e y_col[i]
em simulação
ambiente
, uma matriz com nrow
linhas e ncol
colunas. Geração de gradiente ambiental adaptando da função cria_gradiente.r. A matriz terá valores entre 0 e 1 que estarão associadas a probabilidade de mortalidade naquela posição.nsim
x_mort[i]
e y_mort[i]
em simulação
espaço
sorteadaespaço
sorteadax_col[i]
e y_col[i]
em simulação
plot = TRUE
, gera gráfico em que cada cédula corresponde a uma posição da matriz espaço
ao final de todas iterações. Coloca um ponto em cada cédula que apresenta 1. Se modelo = “nicho”
ou “nichoeneutro”
também coloca em escalas de cores a probabilidade de mortalidade associada aquela posição.simulação