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çosimulaçã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.nsimambiente 1)x_mort[i] e y_mort[i] em simulaçãox_col[i] e y_col[i] em simulaçãonsim.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.nsimambiente*i.nichox_mort[i] e y_mort[i] em simulaçãoi.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çãoUtilizando 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çoterá 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.nsimambientex_mort[i] e y_mort[i] em simulaçãoespaço sorteadax_col[i] e y_col[i] em simulaçãoespaço sorteadansimx_mort[i] e y_mort[i] em simulaçãoespaço sorteadaespaço sorteadax_col[i] e y_col[i] em simulaçãoambiente, 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.nsimx_mort[i] e y_mort[i] em simulaçãoespaço sorteadaespaço sorteadax_col[i] e y_col[i] em simulaçãoplot = 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