dir() ######################### Exercicio 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",h=T) # 1.2. Crie o objeto para guardar as distâncias entre cada indivíduo: dist <- matrix(NA, ncol=102, nrow=102) # 1.3. Calcule a distancia observada entre cada individuo e guarde o # resultados em dist: for(i in 1:101) # aqui o maximo eh todas as combinacoes (102) - 1 { 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) } } head(dist) nrow(dist) # 1.4. Verifique o objeto dist e calcule o parametro chamado de distancia # media do vizinho mais proximo (MNN): dist # distancia do vizinho mais proximo, de cada uma dos individuos (nn <- apply(dist, 1, min, na.rm=TRUE)) # media das distancias do vizinho mais proximo (mnn <- mean(nn)) # Simulando # Até agora calculamos o valor esperado da distância média do vizinho # mais próximo. Os próximos passos, são 1): # 1.5. Crie um vetor resultado, com 1000 NA's, para guardar os valores # de cada simulação. resultado <- rep(NA,1000) head(resultado) # 1.6. Guarde o valor observado na primeira posição de resultado resultado[1] <- mnn # 1.7. Crie um ciclo com contador (k) 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), arredondando o valor para uma casa decimal). 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 # distancias 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 k 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.mat <- matrix(NA, ncol=102, nrow=102) for(i in 1:101){ # aqui o maximo eh todas as combinacoes (102) - 1 for(j in (i+1):102){ # vai do ponto da vez(i)+1 ate o final (102 difx2=(xsim[i]-xsim[j])^2 dify2=(ysim[i]-ysim[j])^2 dist.mat[i,j]<-sqrt(difx2 + dify2) dist.mat[j,i]<-sqrt(difx2 + dify2) } } med <- apply(dist.mat, 1, min, na.rm=TRUE)#tem que estar no for de k resultado[k] <- mean(med) # porque tem que fazer depois } # que a matriz estiver pronta # checando resultado # 1.9. Faça um histograma dos valores simulados e coloque uma linha # vermelha vertical na posição do valor observado; # centralizando o histograma lin <- resultado-mean(resultado) hist(lin) abline(v=lin[1],lty=2,col="red") # hist(resultado) # sem centralizar # abline(v=resultado[1],lty=2,col="red") # 1.10. Calcule a probabilidade de uma distribuição espacial aleatoria # gerar valores iguais ou mais extremos do que o valor MNN observado. mai.men <- sum(lin<=lin[1]|lin>=(lin[1]*-1)) mai.men pro.bi <- mai.men/length(resultado) pro.bi # p = 0.057 # deixar anotado, pois um dos monitores falou que seria o teste de 1 lado soh ### men <- sum(lin<=lin[1]) # mais extremo = lado esquerdo extremo, segundo o monitor ### p <- men/length(resultado) ##################################################################################### ################## Exercicio 2 ################# #### Simulando o teste de uma regressão linear # O principal teste estatístico de uma regressão linear é que a inclinação do modelo da # reta é diferente de zero! Isso significa que a variável preditora é independente da # variável reposta. Ou seja não há relação aparente entre elas. data <- read.table("animais.txt",sep=";",dec=",") dat <- data[!is.na(data$brain),] nrow(data) nrow(dat) 2.1. Calcule a inclinação da relação log(brain) ~ log(body) # x = body / y = brain # lm(log(dat$brain) ~ log(dat$body)) # checando o valor da inclinacao body <- log(dat$body) brain <- log(dat$brain) beta <- sum((body-mean(body))*(brain-mean(brain))/sum((body-mean(body))^2)) 2.2. Crie um vetor para guardar o resultado de simulações; vet <- rep(NA,1000) 2.3. Guarde o valor observado no objeto criado em 2.2; vet[1] <- beta # 2.4. Abra um ciclo de 2 a 1000; # 2.5. Desordene o vetor brain e guarde no objeto sim_brain; # 2.6. Calcule a inclinação entre o log(sim_brain) ~ log(body) e guarde no vetor resultado; # 2.7. Feche o ciclo; # 2.8. Faça o histograma dos valores simulados e compare com o valor observado da inclinação # da relação; # 2.9. Calcule a probabilidade da inclinação observada ter sido gerada por variáveis que # são independentes; for (i in 2:1000) { sim_brain <- sample(brain) vet[i] <- sum((body-mean(body))*(sim_brain-mean(sim_brain))/sum((body-mean(body))^2)) } hist(vet) abline(v=vet[1], col="red", lty=2) p <- sum(abs(vet) >= abs(vet[1]))/length(vet) p