Técnicas de Amostragem - Atividade Computacional

Departamanto de Estatística e Matemática Aplicada - UFC

Author

Romulo Barros de Freitas

library(TeachingSampling)
library(tidyverse)
library(e1071)
library(fitdistrplus)

1 Base de Dados Lucy

Este conjunto de dados corresponde a uma amostra aleatória do BigLucy. Ele contém algumas variáveis financeiras de 2396 empresas industriais de uma cidade em um determinado ano fiscal.

As variáveis são:

  • ID: O identificador da empresa. Corresponde a uma sequência alfanumérica (duas letras e três dígitos).

  • Ubication (Localização): O endereço do escritório principal da empresa na cidade.

  • Level (Nível): As empresas industriais são discriminadas de acordo com os impostos declarados. Existem empresas pequenas, médias e grandes.

  • Zone (Zona): A cidade é dividida em zonas geográficas. Uma empresa é classificada em uma zona específica de acordo com seu endereço.

  • Income (Renda): O montante total dos ganhos (ou lucros) de uma empresa no ano fiscal anterior. É calculado levando em consideração as receitas e ajustando os custos operacionais.

  • Employees (Funcionários): O número total de pessoas trabalhando para a empresa no ano fiscal anterior.

  • Taxes (Impostos): O montante total do Imposto de Renda de uma empresa.

  • SPAM: Indica se a empresa utiliza as opções de Internet e WEBmail para fazer autopropaganda.

A tabela 1 apresenta os 15 primeiros registros da base de dados:

data("Lucy")
attach(Lucy)
df = as.data.frame(Lucy)
head(df, 15) |> knitr::kable(caption = "15 primeiros registros do 
                             dataset Lucy")
15 primeiros registros do dataset Lucy
ID Ubication Level Zone Income Employees Taxes SPAM
AB001 c1k1 Small A 281 41 3.0 no
AB002 c1k2 Small A 329 19 4.0 yes
AB003 c1k3 Small A 405 68 7.0 no
AB004 c1k4 Small A 360 89 5.0 no
AB005 c1k5 Small A 391 91 7.0 yes
AB006 c1k6 Small A 296 89 3.0 no
AB007 c1k7 Small A 490 22 10.5 yes
AB008 c1k8 Small A 473 57 10.0 yes
AB009 c1k9 Small A 350 84 5.0 yes
AB010 c1k10 Small A 361 25 5.0 no
AB011 c1k11 Small A 374 34 6.0 yes
AB012 c1k12 Small A 419 20 7.0 no
AB013 c1k13 Small A 402 19 7.0 yes
AB014 c1k14 Small A 330 23 4.0 yes
AB015 c1k15 Small A 411 36 7.0 no

A análise será focada nas variáveis Level (Nível), Zone (Zona), Income (Renda) e SPAM. Inicialmente, será realizada uma análise exploratória das variáveis selecionadas, em seguida será realizada uma amostragem Bernoulli e tentaremos estimar a renda total da população. Por último, irei sujerir uma estratégia amostral a partir da análise realizada inicialmente.

1.1 1. Análise Descritiva

Dentre as variáveis selecionadas apenas a variável Income (Renda) é uma variável quantitativa (contínua), as variável Level (Nível) é qualitativa ordinal uma vez que ela possui uma ordenação hierárquica (Small, Medium e Big), a variável Zone (Zona) é qualitativa e apresenta cinco categorias (A, B, C, D e E), já a variável e SPAM é qualitativa de característica dicotômica, uma vez que apresenta dois possíveis valores, sendo eles yes ou no.

Para possíveis planos amostrais é importante considerar a quantidade de empresas localizadas em cada uma das cinco zonas (A, B, C, D e E). Das 2396 empresas, 307 estão localizadas na Zona A, 727 estão na Zona B, 974 estão na Zona C, 223 estão na Zona D e 165 estão localizadas na Zona E.

df |> 
  ggplot(aes(x = Zone)) +
  geom_bar(fill = "lightblue3") +
  geom_text(stat = 'count', aes(label = ..count..), vjust = -0.5) +
  labs(x = "Zona", y = "") +
  theme_minimal() +
  theme(panel.grid.major = element_blank(), 
        panel.grid.minor = element_blank()) +
  coord_cartesian(ylim = c(0, 1000))

Ademais, quando analisamos a quantidade de empresas divididas pelos seus níveis de tamanho, observamos que das 2396 empresas, 1576 são classificadas como pequenas, 737 são classificadas como médias e 83 empresas são consideradas grandes.

df |> 
  count(Zone) |> 
  ggplot(aes(2, n, fill = Zone)) +
  geom_col() +
  geom_text(aes(label = paste0(round((n/sum(n))*100, 1), "%")), 
            position = position_stack(vjust = 0.5),
            color = "black", size = 3) +
  scale_fill_manual(values = c("coral1", "darkseagreen3", "lightblue3",
                                "lightgoldenrod1", "darkgray")) +
  coord_polar("y") + 
  xlim(c(0.2, 3)) + 
  theme_minimal() +
  theme(panel.grid.major = element_blank(), 
        panel.grid.minor = element_blank()) +
  labs(title = "Porcentagem de Empresas por Zonas")

df |> 
  ggplot(aes(x = Level)) +
  geom_bar(fill = "lightblue3") +
  geom_text(stat = 'count', aes(label = ..count..), vjust = -0.5) +
  labs(x = "Nível", y = "") +
  theme_minimal() +
  theme(panel.grid.major = element_blank(), 
        panel.grid.minor = element_blank()) +
  coord_cartesian(ylim = c(0, 1600))

  • Das 307 empresas presentes na zona A, 97 delas são classificadas como pequenas, 180 como médias e 30 são classificadas como grandes.

  • Das 727 empresas presentes na zona B, 593 delas são classificadas como pequenas, 121 como médias e 13 são classificadas como grandes.

  • Das 974 empresas presentes na zona C, 862 delas são classificadas como pequenas, 111 como médias e apenas 1 é classificada como grande.

  • Das 223 empresas presentes na zona D, 20 delas são classificadas como pequenas, 187 como médias e 6 são classificadas como grandes.

  • Das 165 empresas presentes na zona E, 4 delas são classificadas como pequenas, 138 como médias e 23 são classificadas como grandes.

df |> count(Level) |> ggplot(aes(2, n, fill = Level)) + 
  geom_col() + 
  labs(x = '', 
       y = '', 
       fill = 'Nível') +
  scale_fill_manual(values = c("coral1", "darkseagreen3", "lightblue3")) +
  coord_polar("y") + 
  xlim(c(0.2, 3)) + 
  geom_col() +
  geom_text(aes(label = paste0(round((n/sum(n))*100, 1), "%")), 
            position = position_stack(vjust = 0.5),
            color = "black", size = 3) +
  theme_minimal() +
  theme(panel.grid.major = element_blank(), 
        panel.grid.minor = element_blank()) +
  labs(title = "Porcentagem de Empresas por Nível")

df |> 
  ggplot(aes(y = fct_rev(fct_infreq(Zone)), fill = Level)) +
  geom_bar(width = .8) +
  labs(x = '', 
       y = '', 
       fill = 'Nível') +
  scale_fill_manual(values = c("coral1", "darkseagreen3", "lightblue3")) +
  geom_text(aes(label = after_stat(count)),
            stat = 'count',
            position = position_stack(vjust = 0.25),
            size = 3) +
  theme_minimal() +
  theme(panel.grid.major = element_blank(), 
        panel.grid.minor = element_blank()) +
  coord_cartesian(xlim = c(0, 1000))

1.2 SPAM

A variável SPAM nos dá uma ideia de quantas empresas do dataset Lucy investiram em algum tipo de propaganda na internet ou webmail para se autopromoverem. Observamos que, das 2396 empresas, 1459 investiram e 937 não investiram.

df |> 
  ggplot(aes(x = SPAM)) +
  geom_bar(fill = "lightblue3") +
  geom_text(stat = 'count', aes(label = ..count..), vjust = -0.5) +
  labs(x = "SPAM", y = "") +
  theme_minimal() +
  theme(panel.grid.major = element_blank(), 
        panel.grid.minor = element_blank()) +
  coord_cartesian(ylim = c(0, 1500))

A seguir, estão as principais medidas descritivas da variável Renda. Obervamos uma renda média nessa amostra de 432,0605 com um desvio padrão de 266,9792 e um coeficiente de varição de 61,79%.

df |> 
  summarise(
    Mean = mean(Income),
    "1st Qu." = quantile(Income, probs = 0.25),
    Median = median(Income),
    "3st Qu." = quantile(Income, probs = 0.75),
    Desv.pd = sd(Income),
    Min = min(Income),
    Max = max(Income),
    Kurt = kurtosis(Income),
    Skew = skewness(Income),
    CV = sprintf("%.2f%%", (sd(Income)/mean(Income))*100)
  ) |> knitr::kable(caption = "Medidas descritivas da variável 
                    Income (Renda)", digits = 4)
Medidas descritivas da variável Income (Renda)
Mean 1st Qu. Median 3st Qu. Desv.pd Min Max Kurt Skew CV
432.0605 230 390 576 266.9792 1 2510 3.7451 1.3834 61.79%

A variável Income pode ser modelada por meio de uma distribuição Gamma de parâmetros 2,570683886 (escala) e 0,005949936 (forma):

library(fitdistrplus)
fitgamma = df$Income |> fitdist("gamma", method = "mle");fitgamma
Fitting of the distribution ' gamma ' by maximum likelihood 
Parameters:
         estimate   Std. Error
shape 2.570683886 0.0644231357
rate  0.005949936 0.0001598176
df |> 
  ggplot(aes(x = Income)) +
  geom_histogram(width = .25, fill = "lightblue3", 
                 na.rm = TRUE, aes(y = after_stat(density))) +
  stat_function(fun=dgamma, 
                args=list(shape = 2.570683886, 
                          rate = 0.005949936), 
                colour="red") +
  labs(x = "Renda", y = "") +
  theme_minimal() +
  theme(
    panel.grid.major = element_blank(), 
    panel.grid.minor = element_blank())

Quando analisamos a distribuição dos dados da variável renda, notamos uma assimetria à direita, o que é comprovado pela medida de assimetria calculada 1,3834.

Entretanto, isso possui limitações para nossa análise, uma vez que não é possível ter uma ideia segmentada por zonas ou níveis de empresas. Consequantemente, analisar apenas a variável renda isoladamente pode trazer resultados desbalanceados e ineficientes, uma vez que ela por sí só não capta a variação de categorias existentes na amostra do dataset Lucy.

Dessa maneira, será realizada uma análise exploratória levando em consideração as outras variáveis selecionadas, para assim, termos uma ideia de como se comporta a renda quando levamos em consideração os tamanhos das empresas e as zonas que elas estão localizadas.

1.3 Renda por Nível da empresa

df |> filter(Level == "Small") |> 
  summarise(Mean = mean(Income),
    "1st Qu." = quantile(Income, probs = 0.25),
    Median = median(Income),
    "3st Qu." = quantile(Income, probs = 0.75),
    Desv.pd = sd(Income),
    Min = min(Income),
    Max = max(Income),
    Kurt = kurtosis(Income),
    Skew = skewness(Income),
    CV = sprintf("%.2f%%", (sd(Income)/mean(Income))*100)) |> 
  knitr::kable(caption = 'Medidas descritivas da variável Income (Renda)
               das empresas pequenas',
               digits = 4)
Medidas descritivas da variável Income (Renda) das empresas pequenas
Mean 1st Qu. Median 3st Qu. Desv.pd Min Max Kurt Skew CV
281.8274 181 280 385 123.053 1 499 -1.0817 -0.0104 43.66%
df |> filter(Level == "Medium") |> 
  summarise(Mean = mean(Income),
    "1st Qu." = quantile(Income, probs = 0.25),
    Median = median(Income),
    "3st Qu." = quantile(Income, probs = 0.75),
    Desv.pd = sd(Income),
    Min = min(Income),
    Max = max(Income),
    Kurt = kurtosis(Income),
    Skew = skewness(Income),
    CV = sprintf("%.2f%%", (sd(Income)/mean(Income))*100)) |> 
  knitr::kable(caption = 'Medidas descritivas da variável Income (Renda)
               das empresas médias',
               digits = 4)
Medidas descritivas da variável Income (Renda) das empresas médias
Mean 1st Qu. Median 3st Qu. Desv.pd Min Max Kurt Skew CV
661.2632 560 630 740 126.8144 500 999 -0.2083 0.8421 19.18%
df |> filter(Level == "Big") |> 
  summarise(Mean = mean(Income),
    "1st Qu." = quantile(Income, probs = 0.25),
    Median = median(Income),
    "3st Qu." = quantile(Income, probs = 0.75),
    Desv.pd = sd(Income),
    Min = min(Income),
    Max = max(Income),
    Kurt = kurtosis(Income),
    Skew = skewness(Income),
    CV = sprintf("%.2f%%", (sd(Income)/mean(Income))*100)) |> 
  knitr::kable(caption = 'Medidas descritivas da variável Income (Renda)
               das empresas grandes',
               digits = 4)
Medidas descritivas da variável Income (Renda) das empresas grandes
Mean 1st Qu. Median 3st Qu. Desv.pd Min Max Kurt Skew CV
1249.47 1078.5 1153 1393 253.7679 1003 2510 5.8536 1.9469 20.31%
df |> ggplot(aes(Level, Income)) + 
  stat_boxplot(geom = 'errorbar', na.rm = T, width = .25) + 
  geom_boxplot(na.rm = T) +
  theme_test()

Quando comparamos a renda das empresas entre as categorias Small, Medium e Big, observamos que renda médias das empresas pequenas é de 281,8274, das empresas médias é de 661,2632 e das empresas grandes é de 1249,47. Ou seja, a renda das empresas consideradas grandes é mais que o dobro das empresas médias e quatro vezes maior do que das empresas pequenas. Além disso, um coeficiente de variação (CV) de 43,66% das empresas pequenas, contra 19,18% das empresas médias e 20,31% das empresas grandes indica uma maior variação na renda das empresas pequenas. Por meio do boxplot acima é possível perceber visualmente a disperção da renda por nível da empresa. A categoria Big é a única que possui outliers.

Iremos, agora, fazer uma análise de como se comporta a renda quando comparamos em relação à variável Zone

1.4 Renda por Zona

df |> filter(Zone == "A") |> 
  summarise(Mean = mean(Income),
    "1st Qu." = quantile(Income, probs = 0.25),
    Median = median(Income),
    "3st Qu." = quantile(Income, probs = 0.75),
    Desv.pd = sd(Income),
    Min = min(Income),
    Max = max(Income),
    Kurt = kurtosis(Income),
    Skew = skewness(Income),
    CV = sprintf("%.2f%%", (sd(Income)/mean(Income))*100)) |> 
  knitr::kable(caption = 'Medidas descritivas da variável Income (Renda)
               das empresas da zona A')
Medidas descritivas da variável Income (Renda) das empresas da zona A
Mean 1st Qu. Median 3st Qu. Desv.pd Min Max Kurt Skew CV
652.2834 450 610 768.5 281.4491 210 2510 6.244997 1.717336 43.15%
df |> filter(Zone == "B") |> 
  summarise(Mean = mean(Income),
    "1st Qu." = quantile(Income, probs = 0.25),
    Median = median(Income),
    "3st Qu." = quantile(Income, probs = 0.75),
    Desv.pd = sd(Income),
    Min = min(Income),
    Max = max(Income),
    Kurt = kurtosis(Income),
    Skew = skewness(Income),
    CV = sprintf("%.2f%%", (sd(Income)/mean(Income))*100)) |> 
  knitr::kable(caption = 'Medidas descritivas da variável Income (Renda)
               das empresas da zona B')
Medidas descritivas da variável Income (Renda) das empresas da zona B
Mean 1st Qu. Median 3st Qu. Desv.pd Min Max Kurt Skew CV
320.7469 188 262 338.5 227.2832 1 1616 5.150401 1.986357 70.86%
df |> filter(Zone == "C") |> 
  summarise(Mean = mean(Income),
    "1st Qu." = quantile(Income, probs = 0.25),
    Median = median(Income),
    "3st Qu." = quantile(Income, probs = 0.75),
    Desv.pd = sd(Income),
    Min = min(Income),
    Max = max(Income),
    Kurt = kurtosis(Income),
    Skew = skewness(Income),
    CV = sprintf("%.2f%%", (sd(Income)/mean(Income))*100)) |> 
  knitr::kable(caption = 'Medidas descritivas da variável Income (Renda)
               das empresas da zona C')
Medidas descritivas da variável Income (Renda) das empresas da zona C
Mean 1st Qu. Median 3st Qu. Desv.pd Min Max Kurt Skew CV
331.0195 189.25 362.5 450 153.5773 20 1360 1.030268 0.2515107 46.40%
df |> filter(Zone == "D") |> 
  summarise(Mean = mean(Income),
    "1st Qu." = quantile(Income, probs = 0.25),
    Median = median(Income),
    "3st Qu." = quantile(Income, probs = 0.75),
    Desv.pd = sd(Income),
    Min = min(Income),
    Max = max(Income),
    Kurt = kurtosis(Income),
    Skew = skewness(Income),
    CV = sprintf("%.2f%%", (sd(Income)/mean(Income))*100)) |> 
  knitr::kable(caption = 'Medidas descritivas da variável Income (Renda)
               das empresas da zona D')
Medidas descritivas da variável Income (Renda) das empresas da zona D
Mean 1st Qu. Median 3st Qu. Desv.pd Min Max Kurt Skew CV
684.9821 560 630 740 209.2692 370 1911 7.673263 2.350456 30.55%
df |> filter(Zone == "E") |> 
  summarise(Mean = mean(Income),
    "1st Qu." = quantile(Income, probs = 0.25),
    Median = median(Income),
    "3st Qu." = quantile(Income, probs = 0.75),
    Desv.pd = sd(Income),
    Min = min(Income),
    Max = max(Income),
    Kurt = kurtosis(Income),
    Skew = skewness(Income),
    CV = sprintf("%.2f%%", (sd(Income)/mean(Income))*100)) |> 
  knitr::kable(caption = 'Medidas descritivas da variável Income (Renda)
               das empresas da zona E')
Medidas descritivas da variável Income (Renda) das empresas da zona E
Mean 1st Qu. Median 3st Qu. Desv.pd Min Max Kurt Skew CV
767.3879 594 705 864 242.41 470 1860 3.478582 1.689386 31.59%
df |> ggplot(aes(Zone, Income)) + 
  stat_boxplot(geom = 'errorbar', na.rm = T, width = .25) + 
  geom_boxplot(na.rm = T) +
  theme_test()

As zonas A e E são as que possuem a maior quantidade de empresas consideradas grandes, 30 e 23 respectivamente. Ou seja, juntas, essas duas zonas possuem 66,25% do total de empresas grandes. Consequentemente, elas possuem as maiores rendas médias, a zona A possui uma renda média de 652,2834 e a zona E possui uma renda média de 767,3879.

Por outro lado, as zonas que possuem as menores rendas médias são a zonas B e C, respectivamente. A zona B possui uma renda média de 320,7469 e a zona C possui uma renda média de 331,0195. O fato da zona C ter apenas uma empresa considerada grande, mas uma renda média maior do que a zona B que possui 13 é explicada pelo coeficiente de variação, a zona B possui uma variação maior da renda em relação à zona C.

Além disso, graficamente, é possível visualizar através do boxplot que todas as zonas possuem valores discrepantes, entretanto a zona B chama a atenção por possuir uma quantidade maior do que as outras zonas. Isso é evidenciado pelo seu coeficiente de variação de 70,86%, valor bem mais alto do que as demais.

1.5 Renda por SPAM

df |> ggplot(aes(SPAM, Income)) + 
  stat_boxplot(geom = 'errorbar', na.rm = T, width = .25) + 
  geom_boxplot(na.rm = T) +
  theme_test()

# renda por empresas que se autopromoveram

df |> filter(SPAM == "yes") |> 
  summarise(Mean = mean(Income),
    "1st Qu." = quantile(Income, probs = 0.25),
    Median = median(Income),
    "3st Qu." = quantile(Income, probs = 0.75),
    Desv.pd = sd(Income),
    Min = min(Income),
    Max = max(Income),
    Kurt = kurtosis(Income),
    Skew = skewness(Income),
    CV = sprintf("%.2f%%", (sd(Income)/mean(Income))*100)) |> 
  knitr::kable(caption = 'Medidas descritivas da variável Income (Renda)
               das empresas que se automproveram na internet')
Medidas descritivas da variável Income (Renda) das empresas que se automproveram na internet
Mean 1st Qu. Median 3st Qu. Desv.pd Min Max Kurt Skew CV
436.782 233.5 389 578.5 275.8525 1 2510 4.390324 1.499564 63.16%
df |> filter(SPAM == "no") |> 
  summarise(Mean = mean(Income),
    "1st Qu." = quantile(Income, probs = 0.25),
    Median = median(Income),
    "3st Qu." = quantile(Income, probs = 0.75),
    Desv.pd = sd(Income),
    Min = min(Income),
    Max = max(Income),
    Kurt = kurtosis(Income),
    Skew = skewness(Income),
    CV = sprintf("%.2f%%", (sd(Income)/mean(Income))*100)) |> 
  knitr::kable(caption = 'Medidas descritivas da variável Income (Renda)
               das empresas que não se autopromoveram na internet')
Medidas descritivas da variável Income (Renda) das empresas que não se autopromoveram na internet
Mean 1st Qu. Median 3st Qu. Desv.pd Min Max Kurt Skew CV
424.7086 229 392 570 252.5118 1 1620 2.057913 1.120004 59.46%

Não há grande diferença na renda média das empresas que se autopromoveram e das empresas que não se autopromoveram com propagandas na internet. Além disso, as outras medidas descritivas são bem próximas.

2 2. Amostragem Bernoulli

Sobre uma amostragem Bernoulli, temos que o estimador de Horvitz-Thompsom (\(\pi\)-estimador) para o total populacional é dado pela seguinte expressão:

\[ \hat{t}_\pi = \frac{1}{\pi}\sum_{k \in s}y_k, \] onde \(\pi, \pi \in [0,1]\) é a probabilidade de inclusão de primeira ordem, e \(y_k\) é observação que foi selecionada por meio do algoritmo de seleção. Além disso, temos que a variância estimada do (\(\pi\)-estimador) é dada por:

\[ \hat{V}(\hat{t}_\pi) = \frac{1}{\pi} \left( \frac{1}{\pi} - 1\right)\sum_{k \in s}y_k^{2}. \]

Agora, iremos fixar \(\pi=0,2\) e estimar o total da variável Income (Renda) e sua variância estimada. Primeiramente, utilizaremos a semente 13032024, em seguida, por meio da função S.BE() do pacote TeachingSampling, fixamos a probabilidade de inclusão de primeira ordem \(\pi = 0.2\) e selecionamos uma amostra a partir da nossa população. Após esses passos, obtivemos uma amostra de tamanho 455 do dataset Lucy. A função E.BE(), também do pacote TeachingSampling nos retorna na coluna y o valor estimado para o \(\pi\)-estimador, o erro padrão estimado e o coeficiente de variação estimado.

set.seed(13032024)
pi = 0.2
N = dim(df)[1] # tamanho da amostra do dataset Lucy
amostra = S.BE(N, pi) # amostra bernoulli selecionada
amostra = amostra[amostra != 0]
df_be = Lucy[amostra,] 
E.BE((Lucy[amostra,]$Income), pi) |> knitr::kable(digits = 4)
N y
Estimation 2275.0000 975810.0000
Standard Error 95.3939 48132.7772
CVE 4.1931 4.9326
DEFF Inf 3.5976

Calculando manualmente, o estimador de Horvitz-Thompson (\(\pi\)-estimador) e sua respectiva variância estimada, temos os seguintes resultados:

# estimador de horvitz-thompsom para a variavel Income(Renda)
HT = (1/pi)*sum(df_be$Income);HT 
[1] 975810
# variancia estimada do estimador de horvitz-thompsom
V_est_HT = (1/pi)*((1/pi)-1)*sum((df_be$Income)^2);V_est_HT
[1] 2316764240

3 3. Tamanho Amostral Esperado

O tamanho amostral em uma amostragem Bernoulli é uma variável aleatória com distribuição Binomial de parâmetros \(N\) e \(\pi\). Portanto, o tamanho amostral esperado é:

\[ E[n(s)] = N\pi \]

N*pi
[1] 479.2

O tamanho amostral obtido no item anterior foi de \(n = 455\), já o tamanho amostral esperado foi de 479,2. Dado que o valor esperado leva em consideração todas as possíveis amostras, o que na prática é quase impossível, os valores do tamanho amostral esperado e do tamanho amostral observado são próximos.

4 4. Amostragem Bernoulli

Agora, iremos realizar uma amostragem Bernoulli considerando cada categoria da variável Level (Big, Medium e Small) como sendo uma população diferente. Para a categorias Big utilizaremos \(\pi = 0,2\), para a categoria Medium utilizaremos \(\pi = 0,30\) e para a categoria Small utilizaremos \(\pi = 0,25\). Em cada caso, será calculado o \(\pi\)-estimador e sua respectiva variância estimada.

4.1 Variável Level - Categoria Big

set.seed(13032024)
dfBig = df |> filter(Level == "Big")
pi_B = 0.20
NBig = dim(dfBig)[1]
amostra_B = S.BE(NBig, pi_B)
amostraBE = amostra_B[amostra_B != 0]
dfBBE = dfBig[amostraBE,]
E.BE((dfBBE$Income), pi_B) |> knitr::kable(digits = 4)
N y
Estimation 60.0000 79560.0000
Standard Error 15.4919 20944.7760
CVE 25.8199 26.3258
DEFF Inf 24.0832

Calculando manualmente, o estimador de Horvitz-Thompson (\(\pi\)-estimador) e sua respectiva variância estimada da categoria Big obtivemos os seguintes resultados:

# estimador de horvitz-thompsom para a variavel Income(Renda)
HT_Big = (1/pi_B)*sum(dfBBE$Income);HT_Big
[1] 79560
# variancia estimada do estimador de horvitz-thompsom
V_est_HT_Big = (1/pi_B)*((1/pi_B)-1)*sum((dfBBE$Income)^2);V_est_HT_Big
[1] 438683640

4.2 Variável Level - Categoria Medium

set.seed(13032024)
dfMedium = df |> filter(Level == "Medium")
pi_M = 0.30
NMedium = dim(dfMedium)[1]
amostra_M = S.BE(NMedium, pi_M)
amostraMBE = amostra_M[amostra_M != 0]
dfMBE = dfMedium[amostraMBE,]
E.BE((dfMBE$Income), pi_M) |> knitr::kable(digits = 4)
N y
Estimation 713.3333 468633.3333
Standard Error 40.7976 27315.4495
CVE 5.7193 5.8287
DEFF Inf 26.7527

Calculando manualmente, o estimador de Horvitz-Thompson (\(\pi\)-estimador) e sua respectiva variância estimada da categoria Medium obtivemos os seguintes resultados:

# estimador de horvitz-thompsom para a variavel Income(Renda)
HT_Medium = (1/pi_M)*sum(dfMBE$Income);HT_Medium
[1] 468633.3
# variancia estimada do estimador de horvitz-thompsom
V_est_HTMedium = (1/pi_M)*((1/pi_M)-1)*sum((dfMBE$Income)^2);V_est_HTMedium
[1] 746133780

4.3 Variável Level - Categoria Small

set.seed(13032024)
dfSmall = df |> filter(Level == "Small")
pi_S = 0.25
NSmall = dim(dfSmall)[1]
amostra_S = S.BE(NSmall, pi_S)
amostraSBE = amostra_S[amostra_S != 0]
dfSBE = dfSmall[amostraSBE,]
E.BE((dfSBE$Income), pi_S) |> knitr::kable(digits = 4)
N y
Estimation 1544.0000 432668.0000
Standard Error 68.0588 20809.5060
CVE 4.4080 4.8096
DEFF Inf 6.2324

Calculando manualmente, o estimador de Horvitz-Thompson (\(\pi\)-estimador) e sua respectiva variância estimada da categoria Small obtivemos os seguintes resultados:

# estimador de horvitz-thompsom para a variavel Income(Renda)
HT_Small = (1/pi_S)*sum(dfSBE$Income);HT_Small
[1] 432668
# variancia estimada do estimador de horvitz-thompsom
V_est_HTSmall = (1/pi_S)*((1/pi_S)-1)*sum((dfSBE$Income)^2);V_est_HTSmall
[1] 433035540

5 5. Sujestões para uma Estratégia Amostral

A partir da análise descritiva realizada, é possível perceber as variações de renda, tanto por zonas, quanto por dimensão da empresa. Nesse sentido, uma estratégia amostral eficiente deve levar em consideração esses aspectos. Portanto, uma sujestão seria um desenho amostral estratificado, visto que existem subcategorias dentro da população de interesse.

Assim, dependendo do obejtivo de estudo, os extratos poderiam ser as zonas (A, B, C, D e E) da variável Zone (Zona) ou as dimensões das empresas (Small, Medium e Big) da variável Level (Nível). Consequentemente, seria dado um tratamento particular a cada subgrupo da população, algumas vantagens seriam:

  • Representatividade da amostra selecionada em relação à população de interesse. Ao selecionar uma amostra aleatória simples da população, poderia acontecer de nenhuma empresa grande fosse selecionada, por exemplo.

  • Redução da variância na estimativa. Empresas do mesmo nível possuem rendas próximas, e empresas de nível diferentes possuem rendas distintas. A variância é reduzida porque os estratos são homogêneos internamente, mas heterogêneos entre si.