Ferramentas do usuário

Ferramentas do site


03_apostila:03-funcoes

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
Próxima revisão Ambos lados da revisão seguinte
03_apostila:03-funcoes [2020/08/17 18:22]
adalardo [Mantendo a Coerência Lógica-Matemática]
03_apostila:03-funcoes [2023/08/14 16:10]
127.0.0.1 edição externa
Linha 12: Linha 12:
 ==== Operações Aritméticas Básicas ==== ==== Operações Aritméticas Básicas ====
  
-A linha de comando do R funciona como uma calculadora. ​ ​Todas ​operações aritméticas +A linha de comando do R funciona como uma calculadora. ​As principais ​operações aritméticas 
-e funções matemáticas ​principais ​estão disponíveis. Exemplo:+e funções matemáticas estão disponíveis. Exemplo:
  
-<​code>​+<​code ​rsplus>
 > 4 + 9 > 4 + 9
 [1] 13 [1] 13
Linha 31: Linha 31:
 A notação básica de operações algébricas,​ como a aplicação hierárquica de parênteses,​ A notação básica de operações algébricas,​ como a aplicação hierárquica de parênteses,​
 também pode ser utilizada: também pode ser utilizada:
-<​code>​+<​code ​rsplus>
 > (4 + 5 ) * 7 - (36/18)^3 > (4 + 5 ) * 7 - (36/18)^3
 [1] 55 [1] 55
Linha 39: Linha 39:
 </​code>​ </​code>​
  
-Note que somente os parênteses podem ser utilizados nas expressões matemáticas. ​ As chaves ("​{}"​) e os colchetes ("​[]"​) têm outras funções no R: +Note que somente os parênteses podem ser utilizados nas expressões matemáticas. As chaves ("​{}"​) e os colchetes ("​[]"​) têm outras funções no R: 
-<​code>​+<​code ​rsplus>
 > (2 * { 2 * [ 2 * (3-4)]}) > (2 * { 2 * [ 2 * (3-4)]})
 Error: syntax error in "(2 * { 2 * [" Error: syntax error in "(2 * { 2 * ["
Linha 46: Linha 46:
 </​code>​ </​code>​
  
-Por que o R é uma calculadora **fora do comum** ?  Experimente fazer a seguinte operação matemática na sua calculadora:​ +Por que o R é uma calculadora **fora do comum** ? Experimente fazer a seguinte operação matemática na sua calculadora:​ 
-<​code>​+<​code ​rsplus>
 > 1 - (1 + 10^(-15)) > 1 - (1 + 10^(-15))
 </​code>​ </​code>​
Linha 55: Linha 55:
  
 As funções matemáticas comuns também estão disponíveis e podem ser aplicadas diretamente na linha de comando: As funções matemáticas comuns também estão disponíveis e podem ser aplicadas diretamente na linha de comando:
-<​code>​+<​code ​rsplus>
 > sqrt(9) ​  # Raiz Quadrada > sqrt(9) ​  # Raiz Quadrada
 [1] 3 [1] 3
Linha 76: Linha 76:
  
 As funções trigonométricas:​ As funções trigonométricas:​
-<​code>​+<​code ​rsplus>
 > sin(0.5*pi) ​   # Seno > sin(0.5*pi) ​   # Seno
 [1] 1 [1] 1
-> cos(2*pi) ​     # Coseno+> cos(2*pi) ​     # Cosseno
 [1] 1 [1] 1
 > tan(pi) ​       # Tangente > tan(pi) ​       # Tangente
Linha 89: Linha 89:
 [1] 90 [1] 90
 > >
-> acos(0) ​     # Arco coseno ​(em radianos)+> acos(0) ​     # Arco cosseno ​(em radianos)
 [1] 1.570796 [1] 1.570796
 > acos(0) / pi * 180 > acos(0) / pi * 180
Linha 101: Linha 101:
  
 Funções para arredondamento:​ Funções para arredondamento:​
-<​code>​+<​code ​rsplus>
 > ceiling( 4.3478 ) > ceiling( 4.3478 )
 [1] 5 [1] 5
Linha 117: Linha 117:
  
 Funções matemáticas de especial interesse estatístico:​ Funções matemáticas de especial interesse estatístico:​
-<​code>​+<​code ​rsplus>
 > factorial( 4 )         # Fatorial de 4 > factorial( 4 )         # Fatorial de 4
 [1] 24 [1] 24
 > choose(10, 3)          # Coeficientes binomiais: combinação de 10 3-a-3 > choose(10, 3)          # Coeficientes binomiais: combinação de 10 3-a-3
 [1] 120 [1] 120
 +> gamma(1.2) ​            # Função gamma
 +[1] 0.9181687
 >  ​ >  ​
 </​code>​ </​code>​
Linha 132: Linha 134:
  
 Para definir uma variável, basta escolher um nome (//​lembre-se das regras de nomes no R//) e atribuir a ela um valor: Para definir uma variável, basta escolher um nome (//​lembre-se das regras de nomes no R//) e atribuir a ela um valor:
-<​code>​+<​code ​rsplus>
  
 > a = 3.6 > a = 3.6
Linha 191: Linha 193:
 Se o diâmetro à altura do peito (DAP) de uma árvore for 13.5cm, qual Se o diâmetro à altura do peito (DAP) de uma árvore for 13.5cm, qual
 a área transversal?​ a área transversal?​
- 
-Se uma árvore possui três fustes com DAPs de: 7cm, 9cm e 12cm, qual 
-a sua área transversal?​ 
  
 </​box>​ </​box>​
Linha 201: Linha 200:
  
 Se uma árvore possui três fustes com DAPs de: 7cm, 9cm e 12cm, qual Se uma árvore possui três fustes com DAPs de: 7cm, 9cm e 12cm, qual
-o diâmetro (único) que é equivalente à sua área transversal?​+sua área transversal ​de cada fuste?
  
 </​box>​ </​box>​
Linha 209: Linha 208:
  
 O modelo alométrico de biomassa ajustado para árvores do Cerradão O modelo alométrico de biomassa ajustado para árvores do Cerradão
-estabele ​que a biomassa é dada pela expressão:+estabelece ​que a biomassa é dada pela expressão:
  
 $$\hat{b} = e^{-1,7953} d^{2.2974}$$ $$\hat{b} = e^{-1,7953} d^{2.2974}$$
Linha 270: Linha 269:
   * ''​Inf''​ - infinito;   * ''​Inf''​ - infinito;
   * ''​NaN''​ - indeterminado (Not a Number), normalmente resultado de uma operação matemática indeterminada;​   * ''​NaN''​ - indeterminado (Not a Number), normalmente resultado de uma operação matemática indeterminada;​
-  * ''​NA'' ​ - indeterminado (Not Available), normalmente caracterizando uma observação perdida (//missing value//).+  * ''​NA'' ​ - indeterminado (Not Available), normalmente caracterizando uma observação perdida ​ou faltante ​(//missing value//).
  
  
 Na operações matemáticas,​ ''​NaN''​ e ''​NA''​ atuam sempre como **indeterminado**. Na operações matemáticas,​ ''​NaN''​ e ''​NA''​ atuam sempre como **indeterminado**.
  
 +
 +
 +=== Exercícios ===
  
  
Linha 280: Linha 282:
  
 O que acontece se você criar uma variável com o nome ''​pi''? ​ Por exemplo, ​ O que acontece se você criar uma variável com o nome ''​pi''? ​ Por exemplo, ​
-<​code>​+<​code ​rsplus>
 > pi = 10 > pi = 10
 </​code>​ </​code>​
 O que acontece com a constante //pi//? O que acontece com a constante //pi//?
  
-E se for criada uma constante de nome ''​sqrt''? ​ O que acontece com a função ​raíz quadrada (''​sqrt()''​)?​+E se for criada uma constante de nome ''​sqrt''? ​ O que acontece com a função ​raiz quadrada (''​sqrt()''​)?​
  
 **DICA:** O que faz a função ''​search'',​ no comando: **DICA:** O que faz a função ''​search'',​ no comando:
-<​code>​+<​code ​rsplus>
 > search() > search()
 </​code>​ </​code>​
 </​box>​ </​box>​
  
- 
- 
-=== Exercícios === 
  
 <box left red 80%| //**2.6. Exercício Conceitual:​** O que é uma Observação Perdida//>​ <box left red 80%| //**2.6. Exercício Conceitual:​** O que é uma Observação Perdida//>​
Linha 341: Linha 340:
 === Concatenação de Elementos em um Vetor: a Função "​c"​ === === Concatenação de Elementos em um Vetor: a Função "​c"​ ===
  
-Para criar um vetor, podemos usar a função ''​c''​ (c = colar, ​concatenar). ​ Essa função simplesmente junta todos+Para criar um vetor, podemos usar a função ''​c''​ (c = concatenar). ​ Essa função simplesmente junta todos
 os argumentos dados a ela, formando um vetor: os argumentos dados a ela, formando um vetor:
-<​code>​+<​code ​rsplus>
 > a = c(1, 10, 3.4, pi, pi/4, exp(-1), log( 2.23 ), sin(pi/7) ) > a = c(1, 10, 3.4, pi, pi/4, exp(-1), log( 2.23 ), sin(pi/7) )
 > a > a
Linha 352: Linha 351:
 === Criação de Sequências:​ Operador ":"​ e Função "​seq"​ === === Criação de Sequências:​ Operador ":"​ e Função "​seq"​ ===
  
-Para criar vetores de números com intervalo fixo unitário (intervalo de 1) se utiliza o //​operador ​seqüencial// ('':''​):​ +Para criar vetores de números com intervalo fixo unitário (intervalo de 1) se utiliza o //​operador ​sequencial// ('':''​):​ 
-<​code>​+<​code ​rsplus>
 > b = 1:8 > b = 1:8
 > b > b
Linha 365: Linha 364:
 </​code>​ </​code>​
  
-Uma forma mais flexível de criar seqüências ​de números (inteiros ou reais) é usando a função ​'''​seq''':​ +Uma forma mais flexível de criar sequências ​de números (inteiros ou reais) é usando a função ''​seq'':​ 
-<​code>​+<​code ​rsplus>
 > seq(10, 30) > seq(10, 30)
  [1] 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30  [1] 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
Linha 379: Linha 378:
 === Vetores de Valores Repetidos: Função "​rep"​ === === Vetores de Valores Repetidos: Função "​rep"​ ===
  
-Também é fácil criar uma seqüência ​de números repetidos utilizando a função ​'''​rep''':​ +Também é fácil criar uma sequência ​de números repetidos utilizando a função ''​rep'':​ 
-<​code>​+<​code ​rsplus>
 > rep(5, 3) > rep(5, 3)
 [1] 5 5 5 [1] 5 5 5
Linha 397: Linha 396:
 Uma palmeira perfilhada possui 10 fustes com os seguintes diâmetros: 5, 6, 7, 5, 10, 11, 6, 8, 9 e 7. Uma palmeira perfilhada possui 10 fustes com os seguintes diâmetros: 5, 6, 7, 5, 10, 11, 6, 8, 9 e 7.
  
-Crie um vetor '''​dap'''​ com os diâmetros ​acimas ​e uma seqüência ​que enumera os fustes.+Crie um vetor ''​dap''​ com os diâmetros ​acima e uma sequência ​que enumera os fustes.
  
 </​box>​ </​box>​
Linha 415: Linha 414:
  
 Todas operações matemáticas aplicadas sobre um vetor, serão aplicadas sobre cada elemento desse vetor: Todas operações matemáticas aplicadas sobre um vetor, serão aplicadas sobre cada elemento desse vetor:
-<​code>​+<​code ​rsplus>
 > 2 * a > 2 * a
 [1]  2.0000000 20.0000000 ​ 6.8000000 ​ 6.2831853 ​ 1.5707963 ​ 0.7357589 ​ 1.6040032 [1]  2.0000000 20.0000000 ​ 6.8000000 ​ 6.2831853 ​ 1.5707963 ​ 0.7357589 ​ 1.6040032
Linha 431: Linha 430:
 Se as variáveis que trabalhamos são vetores, operações matemáticas entre variáveis serão realizadas Se as variáveis que trabalhamos são vetores, operações matemáticas entre variáveis serão realizadas
 pareando os elementos dos vetores: pareando os elementos dos vetores:
-<​code>​+<​code ​rsplus>
 > a* b > a* b
 [1]  1.000000 20.000000 10.200000 12.566371 ​ 3.926991 ​ 2.207277 ​ 5.614011 [1]  1.000000 20.000000 10.200000 12.566371 ​ 3.926991 ​ 2.207277 ​ 5.614011
Linha 454: Linha 453:
  
 A função ''​length''​ retorna o número de elementos de um objeto: A função ''​length''​ retorna o número de elementos de um objeto:
-<​code>​+<​code ​rsplus>
 > a <- seq(from=0, to=10, by=2) > a <- seq(from=0, to=10, by=2)
 > a > a
Linha 475: Linha 474:
 Quando o comprimento do vetor maior não é múltiplo do comprimento do maior, o R retorna o resultado e um aviso: ​ Quando o comprimento do vetor maior não é múltiplo do comprimento do maior, o R retorna o resultado e um aviso: ​
  
-<​code>​+<​code ​rsplus>
 > b > b
  [1] 0 0 0 0 0 1 1 1 1 1  [1] 0 0 0 0 0 1 1 1 1 1
Linha 493: Linha 492:
 Mas se o comprimento do vetor maior é um múltiplo do maior, o R retorna apenas o resultado, sem nenhum alerta: Mas se o comprimento do vetor maior é um múltiplo do maior, o R retorna apenas o resultado, sem nenhum alerta:
  
-<​code>​+<​code ​rsplus>
 > a > a
 [1] 1 2 [1] 1 2
Linha 523: Linha 522:
 <box left red | //​**Exercício 2.9.** Bits e Bytes//> <box left red | //​**Exercício 2.9.** Bits e Bytes//>
  
-Como construir uma seqüência ​que representa o aumento do número+Como construir uma sequência ​que representa o aumento do número
 de bits por byte de computador, quando se dobra o tamanho dos bytes? de bits por byte de computador, quando se dobra o tamanho dos bytes?
  
-Essa seqüência ​numérica parte do 2 e dobra os valores a cada passo.+Essa sequência ​numérica parte do 2 e dobra os valores a cada passo.
  
 </​box>​ </​box>​
Linha 546: Linha 545:
  
 As funções matemáticas sobre vetores operam //​elemento-a-elemento//​. ​ Já as funções estatísticas operam no vetor **como um todo**: As funções matemáticas sobre vetores operam //​elemento-a-elemento//​. ​ Já as funções estatísticas operam no vetor **como um todo**:
-<​code>​+<​code ​rsplus>
 > mean( a ) > mean( a )
 [1] 2.491344 [1] 2.491344
Linha 565: Linha 564:
  
 Algumas funções úteis que não são estatísticas,​ mas operam no vetor são: Algumas funções úteis que não são estatísticas,​ mas operam no vetor são:
-<​code>​+<​code ​rsplus>
 > a > a
 [1]  1.0000000 10.0000000 ​ 3.4000000 ​ 3.1415927 ​ 0.7853982 ​ 0.3678794 ​ 0.8020016 [1]  1.0000000 10.0000000 ​ 3.4000000 ​ 3.1415927 ​ 0.7853982 ​ 0.3678794 ​ 0.8020016
Linha 607: Linha 606:
  
 Já foi visto que ao se digitar o nome de uma função na linha de comando, o R retorna o **código** da função. Veja a diferença de: Já foi visto que ao se digitar o nome de uma função na linha de comando, o R retorna o **código** da função. Veja a diferença de:
-<​code>​+<​code ​rsplus>
 > ls() > ls()
 </​code>​ </​code>​
 para: para:
-<​code>​+<​code ​rsplus>
 > ls > ls
 </​code>​ </​code>​
Linha 619: Linha 618:
  
 Os argumentos de qualquer função são detalhadamente explicados nas páginas de ajuda sobre a função. ​ Mas para uma rápida consulta dos argumentos de uma função podemos usar a função '''​args''':​ Os argumentos de qualquer função são detalhadamente explicados nas páginas de ajuda sobre a função. ​ Mas para uma rápida consulta dos argumentos de uma função podemos usar a função '''​args''':​
-<​code>​+<​code ​rsplus>
 > args(ls) > args(ls)
 function (name, pos = -1, envir = as.environment(pos),​ all.names = FALSE, function (name, pos = -1, envir = as.environment(pos),​ all.names = FALSE,
Linha 634: Linha 633:
 </​code> ​ </​code> ​
  
-Algumas funções, entretanto, são primitivas ou internas e seus argumentos não são apresentados. ​ Geralmente, nesses casos os argumentos ​ são bastante óbvios: +Algumas funções, entretanto, são primitivas ou internas e seus argumentos não são apresentados. Geralmente, nesses casos os argumentos são bastante óbvios: 
-<​code>​+<​code ​rsplus>
 > args(sin) > args(sin)
 NULL NULL
Linha 644: Linha 643:
  
 Outras funções simplesmente não possuem argumentos: Outras funções simplesmente não possuem argumentos:
-<​code>​+<​code ​rsplus>
 > args(getwd) > args(getwd)
 function () function ()
Linha 657: Linha 656:
  
 Ao observar o resultado da função '''​args''',​ você notará que alguns argumentos são seguidos de uma expressão que se inicia com o sinal de igualdade ('''​='''​). ​ A expressão após o sinal de igualdade é chamada de **valor default** do argumento. ​  Se o usuário não informar o valor para um dado argumento, a função usa o valor default. ​ Como exemplo veja a função '''​save.image''':​ Ao observar o resultado da função '''​args''',​ você notará que alguns argumentos são seguidos de uma expressão que se inicia com o sinal de igualdade ('''​='''​). ​ A expressão após o sinal de igualdade é chamada de **valor default** do argumento. ​  Se o usuário não informar o valor para um dado argumento, a função usa o valor default. ​ Como exemplo veja a função '''​save.image''':​
-<​code>​+<​code ​rsplus>
 > args(save.image) > args(save.image)
 function (file = "​.RData",​ version = NULL, ascii = FALSE, compress = !ascii, function (file = "​.RData",​ version = NULL, ascii = FALSE, compress = !ascii,
Linha 701: Linha 700:
  
 A distribuição Normal é a distribuição central da teoria estatística. Para gerar uma amostra de observações de uma distribuição normal utilizamos a função '''​rnorm''':​ A distribuição Normal é a distribuição central da teoria estatística. Para gerar uma amostra de observações de uma distribuição normal utilizamos a função '''​rnorm''':​
-<​code>​+<​code ​rsplus>
 > args( rnorm ) > args( rnorm )
 function (n, mean = 0, sd = 1) function (n, mean = 0, sd = 1)
Linha 724: Linha 723:
  
 Se quisermos saber a //​probabilidade acumulada// até um certo valor de uma variável com distribuição normal utilizamos a função '''​pnorm''':​ Se quisermos saber a //​probabilidade acumulada// até um certo valor de uma variável com distribuição normal utilizamos a função '''​pnorm''':​
-<​code>​+<​code ​rsplus>
 > args(pnorm ) > args(pnorm )
 function (q, mean = 0, sd = 1, lower.tail = TRUE, log.p = FALSE) function (q, mean = 0, sd = 1, lower.tail = TRUE, log.p = FALSE)
Linha 743: Linha 742:
  
 Se quisermos obter o valor de um //quantil// da distribuição normal utilizamos a função '''​qnorm''':​ Se quisermos obter o valor de um //quantil// da distribuição normal utilizamos a função '''​qnorm''':​
-<​code>​+<​code ​rsplus>
 > args( qnorm ) > args( qnorm )
 function (p, mean = 0, sd = 1, lower.tail = TRUE, log.p = FALSE) function (p, mean = 0, sd = 1, lower.tail = TRUE, log.p = FALSE)
Linha 760: Linha 759:
  
 A função '''​dnorm'''​ fornece a //densidade probabilística//​ para cada valor de uma variável Normal: A função '''​dnorm'''​ fornece a //densidade probabilística//​ para cada valor de uma variável Normal:
-<​code>​+<​code ​rsplus>
 > args( dnorm ) > args( dnorm )
 function (x, mean = 0, sd = 1, log = FALSE) function (x, mean = 0, sd = 1, log = FALSE)
 NULL NULL
-> x = seq(-4, 4, length=10000) ​            # ​Seqüência ​de -4 a 4 com 10.000 valores+> x = seq(-4, 4, length=10000) ​            # ​Sequencia ​de -4 a 4 com 10.000 valores
 > >
 > plot(x, dnorm(x)) ​                       # Curva da Dist. Normal com média 0 e desvio padrão 1 > plot(x, dnorm(x)) ​                       # Curva da Dist. Normal com média 0 e desvio padrão 1
Linha 777: Linha 776:
 <box left red  100% | //​**Exercício 2.13** Amplitude Normal//>​ <box left red  100% | //​**Exercício 2.13** Amplitude Normal//>​
  
-Tomando uma variável que segue a Distribuição Normal, o que acontence ​com a //amplitude de variação//​ dos dados à medida que o tamanho da amostra cresce (por exemplo n= 100, 1000, 10000)?+Tomando uma variável que segue a Distribuição Normal, o que acontece ​com a //amplitude de variação//​ dos dados à medida que o tamanho da amostra cresce (por exemplo n= 100, 1000, 10000)?
  
 **Dica:** use as funções ''​range''​ e ''​diff''​ **Dica:** use as funções ''​range''​ e ''​diff''​
Linha 785: Linha 784:
  
 <box left red  100% | //​**Exercício 2.14.** Intervalo Normal I //> <box left red  100% | //​**Exercício 2.14.** Intervalo Normal I //>
-Qual o intervalo da Distribuição Normal Padronizada que têm a média no centro e contem ​50% das observações?​+Qual o intervalo da Distribuição Normal Padronizada que têm a média no centro e contém ​50% das observações?​
  
 </​box>​ </​box>​
Linha 879: Linha 878:
 <box left red red  100% | //​**Exercício 2.20.** Gráfico Quantil-Quantil //> <box left red red  100% | //​**Exercício 2.20.** Gráfico Quantil-Quantil //>
 Construa uma seqüência **ordenada** de 1000 números entre 0 e 1: Construa uma seqüência **ordenada** de 1000 números entre 0 e 1:
-<​code>​+<​code ​rsplus>
 > p = seq(0, 1, length=1000) > p = seq(0, 1, length=1000)
 </​code>​ </​code>​
Linha 885: Linha 884:
  
 Gere 1000 números aleatórios da distribuição Normal com média e desvio-padrão 1 (um) e coloque os números em ordem: Gere 1000 números aleatórios da distribuição Normal com média e desvio-padrão 1 (um) e coloque os números em ordem:
-<​code>​+<​code ​rsplus>
 > x = sort( rnorm(1000, mean=1) ) > x = sort( rnorm(1000, mean=1) )
 </​code> ​ </​code> ​
  
 Faça um gráfico dos quantis da distribuição Normal, tomando o vetor '''​p'''​ de probabilidades,​ contra os valores de '''​x''':​ Faça um gráfico dos quantis da distribuição Normal, tomando o vetor '''​p'''​ de probabilidades,​ contra os valores de '''​x''':​
-<​code>​+<​code ​rsplus>
 > plot( qnorm(p, mean=1), x ) > plot( qnorm(p, mean=1), x )
 </​code>​ </​code>​
03_apostila/03-funcoes.txt · Última modificação: 2023/08/22 12:51 (edição externa)