Uma introdução ao Linux e ao R


26 de novembro de 2007

1 Sobre o Linux

1.1 História

O sistema operacional torna possível controlar os recursos de processamento, uso de memória e acesso a unidades de armazenamento de um computador. Por ele, um usuário tem domínio sobre estes recursos.

O GNU/Linux é um sistema operacional que nasceu a partir do Kernel Linux desenvolvido pelo finlandês Linus Benedict Torvalds no início dos anos 90.

Sua criação veio preencher uma lacuna deixada no meio acadêmico após a comercialização do sistema UNIX cuja primeira versão foi lançada em novembro de 1971 no Instituto de Tecnologia de Massachussets.

Atualmente, circulam várias distribuições GNU/Linux, dentre as quais podemos citar: Mandriva, Kurumin, Ubuntu, Knoppix, Gentoo,...e o Brasil está no rol dos países que mais desenvolvem distribuições GNU/Linux.

1.2 Software Livre

"Software livre é um conceito especial. Esse conceito prevê que todo software será distribuído com seu código fonte, podendo ser alterado e até mesmo redistribuído depois de alterado. Mas esse software não precisa ser gratuito."

Segundo a definição de Richard Stallman, o software nos proporcionas:

2 O Problema do Táxi com o Uso do R

Este programa ilustra algumas noções de estimação utilizando o problema do taxi descrito em Noether(1983).

Em uma pequena cidade, os táxis estão numerados de 1 até N. Um indivíduo se posiciona em uma determinada esquina, observa a passagem de 5 táxis e anota as respectivas placas.

A pergunta em questão é: com base nestas 5 placas, qual deve ser a quantidade de taxis existentes na cidade ?

Este é um típico problema de inferência estatística!

Caso existam, por exemplo, 550 taxis, o resultado da observação do indivíduo pode ser :

  > # Amostra aleatoria de 5 numeros em 550
  > sample(550,5)

  [1]  24 193  96 286 494

Pelo comando sample, podemos selecionar uma amostra aleatória simples de uma população de N unidades.

Esta amostragem pode ser feita com reposição, basta ajustar o parâmetro replace=T.

  > # Amostra aleatoria de 5 numeros em 550 com reposicao
  > sample(550,5,replace=T)

  [1] 397 153 180 391 120

Armazenando a amostra.

  > # Armazenando a amostra
  > amostra<-sample(550,5)

Exibindo o conteúdo armazenado.

  > # Exibindo o conteudo do objeto
  > amostra

  [1] 233 519 135  27 291

Resumindo as informações da amostra

  > # Resumindo as informacoes da amostra
  > summary(amostra)

     Min. 1st Qu.  Median    Mean 3rd Qu.    Max.
       27     135     233     241     291     519

Formalizando matematicamente o problema do taxi, a variável aleatória em questão é:

Para total conhecimento da distribuição de probabilidade de X, temos que conhecer o parâmetro N. Como no problema do táxi este é um parâmetro desconhecido, vamos utilizar elementos de inferência estatística para estimá-lo.

Em sala de aula foram propostos 4 estimadores para N com base em uma amostra X1,X2,,X5. Os estimadores foram batizados com os nomes dos alunos:

O questionamento natural sobre os estimadores apresentados acima é : qual o melhor estimador ?

Podemos investigar matematicamente, entretanto o computador é uma excelente ferramenta para verificarmos empiricamente.

A seqüência de comandos abaixo simula 1000 amostras de tamanho 5, calcula as estimativas por meio dos 4 estimadores propostos e armazenas estes resultados.

Cada amostra simulada tenta representar uma experiência de observar 5 táxis em uma esquina e anotar os seus números.

  > teta1<-NULL;teta2<-NULL;teta3<-NULL;teta4<-NULL
  > for (i in 1:1000) {x<-sample(550,5)
  + teta1[i]<-max(x)+min(x)#Estimador de Gledson
  + teta2[i]<-(6*max(x)-1)/5 #Estimador de Sondahl
  + teta3[i]<-max(x)#Estimador de Nísio
  + teta4[i]<-2*median(x)#Estimador de Wanderson
  + }
  > # matriz com as estimativas
  > estimadores<-matrix(c(teta1,teta2,teta3,teta4),ncol=4)
  > # nomes aos estimadores
  > colnames(estimadores)<-c('teta1','teta2','teta3','teta4')

Para carregar os comandos acima, basta digitar

>source("http://www.leg.ufpr.br/~joel/CE066/taxis.R")

É importante perceber que os estimadores são variáveis aleatórias pois seus resultados são incertos a cada vez que repetimos o experimento (observar uma amostra de 5 táxis e anotar o número).

O resumo das 1000 estimativas fornecidas por cada um dos estimadores é obtido por:

  > # Resumindo as estimativas obtidas pelos 4 estimadores
  > summary(estimadores)

       teta1           teta2           teta3           teta4
   Min.   :171.0   Min.   :151.0   Min.   :126.0   Min.   :  48.0
   1st Qu.:488.8   1st Qu.:507.4   1st Qu.:423.0   1st Qu.: 390.0
   Median :555.0   Median :577.0   Median :481.0   Median : 550.0
   Mean   :556.1   Mean   :552.8   Mean   :460.9   Mean   : 550.3
   3rd Qu.:631.5   3rd Qu.:626.2   3rd Qu.:522.0   3rd Qu.: 704.0
   Max.   :954.0   Max.   :659.8   Max.   :550.0   Max.   :1052.0

Pelo gráfico box-plot podemos comparar os estimadores em relação a tendência central e variabilidade.


  > # boxplot das estimativas
  > boxplot(data.frame(estimadores))

pict

Figura 1: Box-Plot das Estimativas



Tabela 1: Comportamento de Diferentes estimadores





ˆθ 1 θˆ 2 θˆ 3 ˆθ 4





Média 556.12 552.84 460.87 550.3
Mediana 555 577 481 550
Desvio Padrão122.455792.462177.0518209.981






3 Estatística Descritiva

Veremos a seguir como carregar uma planilha para realizar operações básicas no R. Para esta finalidade, utilizaremos a mesma tabela de dados utilizada em Magalhães e Lima (2004) que trata de um questionário aplicado a estudantes cujas perguntas mais relevantes tratam do gosto do estudante por televisão e cinema.

O primeiro comando a ser utilizado é o read.table() que possibilita a importação de um conjunto de dados a partir de um arquivo texto.

Para a leitura do arquivo de dados, utilize o comando:

  > # Leitura dos dados do questionario aplicado aos estudantes
  > dados<-read.table('http://www.leg.ufpr.br/~joel/dados/quest.csv',h=T)

Para ter acesso ao nome das variáveis, digite

  > # Exibindo os nomes das variaveis
  > names(dados)

   [1] "Id"     "Turma"  "Sexo"   "Idade"  "Alt"    "Peso"   "Filhos" "Fuma"
   [9] "Toler"  "Exerc"  "Cine"   "OpCine" "TV"     "OpTV"

Um rápido resumo sobre as variáveis presentes pode ser obtido através do comando summary().

  > # Resumindo os dados do questionario
  > summary(dados)

         Id        Turma  Sexo       Idade           Alt             Peso
   Min.   : 1.00   A:26   F:37   Min.   :17.0   Min.   :1.450   Min.   :44.00
   1st Qu.:13.25   B:24   M:13   1st Qu.:18.0   1st Qu.:1.603   1st Qu.:52.12
   Median :25.50                 Median :18.0   Median :1.665   Median :58.00
   Mean   :25.50                 Mean   :18.9   Mean   :1.672   Mean   :60.93
   3rd Qu.:37.75                 3rd Qu.:19.0   3rd Qu.:1.718   3rd Qu.:67.88
   Max.   :50.00                 Max.   :25.0   Max.   :1.850   Max.   :95.00
       Filhos     Fuma    Toler      Exerc            Cine      OpCine
   Min.   :1.0   NAO:44   I:10   Min.   : 0.00   Min.   :0.00   B:32
   1st Qu.:1.0   SIM: 6   M:19   1st Qu.: 2.00   1st Qu.:1.00   M:18
   Median :1.0            P:21   Median : 3.50   Median :2.00
   Mean   :1.7                   Mean   : 3.80   Mean   :1.74
   3rd Qu.:2.0                   3rd Qu.: 5.75   3rd Qu.:2.00
   Max.   :7.0                   Max.   :10.00   Max.   :5.00
         TV        OpTV
   Min.   : 0.00   B: 3
   1st Qu.: 5.00   M: 1
   Median :10.00   N: 7
   Mean   :10.78   R:39
   3rd Qu.:14.00
   Max.   :30.00

Repare que por este comando, as variáveis quantitativas são resumidas pelo mínimo,máximo,média e quartis, enquanto as variáveis qualitativas são resumidas pelas frequências absolutas de cada categoria.

Calculando algumas medidas de variabilidade

  > # desvio padrao de idade
  > sd(dados$Idade)

  [1] 2.032893

  > # variancia de idade
  > var(dados$Idade)

  [1] 4.132653

  > # coeficiente de variacao de idade
  > 100*(sd(dados$Idade)/mean(dados$Idade))

  [1] 10.75605

3.1 Análise Univariada

Toda a análise descritiva deve ser feita com base no objetivo do pesquisador ao levantar aquele conjunto de dados.

A seguir, com o comando table() mostramos a frequência absoluta das variável Sexo.

  > # Tabela de frequencias absolutas para variavel sexo
  > tab.sex<-table(dados$Sexo)
  > tab.sex

   F  M
  37 13

  > xtable(tab.sex,caption="Frequência Absoluta Segundo Sexo")




V1


F 37
M 13



Tabela 2: Frequência Absoluta Segundo Sexo

Vamos analisar gráficamente a proporção de meninos e meninas nesta turma.


  > barplot(table(dados$Sexo))

pict

Figura 2: Gráfico de Barras da Variável Sexo


Vamos analisar o histograma das idades dos alunos desta turma.


  > # Histograma de idade
  > hist(dados$Idade,xlab="idade")

pict

Figura 3: Histograma das Idades dos Alunos


3.2 Análise Bivariada

Após analisar variável por variável, tentaremos algo mais interessante que é encontrar associação entre duas variáveis.

Para começar, vamos escolher o par de variáveis Altura e Peso e construir um diagrama de dispersão entre estas.


  > # Diagrama de dispersao altura vs peso
  > plot(dados$Alt,dados$Peso,xlab='altura',ylab='peso')

pict

Figura 4: Diagrama de Dispersão entre Altura(X) e Peso(Y)


Calculando o coeficiente de correlação entre Altura e Peso

  > # calculando o coeficiente de correlacao
  > cor.peso.alt<-cor(dados$Alt,dados$Peso)
  > # arredondando o numero de casas decimais
  > cor.peso.alt<-round(cor.peso.alt,4)
  > # exibindo o coeficiente de correlacao
  > cor.peso.alt
  [1] 0.7377


  > plot(dados$Alt,dados$Peso)
  > abline(lm(dados$Peso~dados$Alt))

pict

Figura 5: Diagrama de Dispersao entre Altura e Peso


Com as variáveis Sexo e hábito de fumar, vamos construir uma tabela de contingência.

  > # Tabela de frequencia de fumo vs sexo
  > table(dados$Fuma,dados$Sexo)
         F  M
    NAO 33 11
    SIM  4  2

3.3 Alguns comandos básicos

mean() # calcula a média  
sd() # calcula o desvio padrão  
median() # calcula a mediana  
cor( ) # coeficiente de correlação  
table() #tabela de frequencias  
hist() #histograma de frequências  
pie(table()) #gráfico de setores  
plot() #diagrama de dispersão  
t.test( ) # teste t  
chisq.test() #teste qui-quadrado

Para ver o funcionamento, use o HELP(exemplo: help(mean)

3.4 Exercícios

Para os dados do questionário aplicado aos estudantes ,escreva os comandos do R que ajudam a responder as perguntas abaixo:

Para o problema do taxi: