\documentclass[a4paper, oneside, 10pt]{article} \usepackage[english]{babel} \usepackage[unicode]{hyperref} \usepackage[utf8x]{inputenc} \usepackage{longtable} \usepackage{listings} \date{\today} \title{} \author{} \begin{document} \begin{itemize} \item \href{http://ecor.ib.usp.br/doku.php?id=02_tutoriais:tutorial2:start}{Tutorial} \item \href{http://ecor.ib.usp.br/doku.php?id=01_curso_atual:exercicios2}{ Exercícios} \item \href{http://ecor.ib.usp.br/doku.php?id=03_apostila:03-funcoes}{ Apostila} \end{itemize} \section{\texorpdfstring{2. Funções Matemáticas e Estatísticas}{2 Funoes Matematicas e Estatisticas}} \label{sec:2_funoes_matematicas_e_estatisticas} \subsection{\texorpdfstring{O R como uma Calculadora Fora do Comum}{O R como uma Calculadora Fora do Comum}} \label{sec:o_r_como_uma_calculadora_fora_do_comum} \subsubsection{\texorpdfstring{Operações Aritméticas Básicas}{Operaoes Aritmeticas Basicas}} \label{sec:operaoes_aritmeticas_basicas} A linha de comando do R funciona como uma calculadora. As principais operações aritméticas e funções matemáticas estão disponíveis. Exemplo:\lstset{frame=single, language=rsplus} \begin{lstlisting} > 4 + 9 [1] 13 > 4 - 5 [1] -1 > 4 * 5 [1] 20 > 4 / 5 [1] 0.8 > 4^5 [1] 1024 > \end{lstlisting} A notação básica de operações algébricas, como a aplicação hierárquica de parênteses, também pode ser utilizada:\lstset{frame=single, language=rsplus} \begin{lstlisting} > (4 + 5 ) * 7 - (36/18)^3 [1] 55 > (2 * ( 2 * ( 2 * (3-4)))) [1] -8 > \end{lstlisting} 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:\lstset{frame=single, language=rsplus} \begin{lstlisting} > (2 * { 2 * [ 2 * (3-4)]}) Error: syntax error in "(2 * { 2 * [" > \end{lstlisting} Por que o R é uma calculadora \textbf{fora do comum} ? Experimente fazer a seguinte operação matemática na sua calculadora:\lstset{frame=single, language=rsplus} \begin{lstlisting} > 1 - (1 + 10^(-15)) \end{lstlisting} \subsubsection{\texorpdfstring{Funções Matemáticas Comuns}{Funoes Matematicas Comuns}} \label{sec:funoes_matematicas_comuns} As funções matemáticas comuns também estão disponíveis e podem ser aplicadas diretamente na linha de comando:\lstset{frame=single, language=rsplus} \begin{lstlisting} > sqrt(9) # Raiz Quadrada [1] 3 > abs( - 1 ) # Módulo ou valor absoluto [1] 1 > abs( 1 ) [1] 1 > log( 10 ) # Logaritmo natural ou neperiano [1] 2.302585 > log( 10, base = 10) # Logaritmo base 10 [1] 1 > log10(10) # Também logaritmo de base 10 [1] 1 > log( 10, base = 3.4076) # Logaritmo base 3.4076 [1] 1.878116 > exp( 1 ) # Exponencial [1] 2.718282 > \end{lstlisting} As funções trigonométricas:\lstset{frame=single, language=rsplus} \begin{lstlisting} > sin(0.5*pi) # Seno [1] 1 > cos(2*pi) # Cosseno [1] 1 > tan(pi) # Tangente [1] -1.224647e-16 > > asin(1) # Arco seno (em radianos) [1] 1.570796 > asin(1) / pi * 180 [1] 90 > > acos(0) # Arco cosseno (em radianos) [1] 1.570796 > acos(0) / pi * 180 [1] 90 > atan(0) # Arco tangente (em radianos) [1] 0 > atan(0) / pi * 180 [1] 0 > \end{lstlisting} Funções para arredondamento:\lstset{frame=single, language=rsplus} \begin{lstlisting} > ceiling( 4.3478 ) [1] 5 > floor( 4.3478 ) [1] 4 > round( 4.3478 ) [1] 4 > round( 4.3478 , digits=3) [1] 4.348 > round( 4.3478 , digits=2) [1] 4.35 > \end{lstlisting} Funções matemáticas de especial interesse estatístico:\lstset{frame=single, language=rsplus} \begin{lstlisting} > factorial( 4 ) # Fatorial de 4 [1] 24 > choose(10, 3) # Coeficientes binomiais: combinação de 10 3-a-3 [1] 120 > gamma(1.2) # Função gamma [1] 0.9181687 > \end{lstlisting} \subsubsection{\texorpdfstring{Criando Variáveis com Atribuição}{Criando Variaveis com Atribuiao}} \label{sec:criando_variaveis_com_atribuiao} Mais do que simples operações aritméticas, o R permite que executemos operações \textbf{algébricas} operando sobre variáveis pré-definidas. Para definir uma variável, basta escolher um nome (\emph{lembre-se das regras de nomes no R}) e atribuir a ela um valor:\lstset{frame=single, language=rsplus} \begin{lstlisting} > a = 3.6 > b = sqrt( 35 ) > c = -2.1 > a [1] 3.6 > b [1] 5.91608 > c [1] -2.1 > > a * b / c [1] -10.14185 > b^c [1] 0.02391820 > a + exp(c) - log(b) [1] 1.944782 > > a - b * c / d Error: object "d" not found \end{lstlisting} Não esqueça de definir as variáveis previamente!! \paragraph{\texorpdfstring{Exercícios}{Exercicios}} \label{sec:exercicios} \textbf{Exercício 2.1. \emph{Estimador de Pollard}} Pollard (1971) propôs o seguinte estimador para estimar a densidade no método de quadrantes: $$\hat{N} = \frac{4(4n-1)}{\pi \sum_{i=1}^n \sum_{j=1}^4 r_{ij}^2} $$ onde, $r_{ij}$ é a distância de árvore do quadrante $j$ no ponto $i$ ao centro do ponto quadrante e $n$ é o número de pontos quadrantes. A variância desse estimador é: $$Var(\hat{N_p}) = \frac{\hat{N_p}}{4n-2}$$ Imagine que foram amostrados 30 quadrantes, e que o valor da soma do quadrado das distâncias de cada árvore ao centro de seu quadrante foi de: $$\sum_{i=1}^{30} \sum_{j=1}^4 r_{ij}^2 = 2531,794$$ \begin{enumerate} \item Qual a densidade estimada? \item Qual a variância? \end{enumerate} \textbf{Exercício 2.2. \emph{Área transversal de uma Árvore}} A área transversal de uma árvore é calculada assumindo que a secção transversal do tronco à altura do peito (1,3m) é perfeitamente circular. Se o diâmetro à altura do peito (DAP) de uma árvore for 13.5cm, qual a área transversal? \textbf{Exercício 2.3. \emph{Área transversal de uma Árvore (Revisitado)}} Se uma árvore possui três fustes com DAPs de: 7cm, 9cm e 12cm, qual a sua área transversal de cada fuste? \textbf{Exercício 2.4. \emph{Cálculo da Biomassa de Árvores do Cerrado}} O modelo alométrico de biomassa ajustado para árvores do Cerradão estabelece que a biomassa é dada pela expressão: $$\hat{b} = e^{-1,7953} d^{2.2974}$$ onde \texttt{b} é a biomassa em \emph{kg} e \texttt{d} é o DAP em \emph{cm}. Já um outro modelo para biomassa das árvores na mesma situação tem a forma: $$\hat{ln(b)} = -2.6464 + 1,996ln(d) + 0,7558ln(h)$$ onde \texttt{h} é a altura das árvores em \emph{m}. Para uma árvore com DAP de 15\emph{cm} e altura de 12\emph{m}, os modelos resultarão em estimativas muito distintas? \subsubsection{\texorpdfstring{Mantendo a Coerência Lógica-Matemática}{Mantendo a Coerencia LogicaMatematica}} \label{sec:mantendo_a_coerencia_logicamatematica} O R também lida com operações matemáticas que envolvem \textbf{elementos infinitos} e \textbf{elementos indeterminados}: \begin{verbatim} > 1/0 [1] Inf > -5/0 [1] -Inf > 500000000000000000/Inf [1] 0 > 0/0 [1] NaN > Inf/Inf [1] NaN > log(0) [1] -Inf > exp(-Inf) [1] 0 > sqrt(Inf) [1] Inf > sqrt(-1) [1] NaN Warning message: NaNs produced in: sqrt(-1) > 2 * NA [1] NA > 2 * NaN [1] NaN > NA / 10 [1] NA > NaN / -1 [1] NaN \end{verbatim} Note que determinadas \textbf{palavras} (além do nome das funções) estão reservadas no R, pois são utilizadas com significado especial: \begin{itemize} \item \texttt{pi} - constante pi = 3.141593 ; \item \texttt{Inf} - infinito; \item \texttt{NaN} - indeterminado (Not a Number), normalmente resultado de uma operação matemática indeterminada; \item \texttt{NA} - indeterminado (Not Available), normalmente caracterizando uma observação perdida (\emph{missing value}). \end{itemize} Na operações matemáticas, \texttt{NaN} e \texttt{NA} atuam sempre como \textbf{indeterminado}. \emph{\textbf{2.5. Exercício Conceitual:} Criando Variáveis com Nomes Reservados} O que acontece se você criar uma variável com o nome \texttt{pi}? Por exemplo, \lstset{frame=single, language=rsplus} \begin{lstlisting} > pi = 10 \end{lstlisting} O que acontece com a constante \emph{pi}? E se for criada uma constante de nome \texttt{sqrt}? O que acontece com a função raiz quadrada (\texttt{sqrt()})? \textbf{DICA:} O que faz a função \texttt{search}, no comando:\lstset{frame=single, language=rsplus} \begin{lstlisting} > search() \end{lstlisting} \paragraph{\texorpdfstring{Exercícios}{Exercicios}} \label{sec:exercicios2} \emph{\textbf{2.6. Exercício Conceitual:} O que é uma Observação Perdida} Como se caracteriza uma \textbf{observação perdida}? Quando o diâmetro de uma árvore deve ter o valor \textbf{zero} ou o valor \textbf{NA}? E o peso de um animal? E a biomassa de uma floresta? E a espécie de uma ave? \subsection{\texorpdfstring{O R como uma Calculadora Vetorial}{O R como uma Calculadora Vetorial}} \label{sec:o_r_como_uma_calculadora_vetorial} \subsubsection{\texorpdfstring{Criação de Vetores}{Criaao de Vetores}} \label{sec:criaao_de_vetores} O R, e a linguagem S, foram criados para operar não apenas \emph{número-a-número} como uma calculadora convencional. O R é um ambiente \textbf{vetorial}, isto é, quase todas suas operações atuam sobre um \emph{conjunto de valores}, que genericamente chamaremos de vetores\footnote{No R, ,,vetores" são uma classe de objetos definida simplesmente como conjuntos de elementos de um mesmo tipo. Os vetores do R não correspondem a vetores de valores da álgebra matricial, para os quais há outra classe de objetos, que é ,,matrix"}. Uma definição mais detalhada dos vetores está \href{http://ecor.ib.usp.br/doku.php?id=03_apostila:04-dados\%23vetores}{na seção sobre manipulação de dados}. Aqui fornecemos apenas algumas definições e funções importantes para compreender as operações numéricas com vetores. \paragraph{\texorpdfstring{Concatenação de Elementos em um Vetor: a Função c}{Concatenaao de Elementos em um Vetor a Funao c}} \label{sec:concatenaao_de_elementos_em_um_vetor_a_funao_c} Para criar um vetor, podemos usar a função \texttt{c} (c = colar, concatenar). Essa função simplesmente junta todos os argumentos dados a ela, formando um vetor:\lstset{frame=single, language=rsplus} \begin{lstlisting} > a = c(1, 10, 3.4, pi, pi/4, exp(-1), log( 2.23 ), sin(pi/7) ) > a [1] 1.0000000 10.0000000 3.4000000 3.1415927 0.7853982 0.3678794 0.8020016 0.4338837 > \end{lstlisting} \paragraph{\texorpdfstring{Criação de Sequências: Operador : e Função seq}{Criaao de Sequencias Operador e Funao seq}} \label{sec:criaao_de_sequencias_operador__e_funao_seq} Para criar vetores de números com intervalo fixo unitário (intervalo de 1) se utiliza o \emph{operador sequencial} (\texttt{:}):\lstset{frame=single, language=rsplus} \begin{lstlisting} > b = 1:8 > b [1] 1 2 3 4 5 6 7 8 > c = 20:32 > c [1] 20 21 22 23 24 25 26 27 28 29 30 31 32 > d = 2.5:10 > d [1] 2.5 3.5 4.5 5.5 6.5 7.5 8.5 9.5 \end{lstlisting} Uma forma mais flexível de criar sequências de números (inteiros ou reais) é usando a função \texttt{'seq}':\lstset{frame=single, language=rsplus} \begin{lstlisting} > 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 > seq(10, 30, by=2) [1] 10 12 14 16 18 20 22 24 26 28 30 > seq(1.5, 7.9, length=20) [1] 1.500000 1.836842 2.173684 2.510526 2.847368 3.184211 3.521053 3.857895 [9] 4.194737 4.531579 4.868421 5.205263 5.542105 5.878947 6.215789 6.552632 [17] 6.889474 7.226316 7.563158 7.900000 \end{lstlisting} \paragraph{\texorpdfstring{Vetores de Valores Repetidos: Função rep}{Vetores de Valores Repetidos Funao rep}} \label{sec:vetores_de_valores_repetidos_funao_rep} Também é fácil criar uma sequência de números repetidos utilizando a função \texttt{'rep}':\lstset{frame=single, language=rsplus} \begin{lstlisting} > rep(5, 3) [1] 5 5 5 > rep(1:5, 3) [1] 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 > rep(1:5,each=3) [1] 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 > \end{lstlisting} \paragraph{\texorpdfstring{Exercícios}{Exercicios}} \label{sec:exercicios3} \emph{\textbf{Exercício 2.7.} Palmeira com Muitos Fustes I} 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 \texttt{'dap}' com os diâmetros acima e uma sequência que enumera os fustes. \subsubsection{\texorpdfstring{Vetores: Operações Matemáticas}{Vetores Operaoes Matematicas}} \label{sec:vetores_operaoes_matematicas} Todas operações matemáticas aplicadas sobre um vetor, serão aplicadas sobre cada elemento desse vetor:\lstset{frame=single, language=rsplus} \begin{lstlisting} > 2 * a [1] 2.0000000 20.0000000 6.8000000 6.2831853 1.5707963 0.7357589 1.6040032 [8] 0.8677675 > sqrt( a ) [1] 1.0000000 3.1622777 1.8439089 1.7724539 0.8862269 0.6065307 0.8955454 [8] 0.6586985 > > log( a ) [1] 0.0000000 2.3025851 1.2237754 1.1447299 -0.2415645 -1.0000000 -0.2206447 [8] -0.8349787 > \end{lstlisting} Se as variáveis que trabalhamos são vetores, operações matemáticas entre variáveis serão realizadas pareando os elementos dos vetores:\lstset{frame=single, language=rsplus} \begin{lstlisting} > a* b [1] 1.000000 20.000000 10.200000 12.566371 3.926991 2.207277 5.614011 [8] 3.471070 > a - b [1] 0.0000000 8.0000000 0.4000000 -0.8584073 -4.2146018 -5.6321206 -6.1979984 [8] -7.5661163 > a^(1/b) [1] 1.0000000 3.1622777 1.5036946 1.3313354 0.9528356 0.8464817 0.9689709 [8] 0.9008898 > > sqrt( a ) [1] 1.0000000 3.1622777 1.8439089 1.7724539 0.8862269 0.6065307 0.8955454 [8] 0.6586985 > log( b ) [1] 0.0000000 0.6931472 1.0986123 1.3862944 1.6094379 1.7917595 1.9459101 [8] 2.0794415 > \end{lstlisting} \paragraph{\texorpdfstring{Comprimento de Vetores e a Função length}{Comprimento de Vetores e a Funao length}} \label{sec:comprimento_de_vetores_e_a_funao_length} A função \texttt{length} retorna o número de elementos de um objeto:\lstset{frame=single, language=rsplus} \begin{lstlisting} > a <- seq(from=0, to=10, by=2) > a [1] 0 2 4 6 8 10 > length(a) [1] 6 > length(1:20) [1] 20 > length(rep(1:10,each=10)) [1] 100 > \end{lstlisting} \paragraph{\texorpdfstring{A Regra da Ciclagem}{A Regra da Ciclagem}} \label{sec:a_regra_da_ciclagem} O comprimento é muito importante para as operações vetoriais, pois o R permite operações entre dois vetores de comprimentos diferentes, com a seguinte regra:\textbf{Ciclagem de Valores} Operações entre vetores de comprimentos diferentes são realizadas pareando-se seus elementos. Os elementos do vetor mais curto são repetidos sequencialmente até que a operação seja aplicada a todos os elementos do vetor mais longo Quando o comprimento do vetor maior não é múltiplo do comprimento do maior, o R retorna o resultado e um aviso: \lstset{frame=single, language=rsplus} \begin{lstlisting} > b [1] 0 0 0 0 0 1 1 1 1 1 > c [1] 1 2 3 > c*b [1] 0 0 0 0 0 3 1 2 3 1 Warning message: In c * b : longer object length is not a multiple of shorter object length > length(b) [1] 10 > length(c) [1] 3 > \end{lstlisting} Mas se o comprimento do vetor maior é um múltiplo do maior, o R retorna apenas o resultado, sem nenhum alerta:\lstset{frame=single, language=rsplus} \begin{lstlisting} > a [1] 1 2 > b [1] 0 0 0 0 0 1 1 1 1 1 > a*b [1] 0 0 0 0 0 2 1 2 1 2 > length(b)/length(a) [1] 5 > \end{lstlisting} Portanto \textbf{muito cuidado com as operações entre vetores de diferentes comprimentos}. A regra da ciclagem é um recurso poderoso da linguagem R \footnote{A vantagem mais óbvia da regra da ciclagem é a possibilidade de multiplicação de um vetor por um valor único. Você compreende por que?}, mas se você não tiver clareza do que deseja fazer, pode obter resultados indesejados. \paragraph{\texorpdfstring{Exercícios}{Exercicios}} \label{sec:exercicios4} \emph{\textbf{Exercício 2.8. } Palmeira com Muitos Fustes II} Uma palmeira perfilhada possui 10 fustes com os seguintes diâmetros: 5, 6, 7, 5, 10, 11, 6, 8, 9 e 7. \begin{enumerate} \item Calcule a área transversal de cada fuste dessa palmeira. Guarde este resultado em novo objeto. \item Calcule a média das áreas transversais, sem usar a função \texttt{mean}. \item Calcule a variância das áreas transversais, sem usar a função \texttt{var} \end{enumerate} \emph{\textbf{Exercício 2.9.} Bits e Bytes} 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? Essa sequência numérica parte do 2 e dobra os valores a cada passo. \subsubsection{\texorpdfstring{Vetores: Operações Estatísticas}{Vetores Operaoes Estatisticas}} \label{sec:vetores_operaoes_estatisticas} As funções matemáticas sobre vetores operam \emph{elemento-a-elemento}. Já as funções estatísticas operam no vetor \textbf{como um todo}:\lstset{frame=single, language=rsplus} \begin{lstlisting} > mean( a ) [1] 2.491344 > var( b ) [1] 6 > max( c ) [1] 32 > sd( a ) [1] 3.259248 > sum( c ) [1] 338 > min( b ) [1] 1 > range( c ) [1] 20 32 > \end{lstlisting} Algumas funções úteis que não são estatísticas, mas operam no vetor são:\lstset{frame=single, language=rsplus} \begin{lstlisting} > a [1] 1.0000000 10.0000000 3.4000000 3.1415927 0.7853982 0.3678794 0.8020016 [8] 0.4338837 > sort(a) [1] 0.3678794 0.4338837 0.7853982 0.8020016 1.0000000 3.1415927 3.4000000 [8] 10.0000000 > rev(sort(a)) [1] 10.0000000 3.4000000 3.1415927 1.0000000 0.8020016 0.7853982 0.4338837 [8] 0.3678794 > cumsum(sort(a)) [1] 0.3678794 0.8017632 1.5871613 2.3891629 3.3891629 6.5307556 9.9307556 [8] 19.9307556 > cumsum(a) [1] 1.00000 11.00000 14.40000 17.54159 18.32699 18.69487 19.49687 19.93076 > diff(a) [1] 9.0000000 -6.6000000 -0.2584073 -2.3561945 -0.4175187 0.4341221 -0.3681178 > diff( seq(10, 34, length=15) ) [1] 1.714286 1.714286 1.714286 1.714286 1.714286 1.714286 1.714286 1.714286 [9] 1.714286 1.714286 1.714286 1.714286 1.714286 1.714286 > \end{lstlisting} \paragraph{\texorpdfstring{Exercícios}{Exercicios}} \label{sec:exercicios5} \emph{\textbf{Exercício 2.10.} Conta de Luz} As leituras mensais do medidor de consumo de eletricidade de uma casa foram:\begin{longtable}{|l|l|l|l|l|l|l|l|l|l|l|l|} \hline \textbf{Jan} & \textbf{Fev} & \textbf{Mar} & \textbf{Abr} & \textbf{Mai} & \textbf{Jun} & \textbf{Jul} & \textbf{Ago} & \textbf{Set} & \textbf{Out} & \textbf{Nov} & \textbf{Dez} \\ \hline 9839 & 10149 & 10486 & 10746 & 11264 & 11684 & 12082 & 12599 & 13004 & 13350 & 13717 & 14052 \\ \hline \end{longtable} \begin{enumerate} \item Calcule o consumo de cada mês neste período. \item Qual foi o máximo e mínimo de consumo mensal? \item Qual a média, mediana e variância dos consumos mensais? \end{enumerate} \subsection{\texorpdfstring{As Funções no R}{As Funoes no R}} \label{sec:as_funoes_no_r} Já foi visto que ao se digitar o nome de uma função na linha de comando, o R retorna o \textbf{código} da função. Veja a diferença de:\lstset{frame=single, language=rsplus} \begin{lstlisting} > ls() \end{lstlisting} para:\lstset{frame=single, language=rsplus} \begin{lstlisting} > ls \end{lstlisting} A maioria das funções precisa de certas \textbf{informações} para orientar o seu procedimento, tais informações são chamados de \textbf{argumentos}. 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 \texttt{'args}':\lstset{frame=single, language=rsplus} \begin{lstlisting} > args(ls) function (name, pos = -1, envir = as.environment(pos), all.names = FALSE, pattern) NULL > args(q) function (save = "default", status = 0, runLast = TRUE) NULL > args(save.image) function (file = ".RData", version = NULL, ascii = FALSE, compress = !ascii, safe = TRUE) NULL > \end{lstlisting} 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:\lstset{frame=single, language=rsplus} \begin{lstlisting} > args(sin) NULL > sin .Primitive("sin") > \end{lstlisting} Outras funções simplesmente não possuem argumentos:\lstset{frame=single, language=rsplus} \begin{lstlisting} > args(getwd) function () NULL > getwd function () .Internal(getwd()) > \end{lstlisting} Ao observar o resultado da função \texttt{'args}', você notará que alguns argumentos são seguidos de uma expressão que se inicia com o sinal de igualdade (\texttt{'=}'). A expressão após o sinal de igualdade é chamada de \textbf{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 \texttt{'save.image}':\lstset{frame=single, language=rsplus} \begin{lstlisting} > args(save.image) function (file = ".RData", version = NULL, ascii = FALSE, compress = !ascii, safe = TRUE) NULL > \end{lstlisting} Se o usuário simplesmente evocar a função \texttt{'save.image()}', sem informar o nome do arquivo onde a área de trabalho deve ser gravada, o R gravará as informações num arquivo com nome \texttt{'.RData}'. \paragraph{\texorpdfstring{Exercícios}{Exercicios}} \label{sec:exercicios6} \emph{\textbf{Exercício 2.11.} Argumentos de Funções Estatísticas } Quais são os argumentos (e seus valores default) das seguintes funções: \begin{itemize} \item \textbf{mean} \item \textbf{sd} \item \textbf{range} \item \textbf{cumsum} \end{itemize} \emph{\textbf{Exercício 2.12.} Argumentos de Funções de Uso Comum } Quais são os argumentos (e seus valores default) das funções: \begin{itemize} \item \textbf{sort} \item \textbf{log} \item \textbf{seq} \end{itemize} O que é o argumento \textbf{,,. . ."}? \subsection{\texorpdfstring{Distribuições Estatísticas: Funções no R}{Distribuioes Estatisticas Funoes no R}} \label{sec:distribuioes_estatisticas_funoes_no_r} Sendo um ambiente para análise de dados, o R dispõe de um grande conjunto de funções para trabalhar com \emph{Distribuições Estatísticas}. Essas funções ajudam não só na análise de dados, como também permitem a \emph{simulação} de dados. \subsubsection{\texorpdfstring{Distribuição Normal}{Distribuiao Normal}} \label{sec:distribuiao_normal} 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 \texttt{'rnorm}':\lstset{frame=single, language=rsplus} \begin{lstlisting} > args( rnorm ) function (n, mean = 0, sd = 1) NULL > vn1 = rnorm( 1000, mean = 40, sd = 9 ) > mean( vn1 ) [1] 39.47248 > sd( vn1 ) [1] 8.523735 > range( vn1 ) [1] 14.93126 62.11959 > > vn2 = rnorm( 100000, mean = 40, sd = 9 ) > mean( vn2 ) [1] 40.02547 > sd( vn2 ) [1] 9.025218 > range( vn2 ) [1] 3.40680 78.25496 > \end{lstlisting} Se quisermos saber a \emph{probabilidade acumulada} até um certo valor de uma variável com distribuição normal utilizamos a função \texttt{'pnorm}':\lstset{frame=single, language=rsplus} \begin{lstlisting} > args(pnorm ) function (q, mean = 0, sd = 1, lower.tail = TRUE, log.p = FALSE) NULL > > pnorm( 1.96, mean = 0 , sd = 1 ) [1] 0.9750021 > pnorm( 1.96 ) [1] 0.9750021 > > pnorm( 27, mean = 20, sd = 7 ) [1] 0.8413447 > pnorm( 13, mean = 20, sd = 7 ) [1] 0.1586553 > \end{lstlisting} Se quisermos obter o valor de um \emph{quantil} da distribuição normal utilizamos a função \texttt{'qnorm}':\lstset{frame=single, language=rsplus} \begin{lstlisting} > args( qnorm ) function (p, mean = 0, sd = 1, lower.tail = TRUE, log.p = FALSE) NULL > qnorm( 0.90 ) [1] 1.281552 > qnorm( 0.30 ) [1] -0.5244005 > > qnorm( 0.90, 20, 7) [1] 28.97086 > qnorm( 0.30, 20, 7) [1] 16.32920 > \end{lstlisting} A função \texttt{'dnorm}' fornece a \emph{densidade probabilística} para cada valor de uma variável Normal:\lstset{frame=single, language=rsplus} \begin{lstlisting} > args( dnorm ) function (x, mean = 0, sd = 1, log = FALSE) NULL > 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 > points(x, dnorm(x, sd=2)) # Curva da Dist. Normal com média 0 e desvio padrão 2 (adicionada ao gráfico) > \end{lstlisting} \paragraph{\texorpdfstring{Exercícios}{Exercicios}} \label{sec:exercicios7} \emph{\textbf{Exercício 2.13} Amplitude Normal} Tomando uma variável que segue a Distribuição Normal, o que acontece com a \emph{amplitude de variação} dos dados à medida que o tamanho da amostra cresce (por exemplo n= 100, 1000, 10000)? \textbf{Dica:} use as funções \texttt{range} e \texttt{diff} \emph{\textbf{Exercício 2.14.} Intervalo Normal I } Qual o intervalo da Distribuição Normal Padronizada que têm a média no centro e contém 50\% das observações? \emph{\textbf{Exercício 2.15.} Intervalo Normal II } Qual a probabilidade de uma observação da variável Normal Padronizada estar no intervalo [-1.96 , 1.96]? \subsubsection{\texorpdfstring{As Funções que Operam em Distribuições Estatísticas}{As Funoes que Operam em Distribuioes Estatisticas}} \label{sec:as_funoes_que_operam_em_distribuioes_estatisticas} O que foi apresentado para Distribuição Normal pode ser generalizado para todas as distribuições que o R trabalha. Há quatro funções para se trabalhar com distribuições estatísticas: \begin{itemize} \item \textbf{d}\emph{distrib} - retorna a \emph{densidade probabilística} para um dado valor da variável; \item \textbf{p}\emph{distrib} - retorna a \emph{probabilidade acumulada} para um dado valor da variável; \item \textbf{q}\emph{distrib} - retorna o \emph{quantil} para um dado valor de probabilidade acumulada; \item \textbf{r}\emph{distrib} - retorna \emph{valores} (números aleatórios) gerados a partir da distribuição; \end{itemize} No caso da Distribuição Normal: \emph{distrib} = \texttt{norm}. Para outras distribuições temos: \textbf{DISTRIBUIÇÕES ESTATÍSTICAS NO R}\begin{longtable}{|l|l|l|} \hline \textbf{ Distribuição } & \textbf{ Nome no R } & \textbf{ Parâmetros\footnote{os argumentos de cada função incluem estes parâmetros, entre outras coisas} } \\ \hline beta & beta & shape1, shape2, ncp \\ \hline binomial & binom & size, prob \\ \hline Cauchy & cauchy & location, scale \\ \hline qui-quadrado & chisq & df, ncp \\ \hline exponential & exp & rate \\ \hline F & f & df1, df2, ncp \\ \hline gamma & gamma & shape, scale \\ \hline geométrica & geom & prob \\ \hline hypergeométrica & hyper & m, n, k \\ \hline log-normal & lnorm & meanlog, sdlog \\ \hline logística & logis & location, scale \\ \hline binomial negativa & nbinom & size, prob \\ \hline normal & norm & mean, sd \\ \hline Poisson & pois & lambda \\ \hline t de Student & t & df, ncp \\ \hline uniforme & unif & min, max \\ \hline Weibull & weibull & shape, scale \\ \hline Wilcoxon & wilcox & m, n \\ \hline \end{longtable} \paragraph{\texorpdfstring{Exercícios}{Exercicios}} \label{sec:exercicios8} \emph{\textbf{Exercício 2.16.} Teste t } Você realizou um teste \emph{t} de Student bilateral e obteve o valor \emph{t = 2.2} com 19 graus de liberdade. O teste é significativo ao nível de probabilidade de 5\%? E se o valor observado fosse \emph{t = 1.9}? \emph{\textbf{Exercício 2.17.} Teste F } Você realizou um teste \emph{F} e obteve o valor \emph{F = 2.2} com 19 graus de liberdade no numerador e 24 graus de liberdade no denominador. O teste é significativo ao nível de probabilidade de 5\%? E se o valor observado fosse \emph{F = 2.5}? \emph{\textbf{Exercício 2.18.} Padrão Espacial I } Gere duas amostras (p.ex.: \emph{x} e \emph{y}) de tamanho 1000 (n=1000) de números da distribuição Uniforme. Faça um gráfico plotando uma amostra contra a outra (\texttt{plot(x,y)}). Qual o padrão espacial observado? Você consegue explicá-lo? \emph{\textbf{Exercício 2.19.} Padrão Espacial II } Gere duas amostras (p.ex.: \emph{xp} e \emph{yp}) de tamanho 10 (n=10) de números da distribuição Uniforme, com valor mínimo de zero e máximo de 100. Gere duas amostras (p.ex.: \emph{xf} e \emph{yf}) de tamanho 1000 (n=1000) de números da distribuição Normal com média zero e desvio padrão 2) Faça um gráfico plotando a soma das amostras X (\emph{xp+xf}) contra a soma das amostras Y (\emph{yp+yf}) (\texttt{plot(xp+xf,yp+yf)}). Qual o padrão espacial observado? Você consegue explicá-lo? \emph{\textbf{Exercício 2.20.} Gráfico Quantil-Quantil } Construa uma seqüência \textbf{ordenada} de 1000 números entre 0 e 1: \lstset{frame=single, language=rsplus} \begin{lstlisting} > p = seq(0, 1, length=1000) \end{lstlisting} O vetor \texttt{'p}' representa um vetor de probabilidades acumuladas. 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:\lstset{frame=single, language=rsplus} \begin{lstlisting} > x = sort( rnorm(1000, mean=1) ) \end{lstlisting} Faça um gráfico dos quantis da distribuição Normal, tomando o vetor \texttt{'p}' de probabilidades, contra os valores de \texttt{'x}':\lstset{frame=single, language=rsplus} \begin{lstlisting} > plot( qnorm(p, mean=1), x ) \end{lstlisting} Como é o gráfico resultante? Repita o mesmo processo para a distribuição Exponencial ( \texttt{'rexp}' ), cujo valor \emph{default} resulta em média = 1 . Como é o gráfico resultante? Por que? \end{document}