Lista de Funções do R Esta é apenas e tão somente uma lista das funções utilizadas nesse curso introdutório. Glossário Antes da lista de funções per se, faz-se necessário apresentar o glossário dos termos mais utilizados no curso. - Pasta ou Diretório de trabalho - local no computador onde todos os arquivos referentes a análise de dados (i.e., banco de dados, gráficos, output,... ) serão salvos. Sessão de trabalho - esta se inicia toda vez que o programa é aberto e o usuário define a pasta de trabalho em que a análise de dados será salva. A sessão de trabalho é salva continuamente em arquivo com extensão.rdata na pasta de trabalho. Este arquivo deve ser carregado ao início de cada sessão. Para salvar a sessão de trabalho continuamente, deve-se utilizar a função save.image() no Console. Console - janela dentro do programa que exibe a linha de comando iniciada pelo símbolo >. Nessa linha de comando, as funções do R são utilizadas por meio de escrita textual do código seguido do botão ENTER (i.e., no jargão dos programadores isso é equivalente a expressão rodar comando ). Os comandos utilizados na linha de comando ficam salvos temporariamente (i.e., até a sessão de trabalho anterior) em arquivo com extensão.rhistory na pasta de trabalho. Script - janela dentro do programa que exibe os comandos a serem rodados no Console utilizando CTRL+R. O Script pode ser salvo com extensão.r, o que permite visualizá-lo na pasta de trabalho dentro do programa. Este arquivo deve ser aberto no início de cada sessão de trabalho. Output - há dois tipos de output no R: primeiro, aquele que aparece no Console logo depois que rodamos um comando; segundo, a janela de gráficos a qual aparece toda vez que rodamos comando de gráfico (e.g., utilizando a função plot()). A janela de gráficos pode ser salva em arquivos de extensão de imagem (.jpg,.tif,.png,... ) ou em.pdf. Função do R - código que executa ações em determinado objeto no R. No jargão de usuários do R, diz-se que função é ferramenta para manipular o objeto. Há, também, quem invoque a metáfora do marceneiro para explicar o que é função. O marceneiro utiliza ferramenta para esculpir a madeira e transformá-la em algo útil. Da mesma forma, o analista de dados utiliza função do R para trabalhar seus dados os quais são objetos no R. Objetos no R - veja melhor explicação na subseção Criação de objetos no R. Instalar o programa O programa R pode ser instalado do website oficial http://www.r-project.org/: CRAN Mirror (e.g., Brazil-University of Sao Paulo, Sao Paulo) Download and Install R for Windows. Como pedir ajuda? As funções do R têm documentação online. help(lm) ou?lm - ajuda da função lm(). help.search("linear model") ou??"linear model" - busca em todo sistema de ajuda a função ou objeto que 1
possui em sua descrição a expressão linear model. help.start() - inicia-se a versão HTML do sistema de ajuda. Pode-se clicar em cima de packages para ver todos os pacotes instalados. Depois, pode-se clicar em cima de, por exemplo, stats para ver todas as funções estatísticas disponíveis nesse pacote. Instalar e carregar pacotes Os pacotes podem ser instalados de servidor local (i.e., local mirror) a partir do próprio programa em instalar pacotes no menu Pacotes ou utilizando a função install.packages() no Console. require(epicalc) - carrega pacote previamente instalado no programa. DICA: carregar sempre o pacote no início de cada sessão de trabalho. Importar e exportar base de dados É possível elaborar e armazenar bancos de dados como objetos dentro do R. Mas, neste curso, a recomendação é que o banco de dados seja elaborado no EpiInfo TM (http://wwwn.cdc.gov/epiinfo/) e depois importado no R. Adicionalmente, é possível importar no R arquivos SAS, Stata, SPSS, Minitab, DBF e EpiInfo utilizando as funções do pacote foreign. A seguir estão as funções de importação e exportação utilizadas nesses curso. read.table(arquivo, header = TRUE, sep = ) - importa arquivo em formato de planilha e cria data.frame com o mesmo. O nome do arquivo tem de estar entre aspas e conter a extensão (e.g.,.txt). Em geral, utiliza-se o argumento header = TRUE para utilizar a primeira linha da tabela como cabeçalho (i.e., linha com o nome das colunas). Finalmente, utiliza-se o argumento sep = que indica espaço em branco como separador de colunas para importar corretamente a estrutura da planilha. read.csv(arquivo, header = TRUE, sep =, ) - importa arquivo.csv (i.e., arquivo com vírgula como separador de colunas). Esta é a forma de importação mais utilizada nesse curso porque esse tipo de arquivo pode ser elaborado na planilha de dados mais utilizada do planeta (i.e., Excel TM ). As mesmas regras de read.table() podem ser aplicadas com essa função, mas é importante enfatizar que o tipo de separador é vírgula, sendo então utilizado o argumento sep =,. write.table(x, arquivo, row.names = TRUE, col.names = TRUE, sep = ) - exporta qualquer objeto do R o qual é primeiramente transformado em uma planilha de dados antes da exportação. Assim, deve-se declarar dentro dessa função o x (nome do objeto no R), o nome do arquivo (e.g., meus.dados.txt ), primeira linha (row.names = TRUE), primeira coluna (col.names = TRUE) e o tipo de separador de colunas (sep = ). Criação de objetos no R No R, tudo é objeto. A programação orientada a objetos é um dos paradigmas modernos das linguagens de programação, sendo assim observada na maioria das linguagens contemporâneas de alto nível, e.g., Python, Java,.... No R, as bases de dados vão ser sempre transformadas em objetos para a análise de dados. O nome de objeto (a gosto do freguês) é atribuído (< ) por meio de determinada função que cria 2
objetos (e.g., meu.objeto.do.r < c(1, 25, 74, 40)). Há, pelo menos, 6 tipos dessas funções que criam objetos, sendo as quais frequentemente utilizados e ensinados nesse curso: vetor, planilha de dados, tabela, fator, lista e função. c(...) - função genérica que combina argumentos para formar um vetor. O vetor é adimensional, podendo representar linha ou coluna de uma planilha de dados. data.frame(...) - cria-se uma planilha de dados com essa função. Em epidemiologia, este é um objeto muito utilizado, sendo pacientes representados nas linhas e variáveis nas colunas. matrix(x, nrow =, ncol =, byrow = TRUE) - tabelas de contingência são criadas com essa função. Para criar uma tabela 2x2, deve-se declarar o x (vetor contendo os valores das 4 caselas), número de linhas e de colunas (nrow = 2, ncol = 2 ). factor(x, levels=) - transforma vetor (x) em fator (i.e., variável categórica) o qual possui categorias (levels =) representadas por nomes. Ao fazer essa transformação, percebe-se que as categorias da variável ficam entre aspas ( ). É por meio das aspas que o R reconhece que a variável é do tipo string (i.e., texto). list(...) - cria-se objeto lista que é o mais recursivo de todos os objetos do R. Assim, a lista é conhecida, popularmente, como o varal em que é possível pendurar todo e qualquer tipo de objeto. Por isso, a mesma é utilizada para guardar o output da análise de dados. Nesse output podem haver vários tipos de objetos do R, por exemplo um vetor e uma tabela, os quais estão salvos dentro dessa lista. function(...) - esta é a função que cria novas funções no R. Mais explicações sobre essa função na subseção Programação. Objetos criados na Sessão de trabalho Para o iniciante no R, pode parecer que os objetos não foram criados utilizando os comandos acima. Utiliza-se a função ls() para retornar todos os objetos criados e salvos na sessão de trabalho. Visualização de objetos no R A visualização é simples. Uma vez que o objeto está criado, utiliza-se o nome do objeto para a visualização. Entretanto, existem outras formas de ver o objeto. A mais utilizada nesse curso é: str(x) - exibe a estrutura interna do objeto (x), informando o tipo de objeto, número de observações e classe de cada variável. Exitem duas classes de variáveis no R: primeira, categórica (e.g., factor, character); segunda, numérica (e.g., integer, numeric). Indexação de objetos no R A indexação é utilizada para selecionar subconjuntos de valores do objeto no R. Para objeto adimensional como o vetor, utiliza-se: x[n] - seleciona-se o n enésimo elemento do vetor x. Para objetos bi-dimensionais como a tabela e a planilha de dados, utiliza-se: x[i, j] - seleciona-se o elemento da linha i da coluna j. Para selecionar todas as linhas e determinada coluna j, utiliza-se x[, j]. Adicionalmente, podem ser selecionadas as dez primeiras linhas de todas as colunas (i.e., x[1:10, ]). 3
Coerção de objetos no R Produção de gráficos A coerção é a transformação de um objeto em outro. Para transformar um factor em objeto numérico, utiliza-se: as.numeric(x) - esta função transforma x que é um factor em objeto numérico. Em adição, pode-se transformar uma tabela (matrix) em planilha de dados (data.frame) utilizando: as.data.frame - transforma-se tabela em planilha de dados. Para conhecer as demais funções de coerção de objetos no R, utiliza-se method(as). Estatística descritiva Aqui é uma orientação simples e direta de procedimentos utilizados na análise estatística descritiva. Para variáveis qualitativas (categóricas) e discretas, utilizam-se as seguintes funções: table(x) - esta função retorna a distribuição de frequência absoluta das categorias na variável x. prop.table(table(x)) - estas funções, uma dentro da outra, retornam a distribuição de frequência relativa das categorias na variável x. Para as variáveis quantitativas contínuas, são utilizadas as funções a seguir: summary(x) - a função retorna média, mediana, mínimo e máximo da variável x. A mesma deve ser complementada com sd(x) para obter o desvio padrão dessa variável. A produção de gráficos pode ter dois objetivos: primeiro, complementar a análise estatística descritiva; segundo, apresentar os resultados de forma elegante e sintética em manuscritos ou demais trabalhos acadêmicos. Para saber se a variável x tem Distribuição Normal, as funções de histograma e de gráfico Quantil-Quantil podem ser utilizadas: hist(x) - faz-se histograma da variável x. qqnorm(x) - faz-se gráfico Quantil- Quantil da variável x. Frequentemente, combina-se esta função com outra (qqline(x)) para obter a linha de referência teórica esperada se a variável x fosse Normal. Para visualizar a relação entre duas variáveis, são utilizadas as funções a seguir: barplot(table(x)) - exibe graficamente a relação das distribuições de frequência de duas variáveis qualitativas em uma tabela x. boxplot(y x) - exibe graficamente a distribuição de frequência da variável quantitativa contínua (y) segundo as categorias da variável x. plot(x, y) - exibe graficamente a relação entre variáveis quantitativas contínuas, sendo x independente e y dependente. pairs(x) - esta função pode ser utilizada para produzir, a partir de uma planilha de dados (data.frame x), a matriz de dispersão. Para exibir também a matriz de correlação, precisa-se da função interna panel.cor que pode ser obtida no help da função pairs() (i.e.,?pairs). 4
Customização de gráficos A customização de gráficos é muito particular. Entretanto, algumas regras básicas devem ser seguidas. Por exemplo, torna-se imprescindível disponibilizar o título e os rótulos dos eixos X e Y dos gráficos. Ainda, gráficos coloridos são, em geral, preferíveis. Portanto, seguem argumentos mais utilizadas na customização de gráficos. main = Título do gráfico - argumento main serve em qualquer função de gráfico (e.g., plot(x, y, main = Meu Primeiro Gráfico: não ficou bacana? )). Esse argumento representa o título do gráfico. xlab = Nome do Rótulo do Eixo X, ylab = Nome do Rótulo do Eixo Y - esses argumentos são bem gerais e servem em todas as funções de gráfico (e.g., plot(x, y, xlab = Número de dias de curso de R, ylab = Aprendizagem no R ). Eles representam os rótulos dos eixos X e Y, respectivamente. col = red - esse argumento é para colorir os símbolos internos do gráfico (e.g., plot(x, y, col = red )). Existem muitas cores disponíveis no R (e.g., rode a função colours() para vê-las). Em adição, pode-se entrar no help de cada função de gráfico (e.g.,?barplot) e ver todos os argumentos disponíveis para customização. Finalmente, pode-se entrar no help da lista de argumentos gráficos disponíveis (e.g.,?par). Por exemplo, utiliza-se frequentemente o comando par(mfrow(2,2)) para pedir janela com 4 espaços 2x2 de gráficos. Testes de hipóteses O R tem uma família de funções para fazer os testes de hipóteses. Em geral, o nome dessas funções são bem intuitivos. Por exemplo, o teste não-paramétrico de Shapiro-Wilk é representado pela função shapiro.test(). Imaginem como chama a função para fazer o teste exato de Fisher? Só poderia ser a função fisher.test(). shapiro.test(x) - testa-se a hipótese nula de que a variável x adere a Distribuição Normal. fisher.test(x) - testa-se a hipótese nula de que há independência de linhas e colunas na tabela de contingência x de marginais fixas. chisq.test(x) - esta função calcula o teste de χ 2 de Pearson para a tabela de contingência x. cor.test(x, y, alternative = c("two.sided", "less", "greater"), method = c("pearson", "kendall", "spearman"),...) - esta função testa a correlação entre variáveis quantitativas contínuas x e y utilizando o coeficiente de correlação de Pearson ou de Kendall ou de Spearman. A hipótese alternativa deve ser bi-caudal (i.e., two-sided). Obviamente, existem outras funções disponíveis no pacote stats para fazer os testes de hipóteses mais utilizados em análise estatística. Na subseção Como pedir ajuda? está descrito como entrar nesse pacote e ver todas as suas funções. Modelos de regressão Os modelos de regressão linear são muito utilizados em análise estatística. No R, modelos lineares são representados pela função a seguir: lm(y x 1 + x 2 +... + x n ) - esta 5
é a função para fazer modelo de regressão linear, sendo que lm(y x 1 ) é simples e lm(y x 1 + x 2 ) é múltiplo. A variável y é dependente e a variável x é independente. Para ver os resultados do modelo, deve-se utilizar a função summary() (e.g., summary(lm1), sendo lm1 um objeto da função lm()). Em epidemiologia, o modelo de regressão logística binomial é também utilizado para, por exemplo, medir a associação entre variáveis de desfecho e explanatória. No R, esse modelo está incluso na família de modelo lineares generalizados (i.e., generalized linear model). Essa família é representada pela função glm() e a regressão logística binomial é explicitada dentro dessa função (i.e., family = binomial()). glm(y x 1 + x 2 +... + x n, family = binomial()) - esta função é utilizada para fazer a regressão logística binomial, sendo que glm(y x, family = binomial()) é o modelo simples e glm(y x 1 + x 2, family = binomial()) é o múltiplo. A variável de desfecho é y a qual é binomial (e.g., 0 = não-caso; 1 = caso). A variável explanatória é x que, em geral, deve ter sido transformada em dummy (e.g., 0 = baseline, 1 = presença de exposição ao risco). Para ver os resultados do modelo, deve-se utilizar a função logistic.display() (e.g., logistic.display(glm1), sendo glm1 um objeto da função glm()). A função logistic.display() está disponível no pacote epicalc (ver subseção Pacotes Epidemiológicos). Distribuições Além da famosa Distribuição Normal, existem muitas outras distribuições de probabilidades (e.g., Exponencial, Gamma, Poisson, Weibull, t, F,... ). No R, pode-se obter valores aleatórios dessas distribuições teóricas. Por exemplo, pode-se ver a seguir a função: rnorm(x, mean = 0, sd = 1) - utilizada para obter valores aleatórios de uma Distribuição Normal em sua forma reduzida (i.e., µ = 0 e σ = 1). O argumento x é o número de valores que se deseja obter. Os valores de mean e sd podem ser alterados (e.g., rnorm(x, mean = 18, sd = 7)). Programação de novas funções Uma das grandes vantagens do R em relação aos outros programas de análise estatística é a criação de novas funções. No R, pode-se criar novas funções utilizando a função function(). minha.função < function(x, y, z) - esta função (e.g., minha.função) tem três argumentos (e.g., x, y e z). {... return - aqui é explicitado o output dessa função (i.e., minha.função) } - entre essas chaves (i.e., {... }) são explicitados os cálculos envolvendo os três argumentos x, y e z. Pacotes Epidemiológicos O R possui muitos pacotes (http://www.r-project.org/). Aqui, nós utilizamos três pacotes epidemiológicos: epicalc, epir e epibasix. epibasix - este pacote tem funções básicas utilizadas em epidemiologia. epir - este pacote tem funções avançadas utilizadas em epidemiologia. epicalc - este pacote tem funções utilizadas para modelos de regressão em 6
epidemiologia. Para ver o conteúdo de cada pacote, deve-se utilizar a funções help.start() (ver na subseção Instalar e carregar pacotes). Finalmente, termina-se aqui a lista de códigos utilizados nesse curso introdutório sobre a aplicação do ambiente R na análise estatística em epidemiologia. 7