dados = read_csv(
here::here("data/participation-per-country.csv"),
col_types = cols(
.default = col_double(),
site = col_character(),
country = col_character(),
geo = col_character(),
four_regions = col_character(),
eight_regions = col_character(),
six_regions = col_character(),
`World bank income group 2017` = col_character()
)
) %>%
filter(usuarios > 200)
glimpse(dados)
## Rows: 121
## Columns: 21
## $ site <chr> "StackOverflow", "StackOverflow", "Stac~
## $ country <chr> "Argentina", "Australia", "Austria", "B~
## $ PDI <dbl> 49, 36, 11, 80, 65, 69, 70, 39, 63, 80,~
## $ IDV <dbl> 46, 90, 55, 20, 75, 38, 30, 80, 23, 20,~
## $ MAS <dbl> 56, 61, 79, 55, 54, 49, 40, 52, 28, 66,~
## $ UAI <dbl> 86, 51, 70, 60, 94, 76, 85, 48, 86, 30,~
## $ usuarios <dbl> 2798, 12313, 2518, 2558, 4275, 10717, 1~
## $ responderam_prop <dbl> 0.5357398, 0.6133355, 0.6310564, 0.3928~
## $ perguntaram_prop <dbl> 0.5210865, 0.5897832, 0.5933280, 0.4757~
## $ editaram_prop <dbl> 0.09256612, 0.14699911, 0.14932486, 0.0~
## $ comentaram_prop <dbl> 0.25339528, 0.33395598, 0.35027800, 0.1~
## $ GNI <dbl> NA, 59570, 48160, 840, 44990, 11630, 68~
## $ Internet <dbl> 51.0, 79.5, 79.8, 5.0, 78.0, 45.0, 51.0~
## $ EPI <dbl> 59.02, NA, 63.21, NA, 61.21, 49.96, NA,~
## $ geo <chr> "arg", "aus", "aut", "bgd", "bel", "bra~
## $ four_regions <chr> "americas", "asia", "europe", "asia", "~
## $ eight_regions <chr> "america_south", "east_asia_pacific", "~
## $ six_regions <chr> "america", "east_asia_pacific", "europe~
## $ Latitude <dbl> -34.00000, -25.00000, 47.33333, 24.0000~
## $ Longitude <dbl> -64.00000, 135.00000, 13.33333, 90.0000~
## $ `World bank income group 2017` <chr> "Upper middle income", "High income", "~
Daqui para baixo são as respostas dos Exercícios
1. Descreva a relação entre EPI (fluência de inglês na população do país) e a taxa de pessoas daquele país que responderam alguma pergunta no StackOverflow.
dados_stack = dados %>%
filter(site == "StackOverflow") %>%
filter(!is.na(EPI)) %>%
filter(!is.na(responderam_prop))
dados_stack %>%
ggplot(aes(x= EPI, y = responderam_prop)) +
geom_point() +
geom_smooth(method="lm")
## `geom_smooth()` using formula 'y ~ x'
cor(dados_stack$EPI, dados_stack$responderam_prop)
## [1] 0.6345309
Existe uma correlação média de 0,63 entre EPI e respoderam para o Stack nessa amostra.
regressao_stack = lm(dados_stack$responderam_prop~dados_stack$EPI)
regressao_stack
##
## Call:
## lm(formula = dados_stack$responderam_prop ~ dados_stack$EPI)
##
## Coefficients:
## (Intercept) dados_stack$EPI
## 0.108082 0.007335
summary(regressao_stack)
##
## Call:
## lm(formula = dados_stack$responderam_prop ~ dados_stack$EPI)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.181903 -0.008037 0.013796 0.037407 0.099443
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.108082 0.071716 1.507 0.138
## dados_stack$EPI 0.007335 0.001303 5.628 9.78e-07 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.06502 on 47 degrees of freedom
## Multiple R-squared: 0.4026, Adjusted R-squared: 0.3899
## F-statistic: 31.68 on 1 and 47 DF, p-value: 9.785e-07
responderam = 0,10 + 0,007 x epi
A cada uma unidade que cresce a fluencia em ingles do país as respostas crescem em 0,7% em média com 1% se significância para o stack overflow
2. Descreva a relação entre as mesmas duas variáveis no SuperUser e compare o comportamento das pessoas de diferentes países nos dois sites comparando os resultados dos dois modelos.
2.1. Descreva a relação entre as mesmas duas variáveis no SuperUser
dados_super_user = dados %>% filter(site == "SuperUser")
dados_super_user = dados_super_user %>% filter(!is.na(EPI)) %>% filter(!is.na(responderam_prop))
dados_super_user %>%
ggplot(aes(x= EPI, y = responderam_prop)) +
geom_point() +
geom_smooth(method = "lm")
## `geom_smooth()` using formula 'y ~ x'
cor(dados_super_user$EPI, dados_super_user$responderam_prop)
## [1] 0.6482049
Existe uma correlação media de 0.64 entre o EPI e as pessoas que responderam para o site Super User
regressao_super_user = lm(dados_super_user$responderam_prop~dados_super_user$EPI)
summary(regressao_super_user)
##
## Call:
## lm(formula = dados_super_user$responderam_prop ~ dados_super_user$EPI)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.075052 -0.026155 -0.004809 0.029849 0.071932
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -0.0236147 0.0538137 -0.439 0.664
## dados_super_user$EPI 0.0047522 0.0009574 4.964 1.91e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.03971 on 34 degrees of freedom
## Multiple R-squared: 0.4202, Adjusted R-squared: 0.4031
## F-statistic: 24.64 on 1 and 34 DF, p-value: 1.914e-05
responderam_super = 0,023 + 0,004 x EPI
Para cara unidade que cresce a fluencia em ingles do país no site super user cresce em media 0,4% da quantidade de pessoas que responderam para o site Super User
2.2 Compare o comportamento das pessoas de diferentes países nos dois sites comparando os resultados dos dois modelos.
Para o StackOverflow o impacto foi de 0,7% com desvio padrão de e para o SuperUser o impacto foi de 0,4%, ambos com 1% de significância
Teste de média da média do EPI
t.test(dados_super_user$EPI, dados_stack$EPI)
##
## Welch Two Sample t-test
##
## data: dados_super_user$EPI and dados_stack$EPI
## t = 0.7827, df = 76.694, p-value = 0.4362
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -1.881590 4.318506
## sample estimates:
## mean of x mean of y
## 55.78111 54.56265
Em média não existem evidências de diferença na média do EPI entre os usuários do stackOverflow e do SuperUser, conforme o Teste T
s <- function(d, i) {
sumarizado = d %>%
slice(i) %>%
summarise(media_epi = mean(EPI))
sumarizado %>%
pull(media_epi)
}
s(dados_super_user, 1:(nrow(dados_super_user))) # theta_chapeu
## [1] 55.78111
booted <- boot(data = dados_super_user,
statistic = s,
R = 2000)
ci_super_user = tidy(booted,
conf.level = .95,
conf.method = "basic",
conf.int = TRUE)
ci_super_user
## # A tibble: 1 x 5
## statistic bias std.error conf.low conf.high
## <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 55.8 0.0122 1.16 53.5 58.0
s <- function(d, i) {
sumarizado = d %>%
slice(i) %>%
summarise(media_epi = mean(EPI))
sumarizado %>%
pull(media_epi)
}
s(dados_stack, 1:(nrow(dados_stack))) # theta_chapeu
## [1] 54.56265
booted <- boot(data = dados_stack,
statistic = s,
R = 2000)
ci_stack = tidy(booted,
conf.level = .95,
conf.method = "basic",
conf.int = TRUE)
ci_stack
## # A tibble: 1 x 5
## statistic bias std.error conf.low conf.high
## <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 54.6 -0.0494 1.04 52.5 56.7
plot_ics = function(d) {
d %>%
ggplot(aes(
ymin = low,
y = mid,
ymax = high,
x = metodo
)) +
geom_linerange() +
geom_point(color = "coral", size = 3) +
scale_y_continuous(limits = c(50, 60)) +
labs(x = "", y = "Média do EPI") +
coord_flip()
}
tribble(
~metodo, ~low, ~mid, ~high,
"StackOverflow", 52.63, 54.56, 56.54,
"SuperUser", 53.54, 55.78, 57.89) %>%
plot_ics()
Analisando o intervalo de confiança em média não existe diferença entre o EPI do site do Super e do Stack.
Analisando o IC da correlação
theta_math <- function(d, i) {
r = d %>%
slice(i) %>%
summarise(r = cor(responderam_prop, EPI, method = "pearson")) %>%
pull(r)
r
}
ci_stack = boot(data = dados_stack,
statistic = theta_math,
R = 2000) %>%
tidy(conf.level = .95,
conf.method = "bca",
conf.int = TRUE)
ci_stack
## # A tibble: 1 x 5
## statistic bias std.error conf.low conf.high
## <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 0.635 0.00258 0.0693 0.472 0.751
ci_stack %>%
ggplot(aes(
ymin = conf.low,
y = statistic,
ymax = conf.high,
x = "Corr. Pearson"
)) +
geom_linerange() +
geom_point(color = "coral", size = 2) +
scale_y_continuous(limits = c(0, 1)) +
labs(x = "", y = "Correlação Stack EPI Responderam") +
coord_flip()
theta_math <- function(d, i) {
r = d %>%
slice(i) %>%
summarise(r = cor(responderam_prop, EPI, method = "pearson")) %>%
pull(r)
r
}
ci_super = boot(data = dados_super_user,
statistic = theta_math,
R = 2000) %>%
tidy(conf.level = .95,
conf.method = "bca",
conf.int = TRUE)
ci_super
## # A tibble: 1 x 5
## statistic bias std.error conf.low conf.high
## <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 0.648 0.000635 0.0689 0.487 0.760
ci_super %>%
ggplot(aes(
ymin = conf.low,
y = statistic,
ymax = conf.high,
x = "Corr. Pearson"
)) +
geom_linerange() +
geom_point(color = "coral", size = 2) +
scale_y_continuous(limits = c(0, 1)) +
labs(x = "", y = "Correlação Stack EPI Responderam") +
coord_flip()
plot_ics = function(d) {
d %>%
ggplot(aes(
ymin = low,
y = mid,
ymax = high,
x = metodo
)) +
geom_linerange() +
geom_point(color = "coral", size = 3) +
scale_y_continuous(limits = c(0, 1)) +
labs(x = "", y = "IC da Correlação") +
coord_flip()
}
tribble(
~metodo, ~low, ~mid, ~high,
"Super Cor EPI Respon", 0.46, 0.63, 0.74,
"Stack Cor EPI Respon", 0.49, 0.64, 0.76) %>%
plot_ics()
Não há diferença entre as correlações deo EPI com o Super e o stack
3. Descreva a relação entre GNI (produto interno bruto per cápita) dos países e a taxa de pessoas daquele país que responderam alguma pergunta no StackOverflow.
dados_stack = dados %>%
filter(site == "StackOverflow") %>%
filter(!is.na(GNI)) %>%
filter(!is.na(responderam_prop))
dados_stack %>%
ggplot(aes(x=GNI, y=responderam_prop)) +
geom_point() +
geom_smooth()
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
cor(dados_stack$GNI, dados_stack$responderam_prop)
## [1] 0.5857416
Existe uma correlação média de 0,58 entre GNI e os que responderam
dados_stack = dados_stack %>%
select(GNI, responderam_prop) %>%
mutate(log10_GNI = log10(GNI))
dados_stack %>%
ggplot(aes(x=log10_GNI, y=responderam_prop)) +
geom_point() +
geom_smooth(method="lm")
## `geom_smooth()` using formula 'y ~ x'
cor(dados_stack$log10_GNI, dados_stack$responderam_prop)
## [1] 0.6803346
Existe uma correlação média de 0,68 do log de GNI com a quantidade de pessoas que responderam
regressao_GNI_stack = lm(dados_stack$responderam_prop~dados_stack$log10_GNI)
summary(regressao_GNI_stack)
##
## Call:
## lm(formula = dados_stack$responderam_prop ~ dados_stack$log10_GNI)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.224533 -0.032858 0.007685 0.044357 0.118479
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.04747 0.06388 0.743 0.46
## dados_stack$log10_GNI 0.11401 0.01535 7.426 3.31e-10 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.06233 on 64 degrees of freedom
## Multiple R-squared: 0.4629, Adjusted R-squared: 0.4545
## F-statistic: 55.15 on 1 and 64 DF, p-value: 3.311e-10
responderam = 0,04 + 0,11 x log10_GNI
Para cada uma unidade do log na base 10 do produto interno bruto que é aumentado em 11% a participcão dos respondentes aumentam em média.