Estatistica usado o R
224 pág.

Estatistica usado o R


DisciplinaBioestatística I4.701 materiais35.034 seguidores
Pré-visualização50 páginas
465.3344
Ah, e podemos também usar a nossa função summary():
> tapply(igf1,tanner,summary)
$I
 Min. 1st Qu. Median Mean 3rd Qu. Max. NA's 
 29.0 151.0 201.0 207.5 259.0 624.0 204.0 
$II
 Min. 1st Qu. Median Mean 3rd Qu. Max. NA's 
 157.0 269.5 341.5 352.7 443.3 682.0 33.0 
$III
 Min. 1st Qu. Median Mean 3rd Qu. Max. NA's 
 167.0 383.0 474.0 483.2 553.0 868.0 27.0 
$IV
 Min. 1st Qu. Median Mean 3rd Qu. Max. NA's 
 321.0 447.5 500.0 513.0 574.0 915.0 23.0 
$V
 Min. 1st Qu. Median Mean 3rd Qu. Max. NA's 
 100.0 389.8 452.0 465.3 528.0 914.0 20.0 
Nada mal... E com o R nós podemos criar funções personalizadas para apresentar várias
estatísticas por grupos. Vamos a um exemplo:
resumo.grupo <- function (x, y, na.rm=F)
{
min <- tapply(x, y, min, na.rm=na.rm)
max <- tapply(x, y, max, na.rm=na.rm)
mediana <- tapply(x, y, median, na.rm=na.rm)
media <- tapply(x, y, mean, na.rm=na.rm)
sd <- tapply(x, y, sd, na.rm=na.rm)
cbind(Mínimo=min, Máximo=max, Mediana=mediana, Média=media, DP=sd)
}
Esta função vai nos dar uma saída composta de estatísticas básicas, num formato mais
confortável. Vamos testar:
> resumo.grupo(igf1,sex,na.rm=T)
 Mínimo Máximo Mediana Média DP
M 29 915 280 310.8866 169.7136
F 25 914 352 368.1006 167.3476
Que tal?
Gráficos
Obviamente, podemos utilizar gráficos também para descrever variáveis por grupos. Na
verdade são os mesmos gráficos que nós já vimos antes, porém separados, ou estratificados por
grupos.
Histogramas
12
Muitas vezes é interessante observar a distribuição de uma variável por grupos. Para este
fim, podemos utilizar histogramas estratificados por categoria também. Vamos ver uma maneira
\u201csuja e rápida\u201d de obter histogramas por grupos
par(mfrow=c(3,1))
hist(igf1)
by(igf1,sex,hist)
par(mfrow=c(1,1))
Veja o que aconteceu: Primeiro nós dividimos a tela gráfica em 3 linhas e uma coluna,
depois fizemos o histograma para a IGF-I sem dividir por grupos e em seguida usamos a função
by() para fazer os histogramas da IGF-I por categoria de sexo. Eu chamei de rápida e suja, porque
na saída não temos os títulos apropriados para os gráficos, e além disso, o R \u201ccospe\u201d uma saída em
texto na tela... Não se preocupe: esse texto contém todas as informações sobre os histogramas que
você acabou de plotar, além de dizer que grupos foram usados: primeiro foram os homens e depois
as mulheres. Para apresentar não está muito bom, de jeito nenhum, mas dá para ter uma idéia. Para
uma saída mais elegante, poderíamos usar:
par(mfrow=c(3,1))
hist(igf1, main=&quot;Histograma de IGF-I - Total&quot;, xlab=&quot;IGF-I&quot;,
ylab=&quot;Densidade&quot;, col=&quot;red&quot;, freq=F)
hist(igf1[sex==&quot;M&quot;], main=&quot;Histograma de IGF-I para Homens&quot;, xlab=&quot;IGF-I&quot;,
ylab=&quot;Densidade&quot;, col=&quot;red&quot;, freq=F)
hist(igf1[sex==&quot;F&quot;], main=&quot;Histograma de IGF-I para Mulheres&quot;, xlab=&quot;IGF-
I&quot;, ylab=&quot;Densidade&quot;, col=&quot;red&quot;, freq=F)
par(mfrow=c(1,1))
Veja o resultado:
13
Boxplots
Assim como histogramas, os boxplots também podem ser feitos por grupos. Vamos ver
como funciona a sintaxe do boxplot, com alguns detalhes para ficar mais apresentáveis:
boxplot(igf1~sex, col=&quot;blue&quot;, main=&quot;Boxplot de IGF-I por Sexo&quot;)
Repare no til que nós usamos entre a variável igf1 e o sexo, que é a variável de
agrupamento. Esse til significa \u201cpor\u201d neste caso. Nós ainda vamos usá-lo muito quando
aprendermos modelos lineares mais adiante.
Às vezes também é interessante dispor os boxplots em conformação horizontal. Veja um
exemplo:
boxplot(igf1~tanner, col=&quot;blue&quot;, main=&quot;Boxplot de IGF-I por Classificação
de Tanner&quot;, horizontal=T)
Por último, vou mencionar uma característica muito interessante disponível no R. É a
colocação de uma indentação no boxplot, chamada notch. A utilidade disso é que os boxplots de
14
Histograma de IGF-I - Total
IGF-I
0 200 400 600 800 1000
0.
00
00
0.
00
10
0.
00
20
Histograma de IGF-I para Homens
IGF-I
0 200 400 600 800 1000
0.
00
00
0.
00
10
0.
00
20
Histograma de IGF-I para Mulheres
IGF-I
0 200 400 600 800 1000
0.
00
00
0.
00
10
0.
00
20
grupos cujas indentações não se sobrepuserem têm suas medianas significativamente diferentes
para um nível de 0.05. Veja como é:
boxplot(igf1~sex, col=&quot;blue&quot;, main=&quot;Boxplot de IGF-I por Sexo&quot;, notch=T)
Como se observa, a mediana de IGF-I para os homens é significativamente diferente da
mediana de IGF-I para as mulheres (as indentações não se sobrepõem.)
Descrição de dados categóricos
Até agora discutimos como descrever variáveis contínuas, seja o seu total ou dividida por
categorias de uma outra variável. Mas e quando queremos estudar também a própria variável
categórica? Nesse caso, vamos usar ferramentas diferentes daquelas usadas para as variáveis
contínuas.
Tabelas
A forma mais usual e simples de se descrever dados categóricos é com o uso de tabelas de
contingência. Com o R é possível construir essas tabelas, mas não há um instrumental adequado
para uma formatação de alto nível para apresentação de dados em um documento ou para a
preparação de slides. Como já mostrado no módulo \u201cEntrada e Saída de Dados no R\u201d, essas tabelas
podem ser exportadas facilmente para o formato CSV que pode ser lido por diversos programas
tanto estatísticos como planilhas eletrônicas.
Vamos usar o mesmo banco que vínhamos usando para exemplificar. Vamos estudar as
relações entre as variáveis categóricas nesse banco. Começando por uma tabulação para cada
variável:
15
M F
0
20
0
40
0
60
0
80
0
Boxplot de IGF-I por Sexo
> table(sex)
sex
 M F 
621 713
> table(menarche)
menarche
Não Sim 
369 335 
> table(tanner)
tanner
 I II III IV V 
515 103 72 81 328 
Podemos também fazer tabelas de dupla entrada, claro:
> table(sex,tanner)
 tanner
sex I II III IV V
 M 291 55 34 41 124
 F 224 48 38 40 204
> table(menarche,tanner)
 tanner
menarche I II III IV V
 Não 221 43 32 14 2
 Sim 1 1 5 26 202
E até mesmo de tripla entrada, embora neste caso isso não faça sentido...
table(menarche,tanner, sex)
A essas alturas, você deve estar estranhando um pouco essas tabelas que o R está fazendo,
não? Pois é: elas não têm as marginais, ou seja os totais das linhas e das colunas. Outra questão é se
você estivesse querendo uma tabela de proporções e não de números absolutos. Bem, para facilitar
a vida, vamos criar uma função para que possamos escolher o tipo de tabela que queremos:
tabela.2x2 <- function(..., margens=F, prop=c(&quot;no&quot;, &quot;colunas&quot;, &quot;linhas&quot;,
&quot;total&quot;), arred=3)
{
if (margens && prop!=&quot;no&quot;) {stop(&quot;Não ajuda muito fazer proporções
com marginais... Tente de novo&quot;)}
z <- table(...)
nnm <- names(dimnames(x))
if (prop==&quot;colunas&quot;)
{
z <- prop.table(z,2)
}
if (prop==&quot;linhas&quot;)
{
z <- prop.table(z,1)
}
if (prop==&quot;total&quot;)
{
z <- z/sum(z)
}
if (margens && prop==&quot;no&quot;)
{
z <- cbind(z, Total=apply(z,1,sum))
z<-rbind(z, Total=apply(z,2,sum))
}
16
names(dimnames(z))<-nnm
round(z, arred)
}
Não chega a ser um primor de função, mas dá para fazer algumas brincadeiras. Por exemplo,
vamos tentar fazer uma tabela com as margens:
> tabela.2x2(menarche,tanner, margens=T)
 tanner
menarche I II III IV V Total
 Não 221 43 32 14 2 312
 Sim 1 1 5 26 202 235
 Total 222 44 37 40 204 547
Podemos também obter tabelas com proporções, tanto em relação às colunas como linhas e
também com relação ao total geral da tabela. Vamo tentar para as colunas:
> tabela.2x2(menarche,tanner, prop=&quot;colunas&quot;)
 tanner
menarche I II III IV V
 Não 0.995 0.977 0.865 0.35 0.01
 Sim 0.005 0.023 0.135 0.65 0.99
Repare que as colunas é que somam 1 e não as linhas. Você é capaz de sugerir como
poderíamos obter percentagens em vez de proporções para estas saídas?
Gráficos
Ao contrário dos gráficos que vimos para variáveis contínuas, que são realmente muito bons
tanto sob o ponto de vista de utilidade quanto sob o ponto de vista estético, já no caso das
representações gráficas