Você está na página 1de 14

MQAP

EX. 5
a) > numSummary(segsocial[, "RREC_DOL", drop = FALSE],
statistics = c("mean", "sd"), quantiles = c(0,
+ 0.25, 0.5, 0.75, 1))
mean sd n NA
25941.66 20558.5 947 553
A média é 25941.66 e o desvio padrão é 20558.5
b) > numSummary(segsocial[, "RREC_DOL", drop = FALSE],
statistics = c("IQR", "quantiles"),
+ quantiles = c(0, 0.25, 0.5, 0.75, 1))
IQR 0% 25% 50% 75% 100% n NA
21250 500 11250 21250 32500 87500 947 553
c)

151
139
126
112
111
110
93
86
64
20
80000
60000
RREC_DOL

40000
20000
0

d) Há um outlier com valor 100


Q3+3*IQR=32500+3*21250=96250, logo é outlier moderado pois 100<96250
e) Assimetria positiva
f)
200
150
frequency

100
50
0

0 20000 40000 60000 80000

RREC_DOL

Sim, confirma-se, tem uma assimetria positiva


Ex4:
a) População: Todos os alunos que estudavam na ESTG no ano letivo
2010/2011
Unidade estatística: Cada aluno que estudava na estg no ano letivo
2010/2011.
b) Qualitativa

Ex:1
a) Unidade estatística: cada um dos 30 países com informações recolhidas dos anos
50.
População: Todos os 30 países com informações recolhidas dos anos 50.
b) País- qualitativa nominal
Taxa de Nascimento- quantitativa continua
k
c) 2 =nvalido(n-nºcasos omissos)
> sapply(Base_Países, function(x) (sum(is.na(x)))) # NA counts
País Taxa_nascimento PIB_capita
Agrícola
0 0 0
0
Taxa_mort_infantil
0
Como a variável não tem casos omissos, então o nvalido é igual ao nº total de
países.
2k=30k=log230k=5
> with(Base_Países, Hist(Taxa_nascimento, scale =
"percent", breaks = 5, col = "darkgray"))
Como o histograma não dividiu a variável pelo numero que nós pedimos, temos
de forçar de forma a que o faça, fazendo-o da seguinte maneira:
Substituir Breaks=5 por breaks=c (14.8, 21.1, 27.4, 33.8, 40.1, 46.4)
> local({
+ .Table <- with(Base_Países, table(variable))
+ cat("\ncounts:\n")
+ print(.Table)
+ cat("\npercentages:\n")
+ print(round(100 * .Table/sum(.Table), 2))
+ })

counts:
variable
(14.8,21.1] (21.1,27.4] (27.4,33.8] (33.8,40.1] (40.1,46.4]
13 9 1 4 3

percentages:
variable
(14.8,21.1] (21.1,27.4] (27.4,33.8] (33.8,40.1] (40.1,46.4]
43.33 30.00 3.33 13.33 10.00
Bin numeric variable- frequency distributions
percent

15 20 25 30 35 40 45

Taxa_nascimento

> with(Base_Países, Hist(Taxa_nascimento, scale = "percent",


breaks = c(14.8, 21.1, 27.4, 33.8, 40.1, 46.4) , col =
"darkgray"))
local({
+ .Table <- with(Base_Países, table(variable))
+ cat("\ncounts:\n")
+ print(.Table)
+ cat("\npercentages:\n")
+ print(round(100 * .Table/sum(.Table), 2))
+ })

counts:
variable
(14.8,21.1] (21.1,27.4] (27.4,33.8] (33.8,40.1] (40.1,46.4]
13 9 1 4 3

percentages:
variable
(14.8,21.1] (21.1,27.4] (27.4,33.8] (33.8,40.1] (40.1,46.4]
43.33 30.00 3.33 13.33 10.00
A classe modal é [14.8,21.1].
d)
percent

15 20 25 30 35 40 45

Taxa_nascimento
e) > Base_Países <- within(Base_Países, {
+ Agricola_Maioria <- Recode(Agrícola, "lo:49.999=\"sim\";
50:hi=\"não\"", as.factor = TRUE)
+ })
f)

1
2
3
45
40
35
Taxa_nascimento

30
25
20
15

Temos 3 outliers: 1, 2, e o 3, mas o maior é o 3.


> numSummary(Base_Países[, "Taxa_nascimento", drop =
FALSE], statistics = c("IQR",
+ "quantiles"), quantiles = c(0, 0.25, 0.5, 0.75, 1))
IQR 0% 25% 50% 75% 100% n
9.25 14.8 18.15 21.45 27.4 46.4 30

Q3+3*IQR=27.4+3*9.25=55.15, como 3<55 entao é um outlier moderado.


g) > numSummary(Base_Países[, "PIB_capita", drop = FALSE], statistics
= c("mean", "quantiles"),
+ quantiles = c(0, 0.25, 0.5, 0.75, 1))
mean 0% 25% 50% 75% 100% n
534.1333 44 209.75 514 857.5 1723 30
Medidas de tendência central: media, mediana
Média: 534.1333
Mediana: 514
h) P90=972.3
> numSummary(Base_Países[, "PIB_capita", drop = FALSE],
statistics = c("mean", "quantiles"),
+ quantiles = c(0, 0.25, 0.5, 0.75, 0.9, 1))
mean 0% 25% 50% 75% 90% 100% n
534.1333 44 209.75 514 857.5 972.3 1723 30
i) 120
100
80
Taxa_mort_infantil

60
40
20

0 500 1000 1500

PIB_capita

Correlação inversa e forte. Quanto maior for o PIB_capita menor é a taxa de mortalidade
infantil.

j) > cor(Base_Países[, c("Agrícola", "PIB_capita",


"Taxa_mort_infantil", "Taxa_nascimento")],
+ use = "complete")
Agrícola PIB_capita Taxa_mort_infantil Taxa_nascimento
Agrícola 1.0000000 -0.7754682 0.6964200 0.4804208
PIB_capita -0.7754682 1.0000000 -0.7454675 -0.4190898
Taxa_mort_infantil 0.6964200 -0.7454675 1.0000000 0.6643228
Taxa_nascimento 0.4804208 -0.4190898 0.6643228 1.0000000

k) > summary(RegModel.1)
Call:
lm(formula = Taxa_mort_infantil ~ PIB_capita, data = Base_Países)

Residuals:
Min 1Q Median 3Q Max
-28.611 -11.564 -4.453 6.399 46.694

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 82.510203 6.248522 13.205 1.51e-13 ***
PIB_capita -0.056172 0.009492 -5.918 2.28e-06 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 20.01 on 28 degrees of freedom


Multiple R-squared: 0.5557, Adjusted R-squared: 0.5399
F-statistic: 35.02 on 1 and 28 DF, p-value: 0.000002282

Y^=beta0+beta1xY^=82.51-0.056172x
l) Para 200€Y^=82.51-0.056172*200=71.2756€
Para 2000€Y^=82.51-0.056172*2000=-29.834, este valor não faz sentido pois já
esta fora do intervalo de valores.

Ex.2
a) População- são todas as deslocações casa-trabalho de alguns funcionários de
uma empresa.
Dimensão da amostra: 75 deslocações trabalho-casa.
b) Combustível- qualitativa nominal
Distância- quantitativa continua

c) > sapply(Viagens, function(x) (sum(is.na(x)))) # NA


counts
TipoTransporte Combustível Distância
Duração Custo
0 15 0
0 0

Há portanto 15 observações em falta na variável combustível.


d)
35
30
25
Frequency

20
15
10
5
0

Gasóleo Gasolina GPL

Combustível
A moda é o gasóleo pois é o que tem o maior numero de carros a andar na
estrada todos os dias, segundo este gráfico.
e) 1) 2k=75k=log275k=6
Isto porque a variável distancia não tem casos omissos (como verificamos na
linha anterior), então o n e igual a 75 e resolvendo aquela conta temos que k=6.
> Viagens <- within(Viagens, {
+ Distância_classes <- Recode(Distância,
"1:12=\"muito curta\"; 12:24=\"curta\";
24:36=\"média\"; 36:48=\"longa\"; 48:60=\"muito
longa\"",
+ as.factor = TRUE)
+ })

> Viagens$Distância_classes <- with(Viagens,


factor(Distância_classes, levels = c("muito curta",
+ "curta", "média", "muito longa")))

> local({
+ .Table <- with(Viagens,
table(Distância_classes))
+ cat("\ncounts:\n")
+ print(.Table)
+ cat("\npercentages:\n")
+ print(round(100 * .Table/sum(.Table), 2))
+ })

counts:
Distância_classes
muito curta curta média muito longa
55 14 5 1

percentages:
Distância_classes
muito curta curta média muito longa
73.33 18.67 6.67 1.33
2) > numSummary(Viagens[, "Distância", drop = FALSE],
statistics = c("mean", "sd", "IQR",
+ "quantiles"), quantiles = c(0, 0.25, 0.5, 0.75,
1))
mean sd IQR 0% 25% 50% 75% 100% n
10.70667 9.219212 8 1 5 9 13 60 75
A mediana é igual a 9km, e os extremos referem que no mínimo há pessoas a
percorrer 1km de casa para o trabalho e no máximo há pessoas a percorrer 60
km na viagem casa-trabalho.
3) A percentagem é igual a 73.3%
4) Tem uma assimetria positiva pois a “caixa” do extremos e quartis localiza-se
antes da media o que significa que tem uma assimetria positiva.

f)
60

44
50
40
Distância

49
31
24
30

46
20
10
0

g) Foram encontrados 4 outliers e o maior é o 49, como 49>33, então e um outlier


severo.
Q3+3*IQR= 9+3*8=33
> numSummary(Viagens[, "Distância", drop = FALSE],
statistics = c("IQR", "quantiles"),
+ quantiles = c(0, 0.25, 0.5, 0.75, 1))
IQR 0% 25% 50% 75% 100% n
8 1 5 9 13 60 75
h) > numSummary(tipo_transporte_publico2[, "Distância", drop =
FALSE], statistics = c("mean",
+ "sd", "IQR", "quantiles"), quantiles = c(0, 0.25, 0.5,
0.75, 1))
mean sd IQR 0% 25% 50% 75% 100% n
13.07692 13.0443 10.75 1 5 8 15.75 60 26

A distancia media percorrida pelas pessoas que andam em transportes publico


é de 13.07692 km por dia.
i) Vemos isto através da correlação (correlation matrix)
> cor(Viagens[, c("Custo", "Distância", "Duração")],
use = "complete")
Custo Distância Duração
Custo 1.0000000 0.5487177 0.5701775
Distância 0.5487177 1.0000000 0.8747806
Duração 0.5701775 0.8747806 1.0000000
A que mais se correlaciona com a distancia é a variavel Duração porque tem um
valor superior a variável do Custo, logo esta é a que se correlaciona menos.
j) 1)
TipoTransporte
Automóvel Público Outro
70
60
50
40
Duração

30
20
10

0 10 20 30 40 50 60

Distância

Correlação forte e direta.


2) > RegModel.1 <- lm(Duração ~ Distância, data = Viagens)

> summary(RegModel.1)

Call:
lm(formula = Duração ~ Distância, data = Viagens)

Residuals:
Min 1Q Median 3Q Max
-9.693 -2.996 -0.165 3.606 9.448

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 12.76371 0.88116 14.48 <2e-16 ***
Distância 0.96478 0.06254 15.43 <2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 4.96 on 73 degrees of freedom


Multiple R-squared: 0.7652, Adjusted R-squared: 0.762
F-statistic: 238 on 1 and 73 DF, p-value: < 2.2e-16

Y^=beta^0+beta^1x
Y^=12.76371+0.96478x
3) Coefeciente de determinação é o multiple r-square, que é igual a 0.7652 e é
um valor bom
4) Y^=12.76371+0.96478*15=27.2354 minutos.

Correlação de assimetria: skewness


Correlação normal: vamos a correlation matrix
Coeficiente de determinação: multiple r-square.
Ex.3
a) As variáveis qualitativas em estudo são: o sexo e a categoria e a categoria
tem as seguintes modalidades: Chefe de secção, administrativo e diretor.
b) > sapply(empresa, function(x) (sum(is.na(x)))) # NA counts
sexo anos_educ categoria salario_atual
salario_inic
0 0 0 0
0
tempo_serviço experiencia
0 0
2k=(410-0)2k=410k=log2410k=9
Como o histograma não criou o gráfico de acordo com o numero de
intervalos que nós queríamos então tivemos de o forçar da seguinte forma:
> empresa$salario_inic2 <- with(empresa,
binVariable(salario_inic, bins = 9, method = "intervals",
+ labels = NULL))

> local({
+ .Table <- with(empresa, table(salario_inic2))
+ cat("\ncounts:\n")
+ print(.Table)
+ cat("\npercentages:\n")
+ print(round(100 * .Table/sum(.Table), 2))
+ })

counts:
salario_inic2
(8.93e+03,1.69e+04] (1.69e+04,2.48e+04] (2.48e+04,3.27e+04]
(3.27e+04,4.05e+04]
300 57 34
12
(4.05e+04,4.84e+04] (4.84e+04,5.63e+04] (5.63e+04,6.42e+04]
(6.42e+04,7.21e+04]
4 1 1
0
(7.21e+04,8.01e+04]
1

percentages:
salario_inic2
(8.93e+03,1.69e+04] (1.69e+04,2.48e+04] (2.48e+04,3.27e+04]
(3.27e+04,4.05e+04]
73.17 13.90 8.29
2.93
(4.05e+04,4.84e+04] (4.84e+04,5.63e+04] (5.63e+04,6.42e+04]
(6.42e+04,7.21e+04]
0.98 0.24 0.24
0.00
(7.21e+04,8.01e+04]
0.24
Substituímos breaks= 9 por breaks = c(8.93e+03, 1.69e+04, 2.48e+04,
3.27e+04, 4.05e+04, 4.84e+04, 5.63e+04, 6.42e+04, 7.21e+04, 8.01e+04)
percent

10000 20000 30000 40000 50000 60000 70000 80000

salario_inic

Verificámos desta forma que no intervalo dos 10000 aos 10750 euros há um
grande número de pessoas a receber inicialmente esses valores da empresa,
notamos também que dos 10750 aos 50000 euros há um numero reduzido de
pessoas a receber isso logo como salario inicial e que dos 50000 aos 80000
euros são irreconhecidos resultados, ou seja, ninguém ou quase ninguém
recebe esses valores como ordenado inicial.
c) > empresa$Aumento <- with(empresa, salario_atual -
salario_inic)

d) > empresa <- within(empresa, {


+ exp_relevante <- Recode(experiencia, "lo:60=\"-60 meses
de exp\"; 60:hi=\"+60 meses de exp\"",
+ as.factor = TRUE)
+ })
e) > empresa$categoria <- with(empresa, factor(categoria, levels
= c("Chefe de secção",
+ "Diretor", "Administrativo")))

> local({
+ .Table <- with(empresa, table(categoria))
+ cat("\ncounts:\n")
+ print(.Table)
+ cat("\npercentages:\n")
+ print(round(100 * .Table/sum(.Table), 2))
+ })

counts:
categoria
Chefe de secção Diretor Administrativo
25 70 315

percentages:
categoria
Chefe de secção Diretor Administrativo
6.10 17.07 76.83

f)

120000 29

32
100000

18
343
103
34
106
salario_atual

274
80000

71
35
60000
40000
20000

Quanto a localização a mediana, a “ caixa”, está situada antes do meio do


diagrama o que significa que a maior parte dos resultados estão situados entre
o inicio e o meio do diagrama e também que há muitos valores baixos. O maior
outlier verificado é o 343, representa o trabalhador 343 que é uma pessoa do
sexo masculino tem o cargo de diretor e estudou durante 16 anos.

g)
h)
20000 40000 60000 80000

f m
140000

120000

100000
salario_atual

80000

60000

40000

20000

20000 40000 60000 80000

salario_inic
Os homens têm uma melhor progressão salarial no trabalho que as
mulheres, como podemos verificar no gráfico.
i) > RegModel.1 <- lm(salario_atual ~ salario_inic, data =
empresa)

> summary(RegModel.1)

Call:
lm(formula = salario_atual ~ salario_inic, data = empresa)

Residuals:
Min 1Q Median 3Q Max
-34911 -4138 -1022 2626 49366

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 2338.32461 957.15528 2.443 0.015 *
salario_inic 1.89186 0.05163 36.641 <2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' '
1

Residual standard error: 8166 on 408 degrees of freedom


Multiple R-squared: 0.7669, Adjusted R-squared: 0.7664
F-statistic: 1343 on 1 and 408 DF, p-value: < 2.2e-16

Y^=beta^0+beta^1x
Y^=2338.32461+1.89x
j) Coeficiente determinação é o multiple R-square que tem um valor de
0.7669, ou seja, tem um valor forte.
k) Y^=2338.32461+1.89*27000=53368.32 €, terá um salario inicial de
53368.32 euros por mês.

EXPLANATORY- EQUIVALE AO X
RESPONSE- EQUIVALE AO Y

Você também pode gostar