Variable Types
Data Types
# VA Escritórios de uma empresa de consultoria
escritorios <- c("SP", "RJ", "RS", "PA", "RJ", "RS")
escritorios
[1] "SP" "RJ" "RS" "PA" "RJ" "RS"
str(escritorios)
chr [1:6] "SP" "RJ" "RS" "PA" "RJ" "RS"
table(escritorios)
escritorios
PA RJ RS SP
1 2 2 1
tab <-table(escritorios)
barplot(tab)
pie(tab)
# quer ajuda? Use o comando ? na frente da função. Ex: ?pie
Tabela de contingência
# VA nominal
escritorios <- c("SP", "RJ", "RS", "PA", "RJ", "RS")
# VA nominal
porte <- c("G", "P", "M", "P", "G", "G")
table(escritorios, porte)
porte
escritorios G M P
PA 0 0 1
RJ 1 0 1
RS 1 1 0
SP 1 0 0
# VA ordinal
porte.o <- factor(c("G", "P", "M", "P", "G", "G"),
levels = c("P", "M", "G"),
labels = c("Pequeno", "Médio", "Grande")
)
tab <- table(escritorios, porte.o)
tab
porte.o
escritorios Pequeno Médio Grande
PA 1 0 0
RJ 1 0 1
RS 0 1 1
SP 0 0 1
# não está adequado pois não há freq sufuciente - teste não paramétrico alternativo: fisher.test(tab)
chisq.test(tab)
Aproxima攼㸷攼㸳o do qui-quadrado pode estar incorreta
Pearson's Chi-squared test
data: tab
X-squared = 5.5, df = 6, p-value = 0.4815
str(porte)
chr [1:6] "G" "P" "M" "P" "G" "G"
str(porte.o)
Factor w/ 3 levels "Pequeno","Médio",..: 3 1 2 1 3 3
Escala Nominal
empresa <- c("Gerdau", "Citygroup", "Santander", "Volkswagen", "Wal-Mart","Petrobras", "Vale","Philips", "Boing", "siemens")
# não use acento nas variáveis país = pais
pais <-c(1,5,4,2,5,1,1,3,5,2)
pais.o <-factor(pais, labels = c("Brasil", "Alemanha", "Holanda", "Espanha","Estados Unidos"))
pais
[1] 1 5 4 2 5 1 1 3 5 2
# Prefiro importar dados de uma planilha!
table(pais)
pais
1 2 3 4 5
3 2 1 1 3
table(pais.o)
pais.o
Brasil Alemanha Holanda Espanha Estados Unidos
3 2 1 1 3
sum(pais)
[1] 29
sum(pais.o) # não soma
Error in Summary.factor(c(1L, 5L, 4L, 2L, 5L, 1L, 1L, 3L, 5L, 2L), na.rm = FALSE) :
‘sum’ not meaningful for factors
Escala Ordinal
# Ranking de preferência a marcas de automóveis
marca.a <-c(1,3,3,3,3)
marca.b <-c(2,2,2,1,1)
marca.c <-c(1,1,1,2,2)
cliente <- c("josé", "joão", "carlos", "mauro", "roberto")
dados <-data.frame(marca.a, marca.b, marca.c)
row.names(dados) <- c(cliente)
dados
str(dados)
'data.frame': 5 obs. of 3 variables:
$ marca.a: num 1 3 3 3 3
$ marca.b: num 2 2 2 1 1
$ marca.c: num 1 1 1 2 2
marca.a <-factor(c(1,3,3,3,3), levels = c(1, 2, 3))
marca.b <-factor(c(2,2,2,1,1), levels = c(1, 2, 3))
marca.c <-factor(c(1,1,1,2,2), levels = c(1, 2, 3))
cliente <- c("josé", "joão", "carlos", "mauro", "roberto")
dados2 <-data.frame(marca.a, marca.b, marca.c)
row.names(dados2) <- c(cliente)
dados2
str(dados2)
'data.frame': 5 obs. of 3 variables:
$ marca.a: Factor w/ 3 levels "1","2","3": 1 3 3 3 3
$ marca.b: Factor w/ 3 levels "1","2","3": 2 2 2 1 1
$ marca.c: Factor w/ 3 levels "1","2","3": 1 1 1 2 2
Escala razão
# instale o pacote com o comando install.packages("readxl")
#carregue o pacote para uso
library(readxl)
# o arquivo xls deve estar no mesmo diretório de projeto do R
# para criar um projeto vá em File --> New project
varmetrica <- read_excel("varmetrica.xls")
varmetrica
varmetrica$nome
[1] "Patrícia" "Leonor" "Ovídio" "Mariana" "Roberto" "Letícia"
[7] "Dalila" "Luiz" "Paulo" "Rodolfo" "Renata" "Antônio"
[13] "Ana" "Antonieta" "Júlia"
varmetrica[,1]
[1] "Patrícia" "Leonor" "Ovídio" "Mariana" "Roberto" "Letícia"
[7] "Dalila" "Luiz" "Paulo" "Rodolfo" "Renata" "Antônio"
[13] "Ana" "Antonieta" "Júlia"
varmetrica$idade
[1] 31 64 57 37 52 18 21 34 30 62 27 39 28 44 51
varmetrica[,2]
[1] 31 64 57 37 52 18 21 34 30 62 27 39 28 44 51
varmetrica$renda_mensal
[1] 12400 18000 16200 7200 20800 2100 1950 15600 3400 13300 4100 15600 8200
[14] 9520 11300
varmetrica[,3]
[1] 12400 18000 16200 7200 20800 2100 1950 15600 3400 13300 4100 15600 8200
[14] 9520 11300
varmetrica[,c(2,3)]
# install.packages("psych")
library(psych)
describe(varmetrica$idade)
vars n mean sd median trimmed mad min max range skew kurtosis se
X1 1 15 39.67 14.67 37 39.46 14.83 18 64 46 0.26 -1.37 3.79
describe(varmetrica$renda_mensal)
vars n mean sd median trimmed mad min max range skew kurtosis
X1 1 15 10644.67 6040.33 11300 10532.31 6375.18 1950 20800 18850 -0.03 -1.42
se
X1 1559.61
describe(varmetrica[,c(2,3)])
vars n mean sd median trimmed mad min max range
idade 1 15 39.67 14.67 37 39.46 14.83 18 64 46
renda_mensal 2 15 10644.67 6040.33 11300 10532.31 6375.18 1950 20800 18850
skew kurtosis se
idade 0.26 -1.37 3.79
renda_mensal -0.03 -1.42 1559.61
hist(varmetrica$idade)
boxplot(varmetrica$idade)
boxplot(varmetrica[,c(2,3)])
varmetrica.p <- scale(varmetrica[,c(2,3)])
describe(varmetrica.p)
vars n mean sd median trimmed mad min max range skew kurtosis
idade 1 15 0 1 -0.18 -0.01 1.01 -1.48 1.66 3.14 0.26 -1.37
renda_mensal 2 15 0 1 0.11 -0.02 1.06 -1.44 1.68 3.12 -0.03 -1.42
se
idade 0.26
renda_mensal 0.26
boxplot(varmetrica.p)
# estratificar
table(cut(varmetrica$idade,2))
(18,41] (41,64]
9 6
table(cut(varmetrica$idade,3))
(18,33.3] (33.3,48.7] (48.7,64]
6 4 5
plot(varmetrica[,c(2,3)])
plot(varmetrica.p)
par(mfrow=c(1,2))
plot(varmetrica[,c(2,3)])
plot(varmetrica.p)
par(mfrow=c(1,1))
cor(varmetrica[,c(2,3)])
idade renda_mensal
idade 1.0000000 0.7688348
renda_mensal 0.7688348 1.0000000
cor(varmetrica$idade,varmetrica$renda_mensal)
[1] 0.7688348
cor.test(varmetrica$idade,varmetrica$renda_mensal)
Pearson's product-moment correlation
data: varmetrica$idade and varmetrica$renda_mensal
t = 4.3351, df = 13, p-value = 0.000809
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
0.4232781 0.9191102
sample estimates:
cor
0.7688348
# ?cor.test
# se a variável fosse ordinal, correlação por postos seria o método adequado
cor.test(varmetrica$idade,varmetrica$renda_mensal, method = c("spearman"))
Imposs攼㹤vel calcular o valor exato de p com empates
Spearman's rank correlation rho
data: varmetrica$idade and varmetrica$renda_mensal
S = 99.589, p-value = 0.0001689
alternative hypothesis: true rho is not equal to 0
sample estimates:
rho
0.822163
# estratificando as VA
table(varmetrica$idade)
18 21 27 28 30 31 34 37 39 44 51 52 57 62 64
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
min(varmetrica$idade)
[1] 18
max(varmetrica$idade)
[1] 64
# ?cut
idade.est <- cut(varmetrica$idade,
breaks=c(18,29,37,52,65),
labels = NULL,
include.lowest = T,
right = F)
idade.est
[1] [29,37) [52,65] [52,65] [37,52) [52,65] [18,29) [18,29) [29,37) [29,37) [52,65]
[11] [18,29) [37,52) [18,29) [37,52) [37,52)
Levels: [18,29) [29,37) [37,52) [52,65]
idade <- table(idade.est)
# ?barplot
barplot(idade,
xlab = "Idade (Qualitativa)",
ylab = "Frequência",
main="Criação de faixas para VA quantitativa")
library(readxl)
superm_bra <- read_excel("supermercadosbrasileiros.xls")
# criar um objeto somente com as variáveis 2 a 4
superm_bra2 <- sm_bra[,2:4]
library(psych)
describe(superm_bra2)
vars n mean sd median trimmed mad
Faturamento 1 30 1.884472e+09 3.996049e+09 460124320 643332737.46 368224160.24
ÁreaVendas 2 30 1.526356e+05 3.334398e+05 37359 47868.58 31963.37
Funcionários 3 30 8.738930e+03 1.556787e+04 3671 4051.58 2949.63
min max range skew kurtosis se
Faturamento 205183214 16168968046 15963784832 2.62 5.37 729575324.84
ÁreaVendas 12000 1206254 1194254 2.54 4.70 60877.49
Funcionários 1281 62803 61522 2.51 4.89 2842.29
boxplot(superm_bra2)
cor(superm_bra2)
Faturamento ÁreaVendas Funcionários
Faturamento 1.0000000 0.9901087 0.9931242
ÁreaVendas 0.9901087 1.0000000 0.9882418
Funcionários 0.9931242 0.9882418 1.0000000
plot(superm_bra2)
library(corrplot)
res <- cor(superm_bra2)
corrplot(res, type = "upper", order = "hclust",
tl.col = "black", tl.srt = 45)
corrplot(res, method="number")