#### Exercícios Reamostragem e Simulação #### ## Exercício 1. ## 1.1. Baixe o arquivo palmadulto.txt e leia os dados no R em um objeto chamado # eutad, não esqueça de conferir se o objeto de dados foi lido corretamente. eutad <- read.table("palmadulto.txt", header=TRUE) eutad str(eutad) plot(eutad$gx, eutad$gy) ## 1.2. Crie o objeto para guardar as distâncias entre cada indivíduo: dist=matrix(NA, ncol=102, nrow=102) dist ## 1.3. Calcule a distãncia observada entre cada indivíduo e guarde o resultados # em dist: for(i in 1:101) { for(j in (i+1):102) { difx2=(eutad$gx[i]-eutad$gx[j])^2 dify2=(eutad$gy[i]-eutad$gy[j])^2 dist[i,j]<-sqrt(difx2 + dify2) dist[j,i]<-sqrt(difx2 + dify2) } } dist ## 1.4. Verifique o objeto dist e calcule o parâmetro chamado de distância média # do vizinho mais próximo (MNN): (nn<-apply(dist, 1, min, na.rm=TRUE)) (mnn<-mean(nn)) ## Simulando # 1.5. Crie um vetor resultado, com 1000 NA's, para guardar os valores de # cada simulação. resultado <- rep(NA, 1000) # 1.6. Guarde o valor observado na primeira posição de resultado; resultado[1] <- mnn # 1.7. Crie um ciclo com contador (i) que vai de 2 a 1000; # 1.8. Dentro do ciclo: # 1.8.1. Crie o objetos xsim, um vetor com valores amostrados aleatoriamente # de uma distribuição uniforme de 0 a 320 (o tamanho x da parcela). Lembre-se # de sortear o mesmo quantidade de valores que a população de palmito observado; # 1.8.2. Faça o mesmo que no passo anterior e guarde no objeto ysim; # 1.8.3. Como no tópico anterior, crie uma matriz para guardar as distâncias # entre cada valor xy simulados; # 1.8.3. Crie os ciclos para o calculo das distâncias como no tópico anterior; # 1.8.4. Guarde o valor da distância média do vizinho mais próximo dos dados simulados na posição i do vetor resultado; # 1.8.5. Feche o ciclo. for(k in 2:1000) { xsim = round(runif(102,0,320),1) ysim = round(runif(102,0,320),1) dist = matrix(NA, ncol=102, nrow=102) for(i in 1:101) { for(j in (i+1):102) { difx2=(xsim[i] - xsim[j])^2 dify2=(ysim[i] - ysim[j])^2 dist[i,j] <- sqrt(difx2 + dify2) dist[j,i] <- sqrt(difx2 + dify2) } } resultado[k] <- mean(apply(dist, 1, min, na.rm=TRUE)) } resultado # 1.9. Faça um histograma dos valores simulados e coloque uma linha vermelha # vertical na posição do valor observado; hist(resultado) abline(v = resultado[1], col="red") # 1.10. Calcule a probabilidade do valor MNN observado ser gerado por uma # distribuição espacial aleatória. unicaudal=sum(resultado<=resultado[1]) unicaudal p.uni=unicaudal/length(resultado) p.uni ###### Exercício 2 - Aula 9 ######### DESAFIO animais <- read.table("animais.txt", as.is=T, header=T, sep=";" , dec=",") animais animais <- na.omit(animais) animais str(animais) ## 2.1. # Calcule a inclinação da relação log(brain) ~ log(body); plot(log(brain)~log(body), data=animais) anim.m1 <- lm(log(brain)~log(body),data=animais) anim.m1 abline(anim.m1, col="blue") coef.ob <- coef(anim.m1) inclina.ob = coef.ob[2] inclina.ob ## 2.2. # Crie um vetor para guardar o resultado de simulações; resultado <- rep(NA, 1000) resultado [1]<-inclina.ob ## 2.3. # Desordene o vetor brain e guarde no objeto sim_brain; ## 2.4. # Calcule a inclinação entre o log(sim_brain) ~ log(body) e guarde no vetor resultado; ## 2.5. # Feche o ciclo; for(i in 2:1000) { sim_brain <- (sample(animais$brain)) body <- animais$body coef.sim = coef(lm(log(sim_brain)~log(body))) resultado[i] = coef.sim[2] } ## 2.6. # Faça o histograma dos valores simulados e compare com o valor observado da inclinação da relação; hist(resultado) abline(v = resultado[1], col="red") ## 2.7. # Calcule a probabilidade da inclinação observada ter sido gerada por variáveis que são independentes; bicaudal=sum(result>=result[1]| result<=(result[1]*-1)) bicaudal length(result) p.bi=bicaudal/length(result) p.bi