Universidade Federal de Minas Gerais Luana Sílvia dos Santos Utilização da programação de computadores em Estatística Belo Horizonte Dezembro, 2012
O computador tem desempenhado um papel muito importante nos trabalhados de Estatística desde o fim da década de 60. Atualmente, o seu uso tem crescido de forma exponencial devido a difusão dos microcomputadores que ocorreu há alguns anos atrás. Nos dias de hoje é quase impossível desenvolver análises estatísticas de dados sem o uso do computador e de um software adequado. Até mesmo para conjuntos de dados pequenos ou médios, é necessário recorrer ao computador, visto que grande parte das técnicas incluem processos interativos e são numericamente sofisticadas. Como ferramenta de trabalho em pesquisa estatística, o papel do computador também tem crescido. Seja em estudo de Monte Carlo, seja como ferramenta para investigações heurísticas, o computador se faz cada vez mais presente no processo de busca de novas técnicas e metodologias, e até na formulação e solução de problemas teóricos. Existem hoje vários jornais científicos dedicados exclusivamente (ou com grande ênfase) à área de estatística computacional, como o Journal of Statistical Computation & Simulation, o SIAM Journal on Scientifc and Statistical Computation e o Communications in Statistics. Outros têm sistematicamente seções dedicadas à estatística computacional, ou a algoritmos estatísticos como: The American Statistician e Applied Statistics. O número de pacotes computacionais para análise estatística (ou simplesmente, pacotes estatísticos) tem crescido muito e a tendência é aumentar nos próximos anos. Uma nova perspectiva foi aberta com a possibilidade de se desenvolverem sistemas especialistas. Existe uma linguagem computacional voltada para solução de problemas estatísticos, o S, semelhante à linguagem C, desenvolvida originalmente nos laboratórios da Bell e atualmente em várias universidades e instituições de pesquisa. É muito difícil apresentar um panorama histórico do desenvolvimento do uso do computador em estatística. O início foi lento, e somente no final dos anos 60 o computador começou de fato a representar um papel importante no uso e desenvolvimento da estatística.
A partir dos anos 70 o desenvolvimento acelerou-se rapidamente, e começaram a aparecer livros sobre estatística computacional. Uma indicação da importância que adquiriu essa área são os frequentes simpósios sobre o assunto. Nas reuniões do International Statistical Institute e da American Statistical Association há sempre sessões sobre o tema e, anualmente, realizase o Computer Science & Statistics: Symposium on the Interface. Geração de Números Pseudo- Aleatórios Poderia parecer que fosse imprescindível ter uma definição precisa e rigorosa do que seja uma sequência aleatória, para, somente a partir dela, pensarmos em desenvolver métodos e algoritmos para sua obtenção num computador. Este é, no entanto, um problema complexo e profundo filosófico, inclusive relacionado com o que seja probabilidade. Uma sequência aleatória é um conceito vago, que engloba a ideia de uma sequência em que cada termo é imprevisível, e cujos dígitos passam por um certo número de testes, de uso trdicional pelos estatísticos, e que dependem, de certa forma, dos usos que se pretende dar à sequência. Com isso, fica claro porquê de podermos aceitar gerar sequências (pseudo) aleatórias através de precedimentos determinísticos. Na realidade, tais sequências não são aleatórias no sentido restrito da palavra, mas para fins práticos, comportam-se como se o fossem. Em geral cada centro de computação e, no caso de microcomputadores, cada linguagem de programação dispõem de um procedimento ou função para geração de sequências de valores pseudo-aleatórios. Sequências de números aleatórios têm uma grande gama de aplicações. Entre estas nas seguintes áreas: Amostragem: Para podermos selecionar, dentr os membros de uma população, aqueles que serão incluídos em uma amostra.
Simulação: Ao se imitar, através de um programa de computador, o comportamento de um sistema real, para estudar seu funcionamento sob condições alternativas. Cálculo Numérico: Atravpes de métodos engenhosos de solução de alguns problemas cujas equações têm um paralelo ou são as mesmas que ocorrem em certos processos estocáticos que podem ser, então, simulados. Com o desenvolvimento crescente dos métodos numéricos, está é uma área que tem hoje pouca relevância. Computação: Uma das maneiras de se testar alguns algoritmos é com o uso de sequências de valores aleatórios, como em técnicas de ordenação e busca. Isso quando desejamos saber se o método é adequado em diversas situações. Em vez de escolhermos conjuntos arbitrários de valores, podemos testar o algoritmo usando vários conjuntos de valores gerados aleatoriamente. Monte Carlo: Apesar de que os problemas englobados por simulação e uso de técnicas aleatórias em cálculo numérico podem e foram classificados muitas vezes como de Monte Carlo, esse nome é usado atualmente com frequência crescente, para nos referirmos ao uso de técnicas computacionais em que se geram amostras de acordo com determinadas distribuições teóricas conhecidas, visando estudar novos procedimentos estatísticos ou para compararmos o comportamento de diferentes técnicas estatísticas que poderiam ser empregadas num dado problema. Simulação Esta é, possivelmente, a área em que mais se usa geração de números aleatórios, na atualidade. É uma área muito vasta, que cresceu muito nos últimos vinte anos, tendo nascido com o computador digital. A idéia de construir modelos de simulação é muito antiga. As primeiras simulações feitas pelo homem talvez tenham sido na forma de maquetes para edificações e, mais tarde, em simulações de combates, usando pedras e galhos de árvores para representar batalhões e obstáculos. Possivelmente, o
avanço da ciência não teria alcançado o estágio em que nos encontramos, ou pelo menos teria nos levado por caminhos bastante diferentes, se o homem não tivesse a habilidade de quase inata de criar modelos e simular o comportamento de fenômenos do mundo real usando esses modelos. Foi, no entanto, o aparecimento do computador digital e sua enorme disseminação nos últimos anos que colocaram ao alcance das mentes e das mãos de um número crescente de pessoas a possibilidade de realizar simulações, desde simples joguinhos, até modelos da economia em escala mundial. Para as gerações mais novas, é em geral muito fácil transmitir ideias básicas sobre simulação. Todos os jogos eletrônicos são simulações discretas, algumas complexas. Quase qualquer revista ou livro de divulgação sobre computadores digitais de uso doméstico traz exemplos de alguns jogos simples que usam ideias básicas de simulação, incluindo o uso de geração de números aleatórios. O avanço na área de simulação discreta tem sido muito grande e contínuo. Existem hoje várias revistas técnicas especializadas no assunto e linguagens especiais de quarto nível, como GPSS, Simula e Simscript, dentre outros. Método de Monte Carlo O nome Método de Monte Carlo foi e é usado para indicar geração de números aleatórios, simulação e Método de Monte Carlo propriamente dito. Este nome é usado, com frêquencia crescente, para referir-se ao uso do computador para gerar diferentes situações amostrais e estudar o desempenho de procedimentos e técnicas estatísticas. Esse estudo pode comparar várias técnicas já existentes sob situações bastante variadas ou para experimentar uma técnica nova, ou um procedimento inovador, sob condições estabelecidas, comparando ou não os resultados obtidos com os que se obtêm com outros métodos preexistentes.
Podemos utilizar esse método para, por exemplo, comparar o esempenho de estimadores (média, mediana, trimédia, etc), comparar o desempenho de dois testes de hipóteses para duas situações amostrais e para realizar o cálculo de uma integral. Algoritmos para média, variância e covariância Devido basicamente aos problemasde imprecisão na representação interna de números reais e à maneira como são realizadas as operações básicas no computador, até mesmo os cálculos de médias, variâncias e covariâncias (e correlações) podem resultar em valores completamente errados. Que o problema pode ser sério, principalmente para variâncias e covariâncias (e correlações) evidencia-se pelo fato de que, em 1977, pacotes de uso muito frequentes como SPSS, DATATEXT e OSIRIS produziram resultados errados para conjuntos de dados simples, como apontadi por Wilkinson e Dallal (1977). Até mesmo no cálculo da média, feito de maneira usual, somando os valores e dividindo so final pelo número de termos, podem ocorrer erros. Existem algoritmos que são tentaivas de contornar esses problemas e dar a resposta correta para a média, variância e covariância. Aproximação de distribuições Existem alguns algoritmos relacionados ao seguinte problema: Se X é uma variável aleatória com distribuição F e se Prob (X <= a) = p, como encontrar o valor de p para um dado a e vice-versa. Estamos acostumados, ao trabalhar com Estatística, a resolver este problema usando tabelas. No computador não seria prático (às vezes nem mesmo viável) fazer o uso dessas tabelas. Por essa razão, é importante conhecer métodos eficientes para resolver o problema através de
aproximações das distribuições, por exemplo, Normal, Qui-Quadrado, t de Student e F de Snedecor. Estatística e o Aprendizado de Máquina (Machine Learning) Nos últimos anos, a Inteligência Artificial (IA) ganhou um papel de protagonista no cenário mundial de estudos relacionados à computação. Mesmo com esta nova notoriedade vinda à tona somente recentemente, o estudo de IA não é algo tão novo assim. As pesquisas foram iniciadas logo após o fim da Segunda Guerra Mundial e o seu nome foi definido no final da década de 50. Russell e Norving (2004). É sabido que existe uma ampla área de atuação em IA, informação que contrasta com a falta de interesse dos profissionais de ingressarem em estudos relacionados neste setor. Russell e Norving (2004) afirmam devido à falta de pesquisas em IA, existe espaço ainda para o nascimento de muitos Einsteins, Galileus e Newtons. Fazem menção a não existência de grandes pensadores revolucionários nesta área de estudos. Atualmente, a IA cobre uma vasta área de estudos com muitas subáreas. Simon (1983) define aprendizado como qualquer mudança num sistema que melhore o seu desempenho na segunda vez que ele repetir a mesma tarefa, ou outra tarefa da mesma população. Aprendizado de Máquina (AM) é uma parte da IA responsável pelo desenvolvimento de teorias computacionais focadas na criação do conhecimento artificial. Softwares desenvolvidos com esta tecnologia possuem a característica de tomarem decisões com base no conhecimento prévio acumulado através da interação com o ambiente.
AM (do inglês, Machine Learning) é a área de Inteligência Artificial cujo objetivo é o desenvolvimento de técnicas computacionais sobre processo de aprendizado, conclui Bishop (2007). De acordo com a Wikipédia, "A aprendizagem de máquina é um subcampo da inteligência artificial dedicado ao desenvolvimento de algoritmos e técnicas que permitam ao computador aprender, isto é, que permitam ao computador aperfeiçoar seu desempenho em alguma tarefa." Outra definição possível é a de que Machine Learning é um conjunto de ferramentas e métodos que visa perceber padrões e extrair visões a partir de registros e observações passadas. É uma ciência que faz os computadores agirem sem serem explicitamente programados! AM é uma peça fundamental para a evolução da robótica e automações de modo geral. É comum a utilização de algoritmos, computação on-demand, dados que estão em toda parte, Big data analytics, porque o dado por si só não significa nada. Logo, é facíl perceber a junção da Estatística e da Programação, visto que o Mchine Learning pode ser visto como a interseção de Matemática e Estatística com Engenharia de Software e Ciência da Computação. Ela é usada por exemplo na web - por meio de monitoramento de campanhas e eventos (blogs/twitter) -, na medicina, no reconhecimento de escrita manual, no reconhecimento de imagens, na detecção de fraudes de cartões de crédito, na classificação do DNA, na astronomia, etc. Algumas partes da aprendizagem de máquina estão intimamente ligadas à Estatística. O papel da Estatística é usar métodos para modelagem do input output, avaliar erros de predição, utilizar critérios para escolha de modelos, adaptação de técnicas já existentes a grandes bancos de dados, desenvolvimento de métodos estatísticos praa previsão e classificação, desenvolvimento de algoritmos eficientes a partir de modelos probabilísticos, dentre outros. As técnicas utilizadas são: Árvores de Decisão, SVM, redes neurais, etc. Existem dois tipos de aprendizados, são eles: Aprendizado supervisionado: Neste existe um banco de dados de treino, onde o output é conhecido. (Ex: Etiquetar)
Aprendizado não supervisionado: Um modelo estatístico deve ser ajustado do input, mas não há banco de dados. (Ex: Clustering, Estatística) A maioria dos problemas do Machine Learning são de classificação ou regressão. Software Livre R: aplicação estatística O uso de pacotes estatísticos para a análise de dados é de grande importância no que se refere à análise e a interpretação de resultados. Porém, podemos observar que eles têm um custo de aquisição relativamente elevado, ou a criação de programas de alternativos. Dentre os softwares de domínio público, livres, que podem ser utilizados para análise de dados em geral, encontra-se o Ambiente R, ou simplesmente R, conforme usualmente chamado pelos seus usuários. Este apresenta código fonte aberto, podendo ser modificado ou implementado com novos procedimentos desenvolvidos por qualquer usuário a qualquer momento. O R conta com um grande número de colaboradores das mais diversas áreas do conhecimento. O R é uma linguagem orientada a objetos criada em 1996 por Ross Ihaka e Robert Gentleman que aliada a um ambiente integrado permite a manipulação de dados, realização de cálculos e geração de gráficos. Semelhante à linguagem S desenvolvida pela AT&T s Bell Laboratories e que já é utilizada para análise de dados, mas com a vantagem de ser de livre distribuição. É importante salientar que o R não é um programa estatístico, mas que devido a suas rotinas permite a manipulação, avaliação e interpretação de procedimentos estatísticos aplicado a dados. O R é, portanto, uma importante ferramenta na análise e na manipulação de dados, com testes paramétricos e não paramétricos, modelagem linear e não linear, análise de séries temporais, análise de sobrevivência, simulação e estatística espacial, entre outros, além de apresentar facilidade na elaboração de diversos tipos de gráficos, no qual o usuário tem pleno controle sobre o gráfico criado.
Como o R é uma linguagem de programação orientada a objetos, o usuário pode criar suas próprias funções e sua própria rotina na análise de dados. Outro atributo do R é sua capacidade de interagir com outros programas estatísticos, bem como de banco de dados. Além dos procedimentos estatísticos o R permite operações matemáticas simples, e manipulação de vetores e matrizes. Assim como confecção de diversos tipos de gráficos. Referências: Introduction to Statistics and Computer Pograming - Kossack e Herschke Estatística Computacional - J. Noberto W. Dachs Elementary Computer-Assisted Statistics - Frank Dcalzo & Rowland Hughes Statistical Computation - Milton e Nelder http://blog.concretesolutions.com.br/2012/05/machine-learning-no-java-cecommunity-conference/ http://pt.wikipedia.org/wiki/aprendizagem_de_m%c3%a1quina http://www2.ufersa.edu.br/portal/view/uploads/setores/137/apostilas%20e%20 Tutoriais%20-%20R%20Project/Apostila%20R%20-%20GenMelhor.pdf