Ferramentas do usuário

Ferramentas do site


02_tutoriais:tutorial8:start

Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.

Link para esta página de comparações

Ambos lados da revisão anterior Revisão anterior
Próxima revisão
Revisão anterior
02_tutoriais:tutorial8:start [2020/10/04 20:44]
adalardo
02_tutoriais:tutorial8:start [2022/06/26 13:57] (atual)
adalardo [Testando a função]
Linha 4: Linha 4:
   * [[03_apostila:​programar_ale| Apostila]]   * [[03_apostila:​programar_ale| Apostila]]
 </​WRAP>​ </​WRAP>​
-====== 9. Tutoriais de Programação ​======+====== 9. Criando Funções Básicas ​======
  
  
 ===== Nossos Personagens ===== ===== Nossos Personagens =====
-<html+ 
-<iframe width="​500"​ height="​300"​ src="​https://​www.youtube.com/embed/HRQtNBs8BF8?​list=PLsjjuLIpE5Wskd3UZ7gIE7WGZMsnwbJtE"​ frameborder="​0"​ allow="​accelerometer;​ autoplay; encrypted-media;​ gyroscope; picture-in-picture"​ allowfullscreen>​</iframe+<WRAP center round box 60%
-</​html>​+**__Pink & Cerebro__** ​  
 + 
 +{{youtube>HRQtNBs8BF8}} 
 +</WRAP
  
  
Linha 28: Linha 32:
 {{  :​02_tutoriais:​pink.jpg?​200 ​ |  }} {{  :​02_tutoriais:​pink.jpg?​200 ​ |  }}
  
 +
 +===== Classe Function =====
 +
 +Um objeto de função é uma classe especial de objetos no R que encapsulam algum tarefa. A função ''​function()''​ recebe algumas informações através dos seus argumentos e usa essas informações internamente para a realização do procedimento desejado. ​  O procedimento ou tarefa realizada por uma função é conduzido por um algoritmo, que nada mais é que um sequência de comandos concatenados. Quando o objeto de função é chamado, ele retorna o que os outros objetos retornam no console do R, o que foi atribuído a ele, ou seja essas linhas de comando no formato de texto. Entretanto, quando o objeto da classe ''​function''​ é chamada com os parênteses ''​( )''​ ele realiza a tarefa conduzido pelo conjunto concatenados de comandos que foram atribuídos a ele. Ao final, normalmente,​ a função retorna um **único** objeto que contém o resultado do procedimento. Para o retorno deste objeto, normalmente usamos uma outra função chamada ''​return()''​. ​   ​
  
  
 ===== FAZENDO VERSÕES PIORADAS DE FUNÇÕES EXISTENTES!!!! ===== ===== FAZENDO VERSÕES PIORADAS DE FUNÇÕES EXISTENTES!!!! =====
  
-Uma funções ​muito simples+Vamos construir algumas ​funções simples. A primeira é uma função que calcula a média de um conjunto de valores. 
 +A primeira etapa é definir qual o tipo de objetos que a função irá manipular e designar um nome a esse objeto como um argumento. No caso da média podemos definir esse objeto como um vetor numérico ''​x''​. Em seguida precisamos definir o algoritmo que será executado. Uma forma de fazer isso é através de um pseudocódigo que é a descrição literal do algoritmo.  
 +No nosso caso: 
 + 
 +<WRAP center round box 60%> 
 +**Pseudocodigo ''​media''​ ** 
 +  - recebe um vetor ''​x''​ 
 +  - soma os valores do vetor no objeto ''​soma''​ 
 +  - guarda o tamanho do vetor ''​x''​ em ''​nobs''​ 
 +  - divide ''​soma''​ por ''​nobs''​ e guarda no objeto ''​media''​ 
 +  - retorna o objeto ''​med''​ 
 +</​WRAP>​ 
 +  
 + 
 + 
 +Depois de definir o que a função conterá, precisamos abrir um  bloco de código para conter as linhas de comando que definem o algoritmo com as chaves ''​{ }''​. Em seguida colocamos as linhas de comando descritas no pseudocodigo e rodamos todo o bloco de código desde a atribuição da função a um nome para construir um objeto da classe ''​function''​ na nossa área de trabalho. ​ Rodo o código abaixo e cheque se houve a construção do objeto ''​media''​ e qual a classe desse objeto: 
  
 <code rsplus> <code rsplus>
Linha 39: Linha 63:
  soma <- sum(x)  soma <- sum(x)
  nobs <- length(x)  nobs <- length(x)
- media <- soma/nobs + med <- soma/nobs 
- return(media)+ return(med)
  }  }
 </​code>​  </​code>​
  
 <WRAP center round tip 60%> <WRAP center round tip 60%>
-Note que a função nada mais é do que um conjunto de linhas de comando concatenadas para executar uma tarefa. A principio ​quem conhece ​as funções básicas do R já está qualificado a fazer funções mais complexas.+Note que a função nada mais é do que um conjunto de linhas de comando concatenadas para executar uma tarefa. A princípio ​quem usa as funções básicas do R já está qualificado a fazer funções mais complexas ​a partir delas.
  
 </​WRAP>​ </​WRAP>​
Linha 51: Linha 75:
 ===== Testando a função ===== ===== Testando a função =====
    
 +Para testar a função que acabamos de fazer, utilizamos ela da mesma maneira que as outras funções que usamos até agora. Com a diferença que esta não tem a documentação que as funções de pacotes precisam ter para poderem ser disponibilizadas no repositório do R. Rode os códigos abaixo para ver a sua função em atividade:
 +
 <code rsplus> <code rsplus>
  
 ls() ls()
 +class(media)
 media media
 media() media()
 +help(media)
 dados <- rnorm(20, 2, 1) dados <- rnorm(20, 2, 1)
 media(dados) media(dados)
Linha 74: Linha 102:
  
 ===== Uma função mais elaborada ===== ===== Uma função mais elaborada =====
-funcão ​padrão do R (//mean()//) não calcula a média quando há //NA//'no vetor de dados, a menos que o usuário utilize ​ o argumento ​//na.rm=TRUE//+função ​padrão do R (''​mean()''​) não calcula a média quando há ''​NA'' ​no vetor de dados, a menos que o usuário utilize ​ o argumento ​''​na.rm = TRUE''​
-Vamos construir uma função que diferente da função padrão, calcule a média na presença de //NA//'s, entretanto lance na tela uma mensagem sobre o número de //NA//'removidos do cálculo.  +Vamos construir uma função que diferente da função padrão, calcule a média na presença de ''​NA'' e imprima ​na tela uma mensagem sobre o número de ''​NA'' ​removidos do cálculo.  
-Note que é uma função com dois argumentos, que permite ao usuário tomar a decisão de remover ou não //NA//'s. Diferente da função ​//mean()// o padrão é invertido, nossa função remove ​//NA//'se nenhum argumento for mencionado. Note que vamos sobrepor o objeto anterior da classe ​//função//, chamado **media**. ​+Note que é uma função com dois argumentos, que permite ao usuário tomar a decisão de remover ou não ''​NA''. Diferente da função ​''​mean()'' ​o padrão é invertido, nossa função remove ​''​NA'' ​se nenhum argumento for mencionado. Note que vamos sobrepor o objeto anterior da classe ​''​função''​, chamado **media**. ​
  
  
Linha 183: Linha 211:
 </​code>​ </​code>​
  
-<box 50red>+ 
 +<WRAP center round tip 80%>
 Quando o valor é próximo a 1 a distribuição é considerada aleatória. Isto quer dizer que que a ocorrência de cada indivíduo na parcela é indendente da ocorrência das demais. Neste caso, o número de indivíduos por parcela é descrito por uma variável Poisson, que tem exatamente a média igual à variância. Quando o valor é próximo a 1 a distribuição é considerada aleatória. Isto quer dizer que que a ocorrência de cada indivíduo na parcela é indendente da ocorrência das demais. Neste caso, o número de indivíduos por parcela é descrito por uma variável Poisson, que tem exatamente a média igual à variância.
-Podemos então fazer um teste de significância ​simulando uma distribuição Poisson com a mesma média dos dados. +Podemos então fazer um teste de hipótese ​simulando uma distribuição Poisson com a mesma média dos dados. 
-</box>+ 
 +</WRAP>
  
-===== Função para criar o teste de signficância ​do ID =====+===== Função para criar o teste de hipótese ​do ID =====
  
  
Linha 393: Linha 423:
  
  
-No linque a seguir você pode baixar o arquivo com o Pink e Cerebro... 
-{{:​02_tutoriais:​pinkycerebro.mpg|}} 
- 
- 
-** The End!** 
02_tutoriais/tutorial8/start.1601855056.txt.gz · Última modificação: 2020/10/04 20:44 por adalardo