#### Exercício 9 #### #Exercícios de Construção de Funções #Exercício Programar 1.: QUE FRIO! #Tarefa: Construa uma função que calcula automaticamente o valor de graus Celsius, sabendo-se a temperatura em Fahrenheit. #C° = 5/9 * (F°- 32) # Função Fapracel- lindo nome ! fapracel = function(x) { fahrenheit=(x) celcius=5/9*(x-32) return(celcius)} fapracel str(fapracel) args(fapracel)#ok #vamos testar ! # de acordo com o: Fahrenheit to Celsius Converter do National Weather Service #site:http://www.wbuf.noaa.gov/tempfc.htm #100 Fahrenheit é igual a 37.77777777777778 celcius # de acordo com a função fapracel é: fapracel(100)# 37.77778 - Vitória !!! #Exercício Programar 2. : Análise exploratória simultânea de duas variáveis #Tarefa: Crie uma função para saída gráfica de análises exploratórias de duas variáveis. Essa saída pode ter por exemplo boxplot, histograma, qq norm e y por x. A função deve permitir a entrada de dois objetos vetores de mesmo tamanho (x e y). #Caso os valores de x e y forem desenhados em um mesmo gráfico, defina cores diferentes. As legendas devem ser em português e a saída (return) deve apresentar o sumário das duas variáveis e o coeficiente de correlação. #DICAS: #Para histogramas com variáveis em um mesmo gráfico pode ser utilizada a função multhist() do pacote “plotrix”. Baixe, instale o pacote e veja o help da função. #Utilize o código do eda.shape, apresentado em aula como ponto de partida. #Lembre-se que em algumas funções gráficas o argumento add=TRUE, adiciona elementos no gráfico anterior. search()# nada de plotrix ###instalando### require(plotrix) search()#ok help(multhist) # Dada uma lista, traça um barplot lado a lado, contendo os histogramas dos elementos #multhist(x,beside=TRUE,freq=NULL,probability=!freq,plot.it=TRUE,...) multhist(x) plot(x) qqnorm(x) qqline(x) var1=c(1,2,3,4,10,4,5,9) var2=c(5,2,9,9,10,30,9,2) expl.dupla = function(x,y){ par(mfrow=c(3,1),bty="l") qqx=qqnorm(x, col="blue", xlab="Variável a", ylab="") qlx=qqline(x) qqy=qqnorm(y,col="red",xlab="Variável b", ylab="") qly=qqline(y) box=boxplot(x,y,col="gray", names=c("Variável a", "Variável b")) } expl.dupla(var1,var2) ##Programar 3: Índices de Diversidade de Espécies #Tarefa: Construa funções para computar os seguintes índices de diversidade de espécies: #Índice de Shannon: $$H = - sump_i * ln p_i$$ #Índice de Simpson: $$D = sump_i^2$$ #onde $$p_i$$ é a proporção da espécie $$i$$ em relação ao número total de indivíduos na amostra ($$n_i/N$$) #1.O objeto de entrada na função será uma matriz com a abundância das espécies nas linhas e amostras nas colunas. #2.A função deve retornar um dos dois índices de diversidade, escolhido pelo usuário, calculado para cada amostra (coluna). #3.Considere a possibilidade de haver valores faltantes (NA) nessa matriz e que esse será removido para o cálculo. #criando matriz matriz=matrix(NA, 30,2) sp1=rnorm(30, 10, 5) sp2=rnorm(30, 15,5) matriz[,1]=sp1 matriz[,2]=sp2 matriz [5,2]=NA matriz[20,1]=NA matriz# matriz com NAS #Índice de Shannon. Mede o grau de incerteza em prever a que espécie pertencerá um indivíduo escolhido, ao acaso, de uma amostra com S espécies e N indivíduos. # H' = - åpi ln pi #Índice de Simpson. É um índice de dominância e reflete a probabilidade de dois indivíduos escolhidos ao acaso na comunidade pertencerem à mesma espécie. indices= function(dados,rm.na=TRUE) ########## NAs ########## {if(rm.na== TRUE) { dados= as.matrix(na.omit(dados))} else {dados=dados} soma= apply(dados,2,sum,na.rm=TRUE) pi.ind=t(dados)/soma ##indice de shannon### { log=pi.ind*log(pi.ind) shannon=(-1)*apply(log,1,sum,na.rm=TRUE) ## indice de simpson## pi2=pi.ind^2 simpson=apply(pi2,1,sum,na.rm=TRUE) } cat("indice de shannon = ", shannon, /t) cat("indice de simpson = ", simpson) } indices # está aqui ! #para testar matriz=matrix(NA, 30,2) matriz sp1=rnorm(30,10,5) sp2=rnorm(30,15,5) matriz[,1]=sp1 matriz[,2]=sp2 matriz[4,2]=NA matriz #- feito matriz indices(matriz)