Tabela de conteúdos

Comandos mostrados nas aulas do curso (2008)

Comandos mostrados nas aulas do curso (2008)

Semana 1

27/02/2008

Quatro formas alternativas de entrada de dados de 0 a 10.

x <- c(0, 1, 2, 3, 4, 5 ,6, 7, 8, 9, 10)
x
x <- 0:10
x
x <- seq(0,10, by=1)
x <- scan()
1: 0
2: 1
...
10: 9
11: 10
12: 

Extendendo as possibilidades

seq(0,1, by=0.1)
(0:10)/10
 
2*(0:10)
seq(0,20,by=2)
 
10:0
seq(10,0, by=-1)

Selecionando indivíduos pela sua posição (indexando valores de um vetor). Note que comandos a seguir somente mostram resultados sem alterar x

x[1]
x[4]
x[1:3]
x[5:8]
x[c(2, 5, 7])
x

Selecionando valores do vetor segundo outros critérios. Nos comandos a seguir o objeto original não é alterado.

pesos <- c(67, 83, 56, 91, 58, 47, 82, 75)
pesos[pesos > 80]
pesos[pesos < 50 | pesos > 80]
pesos[pesos > 50 & pesos < 80]

Substituindo valores de um vetor. Note que comandos alteram valores do vetor.

x[1:3] <- c(0, 10, 20)
x
 
pesos
pesos[4]
pesos[4] <- 81
pesos
pesos[pesos > 80]
pesos[pesos > 80] <- 85
pesos
pesos[pesos > 80] <- NA
pesos
pesos[is.na(pesos)] <- 90
pesos

Identificando as posições dos elementos que satisfazem certo critério.

pesos
which(pesos == 56)
which(pesos == 90)
which(pesos < 70)

Amostrando valores de um vetor. Note uso do rep para definir amostra com reposição. args() mostra os argumentos da função.

dados <- c(34, 28, 31, 32, 43, 40, 45, 39, 26, 29)
sample(dados, 3)
sample(dados, 3)
sample(dados, 3, rep=TRUE) 
args(sample)

Ordenando valores

dados
sort(dados)
rev(sort(dados))
sort(dados, decreasing=T)

Acrescentando elementos e concatenando dois ou mais vetores

x <- 0:10
x
x <- c(x, 11)
x
 
x1 <- c(51:60, 101:110)
x1
 
x2 <- c(x, c(15, 18, 21, 15, 30))
x2
 
x3 <- c(x2, x1)
x3
 
c(1:10, seq(21, 50, by=2), c(100, 110, 150))

Semana 2

03/03/2008

Operadores aritméticas e funções para operações aritméticas, prioridade de operações, uso de parêntesis.

x <- 0:10
px <- choose(10, x) * (0.3)^x * (1-0.3)^(10-x)
px

Gráficos

plot(x, px)            # ver gráfico
plot(x, px, type="h")  # ver gráfico

Funções relacionadas a distribuições de probabilidades

px <- dbinom(x, 10, 0.3)
px

Gráfico da função acumulada

Fx <- pbinom(x, 10, 0.3)
Fx
cumsum(px)        # note que soma acumulada de dbinom() fornece mesmo resultado que pbinom()
plot(x, Fx, type="s")

Lei da reciclagem (recycling rule) válida para as operações aritméticas

2 * x
(0.3)^x
x1 <- c(2, 5, 7, 8)
x1
x2 <- c(10, 20)
x2
x1 + x2
x2 + x1
x3 <- (1:3)*10
x3
x1 + x3
x3 + x1
x2 + x3
x3 + x2
x1 * x2
x1 * x2
exp(x1) + log(x2)

Argumentos de funções: ordem dos argumentos, nomes dos argumentos, casamento parcial de nomes, argumentos com default

args(dbinom)
dbinom(x, 10, 0.3)
dbinom(x=x, size=10, prob=0.3)
dbinom(prob=0.3, x=x, size=10)
dbinom(size=10, prob=0.3, x=x)
dbinom(x, s=10, p=0.3)
dbinom(x, p=0.3, s=10)
dbinom(x, p=0.3, s=10)
dbinom(x, 10, 0.3, log=F)
dbinom(x, 10, 0.3, log=T)

05/03/2008

Verificando máximos, mínimos e suas posições em um vetor.

pesos <- c(67, 83, 56, 91, 58, 47, 82, 75)
max(pesos)
min(pesos)
which(pesos == max(pesos))
which.max(pesos)
which(pesos == min(pesos))
which.min(pesos)

Testando pela ocorrência de NA. Note o uso do caracter de negação !

dat <- c(43, 56, NA, 23, 48, 33, NA, 29, 33, 39)
is.na(dat)
!is.na(dat)
which(is.na(dat))
which(!is.na(dat))
dat1 <- dat[!is.na(dat)]

Semana 3

10/03/2008

Outras funções de probabilidades

args(dchisq)
args(dt)

Algumas contantes e operadores

exp(1)
exp(3)
print(pi, dig=12)
print(pi, dig=12)
pi
options(digits=12)
pi
exp(1)

Examinar opções de options()

options()

12/03/2008

Funções para verificar exitência de NA's NaN's e valores infinitos (Inf)

x <- c(5, 0, -2)
x/0
is.nan(x/0)
is.finite(x/0)
!is.finite(x/0)

Explicações sobre como o R armazana objetos (RAM e/ou dispositivos como por exemplo o HD)

save.image()
q()

Listando e apagando objetos

ls()
objects()
rm(x)
rm(list=ls())
args(ls)
ls()
ls(all=T)

Tipos de objetos no R: matrizes

x <- 1:24
x
m <- matrix(x, nr=6)
m
m <- matrix(x, nr=6, byrow=T)
m
x <- 1:25
m <- matrix(x, nr=6)
m
attributes(x)
attributes(m)

Tipos de objetos no R: arrays

x <- 1:24
a <- array(x, dim=c(4,3,2))
a

Digitação e conversão de uma tabela de tripla entrada (dada no quadro durante a aula) em um objeto do tipo array

PR SC RS
Masculino Feminino Masculino Feminino Masculino Feminino
Não Fuma 45 16 21 33 40 45
Fuma pouco 28 22 34 21 50 37
Fuma muito 37 15 56 30 85 29

Comentários sobre ordem de entrada dos dados, cliclagem das variáveis e definição das dimensões do array

freqs <- scan()
1: 45
2: 28
3: 37
4: 16
5: 22
6: 15
7: 21
8: 34
9: 56
10: 33
11: 21
12: 30
13: 40
14: 50
15: 85
16: 45
17: 37
18: 29
19:
freqs
Af <- array(freqs, dim=c(3,2,3))
Af

Semana 4

17/03/2008

freqs = scan(file='http://leg.ufpr.br/~ehlers/CE223/fumo.dat')
freqs
 [1] 45 16 21 33 40 45 28 22 34 21 50 37 37 15 56 30 85 29
 
array(freqs, dim=c(2,3,3))
, , 1
 
     [,1] [,2] [,3]
[1,]   45   21   40
[2,]   16   33   45
 
, , 2
 
     [,1] [,2] [,3]
[1,]   28   34   50
[2,]   22   21   37
 
, , 3
 
     [,1] [,2] [,3]
[1,]   37   56   85
[2,]   15   30   29
 
# Cada matrix 2x3 contem as contagens por sexo (linhas) e estado (colunas). 
# A ultima dimensao refere-se ao habito de fumar.
 
nomes = list(c('M','F'),c('PR','SC','RS'),c('nao fuma','fuma pouco','fuma muito'))
 
hf = array(freqs, dim=c(2,3,3), dimnames=nomes)
 
hf
, , nao fuma
 
  PR SC RS
M 45 21 40
F 16 33 45
 
, , fuma pouco
 
  PR SC RS
M 28 34 50
F 22 21 37
 
, , fuma muito
 
  PR SC RS
M 37 56 85
F 15 30 29
 
m1 <- matrix(1:12, ncol = 3)
m1
 
dimnames(m1)
 
dimnames(m1) <- list(c("L1", "L2", "L3", "L4"), c("C1", "C2", "C3"))
 
m1
 
m2 <- cbind(1:5, 6:10)
m2
 
m3 <- cbind(1:5, 6)
m3
 
margin.table(m1, margin = 1)
 
apply(m1, 1, sum)
 
rowSums(m1)
 
margin.table(m1, margin = 2)
 
apply(m1, 2, sum)
 
colSums(m1)

Operacoes com matrizes

m4 <- matrix(1:6, nc = 3)
m5 <- matrix(10 * (1:6), nc = 3)
m4
 
m5
 
m4 + m5
 
m4 * m5
 
m5 - m4
 
m5/m4
 
m4 %*% m5
 
t(m4)
 
m6 = t(m4)%*% m5
 
solve(m6)
 
m6[3,3]=20
 
solve(m6)
 
mat <- matrix(c(1, 5, 2, 3, -2, 1, -1, 1, -1), nc = 3)
 
vec <- c(10, 15, 7)
 
solve(mat, vec)

19/03/2008

Data frames

d1 = data.frame(x=1:10,y=c(51,54,61,67,68,75,77,75,80,82))
 
d1
 
      x  y
  1   1 51
  2   2 54
  3   3 61
  4   4 67
  5   5 68
  6   6 75
  7   7 77
  8   8 75
  9   9 80
  10 10 82
 
names(d1)
 
d1$x
d1$y
 
d1[,1]
d1[,2]
 
plot(d1)
 
plot(d1$x,d1$y)
 
d2 = data.frame(Y = c(rnorm(5,mean=10,sd=2), rnorm(5,16,2), rnorm(5,14,2)))
 
gl(3, 5)
 [1] 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3
Levels: 1 2 3
 
d2$lev = gl(3, 5)
 
d2
 
is.factor(d2$lev)

Aplicando uma funcao a um Data Frame separando por fatores

by(d2$Y, d2$lev, summary)

Criando um Data Frame a partir de todas as combinacoes de 2 fatores.

d3 = expand.grid(1:3, 4:5)
d3
 
is.data.frame(d3)

Adicionando colunas

d4 = data.frame(peso=rnorm(15,65,5),altura=rnorm(15,160,10))
d4
 
d4=cbind(d4,sexo=c(rep('M',10),rep('F',5)))
d4

Toda coluna que não seja composta exclusivamente de números é definida como um fator.

is.factor(d4$sexo)
[1] TRUE
 
letters
 
LETTERS
 
d4=cbind(d4,nome=letters[1:15])
 
is.factor(d4$nome)
[1] TRUE
 
d4$nome= as.character(d4$nome)
 
d4
 
dim(d4)
 
names(d4)
 
dimnames(d4)
 
rownames(d4)
 
colnames(d4)
 
d4[d4$sexo=='M',1:2]
 
d4[d4$sexo=='F',4]
 
by(d4[,1:2],d4$sexo,function(x)x)
 
by(d4[,4],d4$sexo,function(x)as.character(x))

Listas

Listas sao estruturas genericas e flexiveis que permitem armazenar
diversos formatos em um unico objeto. 
 
lis1 <- list(A = 1:10, B = "CE 223", C = matrix(1:9,ncol = 3))
lis1
 
$A
[1]  1  2  3  4  5  6  7  8  9 10
 
$B
[1] "CE 223"
 
$C
     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9

Varias funcoes do R retornam listas

d1
 
lis2 = lm (y ~ x, data=d1)
 
lis2
 
is.list(lis2)
 
class(lis2)
 
summary(lis2)
 
anova(lis2)
 
names(lis2)
 
lis2$pred
 
lis2$residuals
 
par(mfrow=c(2,2))
 
plot(lis2)

Selecionando elementos de uma lista

lis1$A
 
lis2$coeff
 
lis1[3]
 
lis1[[3]]

Semana 5

24/03/2008

Problema: Considere duas variáveis aleatórias: N com distribuição Poisson de parâmetro 15 e Pr com distribuição exponencial de parâmetro 1/50000. Queremos obter o quantil 99 de uma variável aleatória Y dada pelo produto das anteriores, isto é Y = N * Pr.

Solução: a solução analítica requer a obtenção da f.d.p. de Yseguida da resolução de uma equação envolvendo integração desta f.d.p. para encontrar o quantil pedido. Entretanto, vamos aqui ilustrar uma alternativa numérica para resolver o problema, usando uma aproximação numérica por simulação.

N<- rpois(10000, lambda=15)
Pr<- rexp(10000, rate=1/50000)
Y<- N*Pr
q99 <- quantile(Y, prob=0.99)

Vamos agora visualizar a distribuição de interesse de diferentes formas: pelo histograma das simulações e, uma forma alternativa (e mais interessante!!!) utilizando estimação de densidades.

hist(Y)
hist(Y, prob=T)
lines(density(Y))
plot(density(Y))
abline(v=q99)

Note que funções podem retornar resultados e/ou gráficos. A função hist() é um exemplo de função que retorna ambos.

hy <- hist(Y)
hy
class(hy)
plot(hy)
hist

Criando uma função um exemplo. Vamos encapsular todo o procedimento acima em uma função. Isto pode ser útil para tornar a execução mais rápida e eficiente quando o procedimento deve ser repetido várias vezes. (o equivalente a construir macros).

mf<- function(n,lam,r,q){
  N<-rpois(n,lambda=lam)
  Pr<-rexp(n,rate=r)
  Y<-N*Pr
  qq <- quantile(Y,prob=q)
  hist(Y,prob=T)
  lines(density(Y))
  abline(v=qq)
  text("topright", paste("quantil", q, "=", qq))
  return(invisible(qq))
}
mf(10000, 15, 1/50000, 0.99)
resp <- mf(10000,15, 1/50000, 0.99)
resp

26/03/2008

Exercício proposto no material do curso e extensões discutidas em aula.

Calculando o valor da expressão

x <- c(12, 11,14,15,10,11,14,11)
E=-length(x)*10 + sum(x) * log(10) - sum(log(factorial(x)))
E

Agora tornando mais flexível, escrevendo uma função que permite entrar com diferentes amostras e/ou valores de λ.

mf <- function(y, lam){
-length(y)*lam + sum(y) * log(lam) - sum(log(factorial(y)))
}
mf(y=x, lam=10)

Noque que está é a expressão da log-verossimilhanca para uma a.a. de uma distribuição de Poisson

mf(y=x, lam=11)
mf(y=x, lam=12)
mf(y=x, lam=13)

Vamos então fazer o gráfico da função log-verossimilhança. Como esta é uma função do parâmetro λ vamos primeiro redefinir a função de uma forma mais conveniente colocando o parâmetro como o primeiro argumento.

mf <- function(lam, y){
-length(y)*lam + sum(y) * log(lam) - sum(log(factorial(y)))
}
l <- seq(5, 25, l=200)
ll <- mf(l)
ll <- mf(l, y=x)
plot(l, ll, type="l", xlab=expression(lambda), ylab=expression(l(lambda)))

Vamos agora indicar a solução analítica.

mean(x)
abline(v=mean(x))

A solução também poderia ser obtida por otimização numérica. Isto não é vantajoso para este problema mas pode ser a solução em casos onde a solução analítica não é disponível.

optimize(mf, c(min(x), max(x)), maximum=T, y=x)

Semana 6

31/03/2008 e 02/04/2008

Lendo dados externos no formato data.frame

milsa=read.table('milsa.dat',header=T)

Transformando numericos em fatores

milsa$civil=factor(milsa$civil,lev=1:2,lab=c('solteiro','casado'))
milsa$instrucao=factor(milsa$instrucao,lev=1:3,lab=c('1oGrau','2oGrau','superior'),ord=T)
milsa$regiao=factor(milsa$regiao,lev=1:3,lab=c('interior','capital','outro'))
head(milsa)
Criando nova variavel numerica
milsa=transform(milsa,idade=ano+mes/12)

Tabulacao

table(milsa$instrucao)
 
table(milsa$civil)
 
table(milsa$regiao)
 
table(milsa[,c(2,3)])
 
table(milsa$civil,milsa$instrucao)
 
attach(milsa)
 
table(civil,instrucao)
 
table(civil,instrucao,regiao)

Proporcoes

tmp=table(civil,regiao)
 
cbind(tmp, total=rowSums(tmp))
 
prop.table(tmp,mar=1)# linhas somam 1
 
rbind(tmp, total=colSums(tmp))
 
prop.table(tmp,mar=2)# colunas somam 1
 
prop.table(tmp)# todos somam 1

Resumos

summary(milsa[,-1])
 
par(mfrow=c(3,2))
 
barplot(table(civil))
barplot(table(instrucao))
barplot(table(regiao))
 
pie(table(civil),main='estado civil')
pie(table(instrucao),main='grau de instrucao')
pie(table(regiao),main='regiao de origem')

Analise bivariada

barplot(table(civil,instrucao))
barplot(table(regiao,instrucao))
 
barplot(table(civil,instrucao),beside=T)
barplot(table(regiao,instrucao),beside=T,legend.text=T)

Esquema dos 5 numeros

fivenum(idade)
 
[1] 20.83333 30.58333 34.91667 40.54167 48.91667
 
quantile(idade,c(0.25,0.75))
     25%      75% 
30.66667 40.52083

Medidas robustas

salario1=salario
salario1[36]=93.30
 
mean(salario); mean(salario1)
 
median(salario); median(salario1)
 
mean(salario,trim=0.1); mean(salario1,trim=0.1)
 
sd(salario); sd(salario1)
 
#distancia inter quartis
 
IQR(salario); IQR(salario1)
 
##Desvio absoluto mediano (MAD: median absolute deviation)
##mediana(|Xi - median(X)| * 1.4826
##A constante 1.4826 torna o mad comparavel com o sd de uma normal
 
mad(salario); mad(salario1)

Ramo-folhas

stem(salario)
 
  The decimal point is at the |
 
   4 | 0637
   6 | 379446
   8 | 15791388
  10 | 5816
  12 | 08268
  14 | 77
  16 | 0263
  18 | 84
  20 | 
  22 | 3
 
stem(salario,scale=2)
   4 | 06
   5 | 37
   6 | 379
   7 | 446
   8 | 1579
   9 | 1388
  10 | 58
  11 | 16
  12 | 08
  13 | 268
  14 | 77
  15 | 
  16 | 026
  17 | 3
  18 | 8
  19 | 4
  20 | 
  21 | 
  22 | 
  23 | 3

Histogramas

par(mfrow=c(2,2))
 
hist(salario,main='salario')
 
hist(salario,nclass=15,main='salario')
hist(idade,main='idade')
 
barplot(table(filhos),main='No de filhos')
 
par(mfrow=c(1,1))
 
hist(salario,main='salario')
rug(salario)

Estimando uma funcao de densidade

hist(salario,main='salario',prob=T)
lines(density(salario))
 
hist(idade,main='idade',prob=T)
lines(density(idade))

Boxplot

par(mfrow=c(1,2))
 
boxplot(idade,main='idade')
rug(idade,side=2)
 
boxplot(salario,main='salario')
rug(salario,side=2)
 
par(mfrow=c(2,1))
 
boxplot(idade,horizontal=T,main='idade')
rug(idade,side=1)
 
boxplot(salario, horizontal=T,main='salario')
rug(salario,side=1)

Variaveis categoricas e numericas

boxplot(salario~regiao)
boxplot(idade~civil)
 
boxplot(scale(salario),scale(idade)) #variaveis na mesma escala

Ambas variaveis numericas

plot(salario,idade) #variaveis na mesma escala
 
corr=round(cor(salario,idade),2)
 
text(20,25,paste('rho=',corr))

Semana 7

07/04/2008 e 09/04/2008

Analisar os dados do Exercicio 26, Capitulo 1 do livro NOÇÕES DE PROBABILIDADE E ESTATÍSTICA disponiveis em http://www.ime.usp.br/~noproest

Note que ha brancos no arquivo de dados (dados omissos). Uma forma de tratar este problema é abrir o arquivo Excel e salvar como um arquivo texto do tipo CSV (comma separated values). Posteriormente este arquivo pode ser lido como

read.table('nome do arquivo', header=T, sep=',')
 
# ou
read.csv('nome do arquivo', header=T)

Uma alternativa melhor é utilizar a função read.xls do pacote gdata pois assim não precisamos abrir o arquivo Excel. Após salvar o arquivo aeusp.xls na sua area de trabalho execute

library(gdata) ou require(gdata)
 
x = read.xls ('aeusp.xls')
 
head(x)
 
  Num    Comun Sexo Idade Ecivil X.Reproce X.Temposp X.Resid Trab Ttrab X.Itrab
1   1 JdRaposo    2     4      4  Nordeste        21       9    3    NA      20
2   2 JdRaposo    2     1      1   Sudeste        24       9    1     1      14
3   3 JdRaposo    2     2      1  Nordeste        31       3    1     1      14
4   4 JdRaposo    1     2      2  Nordeste        10       3    1     4      10
5   5 JdRaposo    2     4      2  Nordeste        31       6    1     1      11
6   6 JdRaposo    2     4      2   Sudeste        24       4    2    NA      15
  X.Renda X.Acompu X.Serief
1       1        2        1
2       2        2        7
3       5        2        7
4       5        2       11
5       6        1        4
6       4        2        4

30/04/2008

Gerando 1000 amostras de tamanho n=20 de uma distribuição normal padrão

rnorm(20, m=70, sd=10)
ams <- matrix(rnorm(20*1000, m=70, sd=10), ncol=20)
dim(ams)
ams[1,]
ams[2,]

Calculando o valor da estatística de interesse para a primeira e segunda amostra

max(ams[1,])/quantile(ams[1,], prob=0.75)
unname(max(ams[1,])/quantile(ams[1,], prob=0.75))
unname(max(ams[2,])/quantile(ams[2,], prob=0.75))

Escrevendo uma função que calcula o valor da estatística de interesse e calculando novamente o valor para a primeira e segunda amostras.

T.est <- function(x) unname(max(x)/quantile(x, prob=0.75))
T.est(ams[1,])
T.est(ams[2,])

Calculando valor da estatística de interesse agora para todas as amostras de uma só vez

ts <- apply(ams, 1, T.est)
length(ts)
ts

Explorando os resultados: medidas resumo, grafico de densidade estimada e IC (95%)

summary(ts)
plot(density(ts))
quantile(ts, prob=c(0.025, 0.975))

Aumentando o número de amostras para 5000.

ams <- matrix(rnorm(20*5000, m=70, sd=10), ncol=20)
ts <- apply(ams, 1, T.est)
plot(density(ts))

Distribuição amostral da média: empírica (por simulação) versus teórica

medias <- apply(ams, 1, mean)
plot(density(medias))
curve(dnorm(x,mean=70, sd=10/sqrt(20)), 60, 80, add=TRUE, col=2)

07/05/2008

Exercicios sobre o uso do Latex.

Um preambulo basico:

\documentclass[12pt]{article}% classes basicas: book, article, report e letter
\usepackage[brazil]{babel}% português do Brasil. 
\usepackage[latin1]{inputenc}% usar o conjunto de caracteres Europeu Ocidental.
Para usar Unicode, substitua a última linha por
\usepackage[utf-8]{inputenc}

Apos o preambulo coloque o titulo, autoria e data do artigo.

\Title{Título do Trabalho}
\author{Nome do Autor}
\date{\today}

Agora sim começa o documento,

\begin{document}
\maketitle
% seu texto ...
% Inclua seções e subseções 
\section{Uma seção}
\subsection{Uma subseção}
\end{document}

Escreva os comandos Latex para as seguintes formulas matematicas:

$$ E(X^2)=\int_{-\infty}^{\infty}x^2 f(x)dx $$

$$ 
X\sim N(\mu,\sigma^2)\Rightarrow f(x)=\frac{1}{\sqrt{2\pi\sigma^2}}\exp\left\{-\frac{1}{2\sigma^2}(x-\mu)^2\right\}
$$

$$ (a+b)^n = \sum_{k=0}^n \frac{n!}{k!(n-k)!} a^k b^{n-k} $$
As fórmulas acima ficam destacadas do texto. Para que uma formula fique dentro do texto use $ formula $ ao inves de $$ formula $$.

Escreva os comandos do Latex para construir a seguinte matriz:

Graph

\left[
\begin{array}{cccc}
a_{11} & a_{12} & \dots  & a_{1n}\\
a_{21} & a_{22} & \dots  & a_{2n}\\
\vdots & \vdots & \vdots & \vdots\\
a_{m1} & a_{m2} & \dots  & a_{mn}\\  
\end{array}
\right]

Escreva os comandos do Latex para montar as seguintes tabelas. Tente numerar as tabelas, colocar um comentário e referenciar as tabelas no texto.

Graph

\begin{tabular}{ccc}
\hline
           & masculino & feminino \\
\hline
Não fuma   & 45        & 16       \\
Fuma pouco & 28        & 22       \\
\hline
\end{tabular}

Graph

\begin{tabular}{|l|cc|}
\hline
           & masculino & feminino \\
\hline\hline
Não fuma   & 45        & 16       \\
Fuma pouco & 28        & 22       \\
\hline
\end{tabular}

Criando uma tabela Latex de dentro do R.

m=data.frame(x=rnorm(10),y=rgamma(10))
library(Hmisc)
latex(round(m,4), title='',file='tab1.tex',caption='Usando o comando latex do pacote Hmisc.')
Agora basta incluir o arquivo tab1.tex no seu documento.

Incluindo figuras.

Os comandos abaixo criam um arquivo Postscript com um histograma.

postscript('histograma.ps')
hist(rnorm(1000))
dev.off()

Use os comandos abaixo para incluir a figura no seu documento. Será preciso incluir o comando \usepackage[dvips]{graphicx} no preambulo.

\begin{figure}[htbp]\centering
\includegraphics[width=10cm, height=10cm]{histograma.ps}
\caption{Histograma de uma amostra de tamanho 1000 da distribuição normal padrão.}
\label{fig:hist}
\end{figure}

Pode-se fazer referencia a figura no texto: figura \ref{fig:hist}, na pagina \pageref{fig:hist}. Note que a figura ficou rotacionada à esquerda. Podemos corrigir refazendo o arquivo .ps

postscript('histograma.ps',horizontal=F)
hist(rnorm(1000))
dev.off()

ou usando a opção "angle"

\begin{figure}[htbp]\centering
\includegraphics[width = 10cm, height = 10cm, angle = 270]{histograma.ps}
\caption{Histograma de uma amostra de tamanho 1000 da distribuição normal padrão.}
\label{fig:hist}
\end{figure}

Colocando duas figuras lado a lado. Acrescente \usepackage{subfigure} no preambulo.

\begin{figure}[h]
   \centerline{
   \subfigure[histograma grande]{\includegraphics[width=10cm,height=10cm]{histograma.ps}
   \label{fig:hist1}}
   \hfil
   \subfigure[histograma pequeno]{\includegraphics[width=5cm,height=5cm]{histograma.ps}
   \label{fig:hist2}}
   }
   \caption{Exemplo de duas figuras.}
   \label{fig:histogramas}
\end{figure}

Fazendo referencia: Figuras \ref{fig:histogramas}, \ref{fig:hist1} e \ref{fig:hist2}.

Mais sobre fórmulas matemáticas.

Graph

$$
\overbrace{x_1+\underbrace{x_2+\ldots+x_{n-1}}_{n-2}+x_n}^n
$$

Graph

 
$ \widehat{\theta\lambda\beta} $, $ \tilde{\pi} $, $ \widetilde{\pi q} $.

Graph

$$ \int_0^{\infty} e^{-st}\,dt = \frac{e^{-st}}{-s} \Bigg|_0^{\infty} $$

Graph

$$
I_{x\in A} = \left\{
\begin{array}{rc}
1 & \mbox{se} \quad x \in A\\
0 & \mbox{se} \quad x \notin A
\end{array}
\right.
$$

Para gerar automaticamente uma tabela de conteúdo (ou sumário), lista de figuras e lista de tabelas inclua estes comandos logo após \begin{document}

\tableofcontents
\listoffigures
\listoftables
Compile 3 vezes seu arquivo .tex e os arquivos .toc .lof e .lot serão criados.

Funções de verossimilhança

Seja (12,15,9,10,17,12,11,18,15,13) uma amostra aleatoria de Graph.