##Exercicio 8.1 Palmito Adulto ##Bruno Sandy eutad = read.table("palmadulto.txt", header=T, sep="\t", dec=".", as.is=T) getwd() setwd("C:/Users/bruno/OneDrive/R") eutad #crie o objeto para guardar as distancias de cada individuo dist=matrix(NA,ncol=102,nrow=102) dist #calcule a distancia observada entre cada individuo e guarde o resultado em dist for(i in 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) } } ##Verifique o objeto dist e calcule o chmada de distancia media do vizinho mais proximo MNN (nn <- apply(dist,1, min, na.rm=TRUE)) (mnn <- mean(nn)) ##Simulando Até agora calculamos o valor esperado da distância media do vizinho mais proximo Vamos seguir o passo-a-passo: #8.1.5 Crie um vetor RESULTADO com 1000 NAs para guardar os valores de cada simulação resultado <- rep(NA,1000) resultado #8.1.6 Guarde o valor observado na primeira posição de RESULTADO resultado[1]=mnn #8.1.7 Crie um ciclo com contador (k) que vai de 2 a 1000 for(k in 2:1000){ xsim=runif(100,0,320) #aqui sorteia 100 valores que vai de 0 a 320 ysim=runif(100,0,320) # o mesmo para o y dist.xy=matrix(NA, ncol=100, nrow=100) #aqui criamos a matriz 100x100 xy para guardar os resultados for(i in 1:99){ #aqui calcularemos a distancia para cada vizinho difx2.sim=(xsim[i]-xsim[k])^2 dify2.sim=(ysim[i]-ysim[k])^2 distsim[k,i]=sqrt(difx2.sim+dify2.sim) distsim[i,k]=sqrt(difx2.sim+dify2.sim) } } (dist.minima <- apply(dist.xy,1,min,na.rm=TRUE)) #aqui teremos a distancia minima para cada palmito e me remova todos os NAs mean.dist.xy <- mean(dist.minima) #aqui teremos o valor da média do vizinho mais próximo levando como base a matrix 100x100 xy resultado[k] <- mean.dist.xy #aqui guardamos o valor da média no vetor chamado resultado[k] como dito no enunciado } #8.1.9 Após fechado o ciclo, faça um histograma dos valores SIMULADOS e coloque uma RED LINE vertical na posição do valor OBSERVADO. hist(resultado) abline(vector=resultado[1], col="red", lty=2, lwd=2) ##8.1.10. Calcule a probabilidade de uma distribuição espacial ALEATORIA gera valores #iguais ou mais extremos que o valor MNN obsevado. #Segundo o tutorial, para fazermos esta operação, usaremos a função quantile e descobrir o p-value. quantile(resultado, prob=c(0.05,0.95)) #aqui obtemos o intervalo de confiança ##Agora precisamos calcular o p-value ##agora vamos voltar no tutorial das mandibulas para relembrar os comandos...loading... unicaudal <- sum(resultado=resultado[1]/length(resultado)) bicaudal <- sum(resultado>=resultado[1]) ####Exercicio 2 - SIMULANDO DADOS DE UMA REGRESSÁO LINEAR#### read.table("animais.txt", header=T,sep=";",as.is=TRUE) animals <- read.table("animais.txt", header=T,sep=";",dec=",", as.is=TRUE) animals #o arquivo animals contém NAs plot(log(animals$brain)~ log(animals$body)) #aqui plotamos um gráfico log de brain/body # a distribuição dos dados parece linear com o log sum(is.na(animals)) #aqui eu quero ver quantos NAs tem no conjunto de dados. animals <- na.omit(animals) #aqui retirou o NAs do conjunto de dados. animals modelo <- lm(log(animals$brain)~log(animals$body)) ##aqui criamos um modelo linear modelo summary(modelo) coef(modelo) #aqui é o valor da inclinação ou seja, o valor do intercepto residuo <- rep(NA, 1000) #objeto com 1000 NAs residuo residuo.1 = coef(modelo) #aqui colocamos a inclinação na primeira posição do residuo residuo.1 ##8.2.4 Abra um ciclo com o FOR de 2 a 1000 for(i in 2:1000){ sim.brain <- sample(animals$brain) #aqui vamos bagunçar os dados de brain coef.sim <- coef(lm(log(animals$brain)~log(animals$body))) resultado <- coef.sim #aqui guardamos no vetor resultado } ###8.2.8 Faça o histograma dos valores simulados e compare # com o valor da inclinação da relação hist(residuo.1) abline(v=residuo.1, col="purple", lty=2, lwd=2) ##8.2.9 Calcule o p-value unicaudal <- sum(residuo>=residuo.1/length(residuo) bicaldal <- unicaudal*2