R para arqueólogos – Importar dados

Até agora, trabalhamos de forma simples, com dados bastante simples. Há duas falhas óbvias nisto: o trabalho é geralmente complexo, e os dados regularmente complicados. O que fazer, por exemplo, quando, ontem, um chefe de projetos  exausto retornou das escavações do engenho do Monjope (PE) com caixas cheias de centenas de artefatos? Vamos digitar um vetor inteiramente à mão, naquela janela de texto, número por por número? As probabilidades de inverter o valor da espessura do quinquagesimo-quinto artefato com a largura do quinquagesimo-sexto são enormes. O que fazer, ainda, quando o chefe do projeto pede que sejam analisadas cinco, dez ou quinze variáveis para cada objeto?

Se desejamos realmente evitar as gargalhadas mal escondidas dos colegas do departamento quando passamos pelos corredores em busca de um cafezinho, é preciso encontrar um meio de manter o controle sobre a entrada dos dados no programa. E por isso, não há outra solução senão utilizar outro programa visualmente mais prático e importar os dados no R.

Felizmente, esta tarefa não é muito complicada. Podemos entrar todos os artefatos e as suas respectivas variáveis em uma planilha, que tem a vantagem de ser mais clara e aproveitável. Com uma pequena amostra de dados, vamos ver o que fazer:

Entramos os dados como sempre fazemos em nosso editor de planilha favorito. Mas atenção, na hora de salvar (guardando uma cópia de proteção no seu formato favorito), vamos selecionar o formato CSV, que significa “coma separated value”. Abrindo o arquivo com um editor de texto simples, podemos verificar que tudo está alí, no seu devido lugar, e separado por vírgulas. No R, teremos que mandar o programa recuperar todos dados que estão guardados neste arquivo, com os comandos read.csv() e attach():

> data = read.csv(“/home/pace/data.csv”, header=T)
> attach(data)
> print(data)
Comprimento Largura Espessura
1         1.12    1.00      0.55
2         1.18    1.50      0.90
3         2.15    2.09      0.68
4         3.86    3.50      1.23
5         1.67    1.67      0.57
6         1.52    1.34      0.54
7         1.19    1.76      0.48
8         2.14    1.99      0.79
9         3.90    2.18      1.12
10        1.90    2.20      1.07
>

Agora, como já vimos, podemos montar diagramas com cada uma das variáveis:

> plot(Comprimento,Largura)
>

Desta forma, podemos trabalhar muito mais facilmente com grandes quantidades de dados, recuperando, inclusive, arquivos elaborados por aqueles arqueólogos que adoram coletar os seus dados em largas planilhas bem bonitinhas.

R para arqueólogos – Duas variáveis

 

Até agora, utilizamos apenas dados de uma variável. Isso é fácil. Sempre procurando o desafio, um grupo de arqueólogos trabalhando na cidade de Olinda (PE) entregou o resultado das escavações realizadas em um conjunto arquitetônico de época colonial. Para cada cômodo, nos entregaram a quantidade de cerâmicas e o número de peças de louça encontradas. Com tom de desconfiança, perguntaram se havia uma relação entre a quantidade de cerâmicas e de louças. Caso as peças estejam encontradas de forma uniforme em todas as salas, poderiam afirmar que a ocupação foi também constante e igual. Caso contrário, poderiam deduzir que havia algum tipo de concentração funcional, cultural, etc.

 

Sala 1: 35 cerâmicas e 6 louças.
Sala 2: 40 cerâmicas e 6 louças.
Sala 3: 59 cerâmicas e 15 louças.
Sala 4: 38 cerâmicas e 8 louças.
Sala 5: 27 cerâmicas e 10 louças.
Sala 6: 46 cerâmicas e 8 louças.
Sala 7: 55 cerâmicas e 12 louças.
Sala 8: 47 cerâmicas e 9 louças.
Sala 9: 60 cerâmicas e 15 louças.
Sala 10: 45 cerâmicas e 16 louças.

 

Para responder à esta pergunta, vamos precisar de dois vetores, cada um envolvendo uma variável:

> cerâmica = c(35,40,59,38,27,46,55,47,60,45)
> louça = c(6,6,15,8,10,8,12,9,15,16)
>

É importante manter a ordem dos valores. Não podemos seguir a ordem de 1 à 10 no primeiro vetor, e misturam as salas no segundo. A relação entre as duas variáveis, obtemos com um diagrama simples:

> plot(cerâmica,louça)
>

Chegou também a hora de mostrar a regressão linear, que permite ter uma idéia da progressão dos dados: poderia até se chamar progressão linear, mas nada é perfeito. Como não pretendemos fazer longos cálculos, e sim produzir e entender os resultados, basta saber que ela é construida a partir da relação entre uma variável de base, e outra que serve para as medições. Neste caso, queremos conhecer a relação entre as cerâmicas (base) e as louças (dependente, já que são um tipo de cerâmica).

> reg = lm(louça~cerâmica)
> reg
Call:
lm(formula = louça ~ cerâmica)
Coefficients:
(Intercept) cerâmica
0.1671 0.2286
> abline(reg)
>

Criamos um elemento “reg” com os valores da proporção (lm, ou linear model) entre louças e áreas das salas: 0.2286*cerâmicas-0.3022=louças. A função abline(reg) permite incluir a linha no diagrama que foi previamente plotado. Aqui, percebemos que a sala 10 aparece muito afastada da linha de regressão. Algum tipo de concentração atípica deve, portanto, ter ocorrido neste local. Um depósito? Uma cozinha? O quarto de um casal brigando muito? Só os arqueólogos para responder esta tremenda enigma.

Naturalmente, também, o pressuposto aqui é que havia progressão linear do material arqueológico. Como vimos, no caso da distribuição normal, alí está a lógica do tratamento estatístico. De maneira geral, o conceito de cultura utilizado habitualmente em arqueologia também envolve estabilidade e continuidade nos dados. Provavelmente não há razão de duvidar da especificidade da sala 10, pelo menos em relação às 9 outras. Mas isso não significa que deva sempre ser assim.

Esta análise dos dados “dois por dois” pode ser ampliada para mais variáveis: caso a equipe de arqueólogos de Olinda tivesse apresentado mais informações sobre cada sala, poderiamos estudar as proporções entre outras características do sítio. Por exemplo, poderiam ter incluido o tamanho respectivo de cada sala, e a quantidade de vidro. Assim, poderiamos construir as seguintes comparações:

cerâmica x louça
cerâmica x área
cerâmica x vidro
louça x área
louça x vidro
área x vidro

O interesse destas análises não está apenas na sua capacidade em identificar concentrações (em inglês, são chamadas de clusters), mas também em apontar elementos que estão fora do padrão. Cabe aos valorosos arqueólogos, então, encontrar as explicações que permitem justificar os resultados. Aqui, como explicar que 9 salas estejam na mesma linha de regressão enquanto uma só permanece fora? Eis o grande desafio que, do fundo do nosso laboratório escuro e mal ventilado, podemos mandar de volta para o time de Olinda.

Pegue a sua colher de pedreiro, Indiana Jones!

R para arqueólogos – Gráficos

As medidas exploradas na primeira parte deste tutorial deixaram todo o departamento sur sa faim. Muito interessante, pensaram os arqueólogos convencidos pelo poder das estatísticas. Estes números são muito úteis para nós que sabemos o que significam, mas quando se trata de divulgação dos trabalhos, precisamos de figuras mais explicativas. Arqueologia também é sujeita ao poder da imagem. Portanto, é necessário oferecer compilações gráficas dos nossos dados, que sejam acessíveis ao público em geral.

Justamente, uma jovem graduante voltou de uma semana de prospecção no vale do Rio Catú (CE). Da sua mochila, extraiu um caderno de anotações rapidamente feitas à mão e um mapa da região explorada. Combinando os dois, estabelecemos uma lista de 20 sítios localizados em prospecção de superficie, com as suas respectivas áreas em m²:

Sítio 01: 156 m²
Sítio 02: 80 m²
Sítio 03: 123 m²
Sítio 04: 99 m²
Sítio 05: 103 m²
Sítio 06: 198 m²
Sítio 07: 200 m²
Sítio 08: 87 m²
Sítio 09: 95 m²
Sítio 10: 115 m²
Sítio 11: 145 m²
Sítio 12: 160 m²
Sítio 13: 270 m²
Sítio 14: 123 m²
Sítio 15: 119 m²
Sítio 16: 106 m²
Sítio 17: 110 m²
Sítio 18: 92 m²
Sítio 19: 157 m²
Sítio 20: 160 m²

A jovem graduante, exausta mas feliz de tantas descobertas, entregou o material e se retirou para descansar algumas poucas horas antes de voltar ao trabalho. Entretanto, oferecemos de realizar cálculos para auxiliá-la no tratamento dos dados. Começamos então por entrar os dados no R.

> áreas = c(156,80,123,99,103,198,200,87,95,115,145,160,270,123,119,106,110,92,157,160)
>

Primeiro, vamos montar um diagrama caule-e-folha (em inglês, stem-and-leaf), chamado assim porque, quando se adota um olhar muito sintético, parece como um caule e uma folha. Nele, os dados são organizados da seguinte forma: o primeiro digito (ou os dois primeiros) formam o caule, do lado esquerda de uma linha vertical. Do lado direito, organizamos os outros digitos. Por exemplo, o valor de 104 m² se torna 10 | 4, enquanto 97 e 98 m² se tornam 9 | 78. No R, existe uma função especialmente desenhada para isso:

> stem(áreas)
The decimal point is 2 digit(s) to the right of the |
0 | 899
1 | 000112222
1 | 56666
2 | 00
2 | 7
>

Desta forma, os dados são muito compactos. Realmente, parece uma folha – ou, no mínimo, a metade de uma folha. No entanto, precisamos estender um pouco o nosso diagrama para visualizar melhor a distribuição dos sítios. Para isso, acrescentamos o argumento scale seguido de um valor entre os parenteses:

> stem(áreas,scale=4)
The decimal point is 1 digit(s) to the right of the |
8 | 07
9 | 259
10 | 36
11 | 059
12 | 33
13 |
14 | 5
15 | 67
16 | 00
17 |
18 |
19 | 8
20 | 0
21 |
22 |
23 |
24 |
25 |
26 |
27 | 0
>

Agora sim, podemos perceber dois grupos de sítios: o primeiro, com superficies entre 80 e 120 m², e o segundo entre 140 e 160 m². Ainda temos três sítios com áreas muito maiores, que se destacam no diagrama e são chamados de outliers (em inglês, aqueles que estão fora).

Segundo, vamos montar um histograma. Todo mundo conhece aqueles gráficos gerados automaticamente a partir de planilhas. R oferece o mesmo recurso, de forma muito mais engrassada porque podemos definir todos os detalhes à mão.

No primeiro gráfico, apresentamos um histograma simples indicando as frequências das diversas áreas. O dados são muito aglomerados, e a leitura não é fácil. O segundo histograma é refinado para apresentar os 20 sítios de forma indvidual. No terceiro histograma, indicamos a densidade numa escala que vai de 0.0 à 1.0 (ou 0 à 100%). Os mesmos dois grupos identificados pelo diagramade caule-e-folha aparecem em destaque.

> hist(áreas)
> hist(áreas,breaks=20)
> hist(áreas,breaks=20,prob=TRUE)
>

O terceiro tipo de gráfico que apresentamos se chama boxplot, ou diagrama de caixa. Tem a vantagem de indicar diversas medidas de centralidade e dispersão que introduzimos na primeira parte do tutorial, e outras que são ligadas a elas. No diagrama, uma caixa central é delimitada pelos quartis (dispersão mínima e máxima) e cortada pela mediana. Os braços da caixa indicam os valores máximos e mínimos, enquanto os outliers estão indicados por pontos (esquerda). Vale notar, aqui, que os grupos identificados nos gráficos anteriores não são mais aparentes aqui: não significa que o diagrama não funciona, e sim que a sua função é de apresentar a dispersão de forma visual.

> boxplot(áreas)
>

O diagrama de caixa se torna muito interessante para comparar dois lotes de dados. Vamos, por exemplo, dividir os nossos 20 sítios em dois grupos de 10 – supostamente porque estão localizados nas margens esquerda e direita do rio – e comparar os gráficos (direita). Para isso, precisamos redefinir os dados:

> sítiosA = c(156,80,123,99,103,198,200,87,95,115)
> sítiosB = c(145,160,270,123,119,106,110,92,157,160)
> boxplot(sítiosA, sítiosB)
>

A utilidade destes três primeiros tipos de gráficos aumenta com o número de dados considerados. Com 20 sítios, ainda podemos pensar em estudá-los ao olho nú. Com 500 sítios (cerâmicas, líticos, pregos enferrugiados, etc.) se torna um esforço totalmente absurdo, quando há ferramentas que fazem todo o trabalho automaticamente. Os gráficos sintetizam as informações e as dispõem de forma muito mais agradável à leitura. Para o público em geral, a visualização fácil dos dados também é um fator essencial.

R para arqueólogos – Primeiros passos

Hoje, pelo mais incrível dos acasos, precisamos estudar uma caixa de artefatos vindos do sítio chamado “Pedra do Bode”. A caixa foi lacrada no sítio e chegou coberta de uma fina pelicula daquela poeira típica do sertão nordestino. Uma vez limpos e etiquetados, contamos vários tipos de tijolos, alguns fragmentos de faiança e, sobretudo, 10 pedaços de cerâmica particularmente interessantes. Com o auxílio de um bom paquímetro, observamos as seguintes espessuras em milimetros:

0,9 0,7 0,5 0,7 0,8 0,7 1,2 1,0 1,9 e 0,6


Para iniciar o programa, no terminal, digite “R” (com maiuscula).

R version 2.12.1 (2010-12-16)
Copyright (C) 2010 The R Foundation for Statistical Computing
ISBN 3-900051-07-0
Platform: x86_64-pc-linux-gnu (64-bit)
R é um software livre e vem sem GARANTIA ALGUMA.
Você pode redistribuí-lo sob certas circunstâncias.
Digite ‘license()’ ou ‘licence()’ para detalhes de distribuição.
R é um projeto colaborativo com muitos contribuidores.
Digite ‘contributors()’ para obter mais informações e
‘citation()’ para saber como citar o R ou pacotes do R em publicações.
Digite ‘demo()’ para demonstrações, ‘help()’ para o sistema on-line de ajuda,
ou ‘help.start()’ para abrir o sistema de ajuda em HTML no seu navegador.
Digite ‘q()’ para sair do R.
>

Primeiro, vamos entrar os dados. Cuidado: no R, a virgula serve para separar os dados. Portanto, utilizaremos o ponto para indicar as decimais:

> bode = c(0.9,0.7,0.5,0.7,0.8,0.7,1.2,1.0,1.9,0.6)
>

Reexaminamos a caixa e, ô miséria, esquecemos mais 5 pedaços, com espessuras variadas. Após a devida limpeza e etiquetagem, incluimos ainda:

0,4 0,7 0,8 1,0 e 1,1

> bode = c(bode,0.4,0.7,0.8,1.0,1.1)
>

Aqui, “bode” é o nome do sítio, e serve de nome para o lote de dados que criamos. A função “c” seguida das parenteses indica que carregamos dados neste lote. Para incluir ulteriormente novos dados, lembramos que é necessário redefinir o lote anterior, seguido dos novos elementos. Agora que entramos todo o material duramente escavado pela equipe de campo (que fez um trabalho extraordinário), podemos começar a explorar os dados.

Centralidade

A mediana identifica o valor central do conjunto de objetos. É uma medida absoluta e matemâtica. Quando temos um número impar de objetos, como aqui, trata-se do valor realmente central: neste caso, o oitavo valor (pois tem 7 outros valores tanto à esquerda quanto à direita). Quando temos um número par de objetos, calcula-se a média dos dois valores centrais:

> median(bode)
[1] 0.8

A média corresponde à espessura média encontrada para estes artefatos. ou seja, a suma de todos valores (13) dividida pelo número de objetos (15).

> mean(bode)
[1] 0.8666667

Em oposição à mediana, a média é relativa e o seu resultado pode ser influenciado por objetos muito diferentes. Se tivessemos 9 objetos de 1 mm e apenas 1 de 10 mm, a média seria de 1,9 mm – quase o dobro de 90% dos objetos. Reexaminando as peças do nosso conjunto, percebemos que a espessura de 1,9 milimetros se destaca do lote. Tratando-se de um objeto de cerâmica, não podemos deixar de examiná-lo. No entanto, a sua espessura é visivelmente diferente daquela dos outros objetos – de 7 milimetros, para ser exato. Para termos uma idéia mais precisa da média dos objetos, uma solução é aparar (trim) o lote, tirando de cada lado (mínimo e máximo) uma certa porcentagem dos dados.

> mean(bode,trim=1/10)
[1] 0.823077
> mean(bode,trim=2/10)
[1] 0.8111111

Estas três medidas oferecem um ponto de âncora para os dados encontrados. A partir desta centralidade, vamos poder partir para outras aventuras exploratórias na selva das estatísticas. Não basta saber onde se encontra a média das peças encontradas no sítio, pois todas são diferentes. Portanto, ainda precisamos ver de que forma elas divergem destas primeiras medidas para ter uma idéia mais precisa daquilo que foi escavado no campo pelos bravos arqueológos, de baixo de um sol escaldante, à mercê de escorpiões que resistiriam à ataques nucleares, e de cobras coloridas e peçonhentas. E da sede. Afinal, eles merecem.

Dispersão

A variança é um conceito mais complexo. É determinada por uma formula chata que envolve letras gregas, a média e vários quadrados de substrações. Mas como somos meticulosos, precisamos sim entender que se trata da nossa primeira medida de dispersão. Dois conjuntos de artefatos podem ter uma média identica e, ao mesmo tempo, perfis muito diferentes. A variança nos indica, neste caso, o quanto as nossas medidas estão espalhadas em relação à média:

> var(bode)
[1] 0.1295238

A dispersão padrão é outra medida que merece algumas explicações. Matematicamente, trata-se apenas da raiz quadrada da variança – está portanto relacionada a ela. Praticamente (o que nos interessa), ela introduz também a idéia de distribuição normal. Nas ciências exatas, onde as pessoas não têm dúvida de nada, existem formas padronizadas de distribuição dos dados. Qualquer dados. Sabemos, naturalmente, que as coisas não são bem assim, e na realidade, sempre há lotes que fogem da regra por apresentarem dados muito longe de qualquer padronização. Mas considerando o tratamento estatístico, devemos reconhecer o valor da distribuição normal para permitir fazer comparações entre amostras. Neste caso, o desvio padrão tem um papel crucial: ele serve de medida para definir onde se localizam certos porcentagens de dados:

> sd(bode)
[1] 0.3598942

Considerando que os dados seguem uma distribuição normal, a média aumentada ou diminuida do valor de um desvio padrão deve incluir 68% dos dados. Com dois desvios padrões, alcançamos 95%, e com três, 99,7% dos dados. Em arqueologia, trabalhamos sobretudo com amostras. O acesso às populações inteiras é impensável. A decisão de partir do a priori que ela apresenta uma distribuição normal será discutida em outro momento – por enquanto, basta entender que é geralmente (e cegamente) o caso, a menos que a realidade arqueológica nos permita estabelecer o contrário. Para aqueles que tentam fazer o cálculo com os dados que apresento aqui, perceberão logo que a média +/- o desvio padrão abrange 80% das peças. Como apresentado, a realidade arqueológica é muito mais complexa que os matemâticos queriam. Também não tenho a paciencia de fazer um exemplo que corresponda melhor às definições.

R para arqueólogos – Instalação

Porque

Existem vários programas de estatisticas, pagos e não-pagos. Então porque escolher R? A razão principal é o seu potencial, que é elevado, e a sua facilidade de adaptação para ambientes e aplicações diversificadas. É disponível tanto para Windows quanto para Mac e Unix. Além disso, outros fatores são destacados:

– Sistema de ajuda integrado,
– Tratamento gráfico de qualidade,
– Aberto para funções escritas pelo usuário,
– Aberto para migrações de e para outros programas.

Enquanto as disvantagens, não há comunidade ativa do R em português – o que é também a razão de ser deste tutorial. A sua aparência “janela de texto” pode ser outro ponto negativo para alguns usuários iniciantes.

Referências

Site oficial: http://www.r-project.org
Estatísticas no programa R (UFV): http://www.estatisticanor.xpg.com.br

Última versão

Para Windows, baixe e instale a última versão diretamente da UFPR (o arquivo está no formato R-XXXXX-win.exe). Para Ubuntu, simplesmente digite no terminal “apt-get install r-base”. Neste tutorial, utilizaremos uma instalação do Linux Mint.