====== 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 ''Y''seguida 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$
$$ 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\}$
$$
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}
$$ (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:
\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]
\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.
\begin{tabular}{ccc}
\hline
& masculino & feminino \\
\hline
Não fuma & 45 & 16 \\
Fuma pouco & 28 & 22 \\
\hline
\end{tabular}
\begin{tabular}{ccc}
\hline
& masculino & feminino \\
\hline
Não fuma & 45 & 16 \\
Fuma pouco & 28 & 22 \\
\hline
\end{tabular}
\begin{tabular}{|l|cc|}
\hline
& masculino & feminino \\
\hline\hline
Não fuma & 45 & 16 \\
Fuma pouco & 28 & 22 \\
\hline
\end{tabular}
\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.
$\overbrace{x_1+\underbrace{x_2+\ldots+x_{n-1}}_{n-2}+x_n}^n$
$$
\overbrace{x_1+\underbrace{x_2+\ldots+x_{n-1}}_{n-2}+x_n}^n
$$
$ \widehat{\theta\lambda\beta} $, $ \tilde{\pi} $, $ \widetilde{\pi q} $.
$ \widehat{\theta\lambda\beta} $, $ \tilde{\pi} $, $ \widetilde{\pi q} $.
$$
\int_0^{\infty} e^{-st} \, dt = \frac{e^{-st}}{-s}\Bigg|_0^{\infty}
$$
$$ \int_0^{\infty} e^{-st}\,dt = \frac{e^{-st}}{-s} \Bigg|_0^{\infty} $$
$$
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.
$$
$$
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 $X\sim N(\mu,4)$ .