## Observations: 12,299
## Variables: 17
## $ TaskNumber <chr> "1735", "1742", "1971", "2134", "2251", "2283"...
## $ Summary <chr> "Flag RI on SCM Message Summary screen using m...
## $ Priority <dbl> 1, 1, 2, 5, 10, 1, 5, 5, 6, 5, 2, 1, 3, 1, 1, ...
## $ RaisedByID <chr> "58", "58", "7", "50", "46", "13", "13", "13",...
## $ AssignedToID <chr> "58", "42", "58", "42", "13", "13", "13", "58"...
## $ AuthorisedByID <chr> "6", "6", "6", "6", "6", "58", "6", "6", "6", ...
## $ StatusCode <chr> "FINISHED", "FINISHED", "FINISHED", "FINISHED"...
## $ ProjectCode <chr> "PC2", "PC2", "PC2", "PC2", "PC2", "PC9", "PC2...
## $ ProjectBreakdownCode <chr> "PBC42", "PBC21", "PBC75", "PBC42", "PBC21", "...
## $ Category <chr> "Development", "Development", "Operational", "...
## $ SubCategory <chr> "Enhancement", "Enhancement", "In House Suppor...
## $ HoursEstimate <dbl> 14.00, 7.00, 0.70, 0.70, 3.50, 7.00, 7.00, 7.0...
## $ HoursActual <dbl> 1.75, 7.00, 0.70, 0.70, 3.50, 7.00, 7.00, 7.00...
## $ DeveloperID <chr> "58", "42", "58", "42", "13", "13", "43", "58"...
## $ DeveloperHoursActual <dbl> 1.75, 7.00, 0.70, 0.70, 3.50, 7.00, 7.00, 7.00...
## $ TaskPerformance <dbl> 12.25, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.0...
## $ DeveloperPerformance <dbl> 12.25, 0.00, 0.00, 0.00, 0.00, 0.00, NA, 0.00,...
| Name | Piped data |
| Number of rows | 12299 |
| Number of columns | 4 |
| _______________________ | |
| Column type frequency: | |
| character | 2 |
| numeric | 2 |
| ________________________ | |
| Group variables | None |
Variable type: character
| skim_variable | n_missing | complete_rate | min | max | empty | n_unique | whitespace |
|---|---|---|---|---|---|---|---|
| ProjectCode | 0 | 1 | 3 | 4 | 0 | 20 | 0 |
| TaskNumber | 0 | 1 | 4 | 5 | 0 | 10266 | 0 |
Variable type: numeric
| skim_variable | n_missing | complete_rate | mean | sd | p0 | p25 | p50 | p75 | p100 | hist |
|---|---|---|---|---|---|---|---|---|---|---|
| HoursEstimate | 0 | 1 | 10.15 | 28.84 | 0.01 | 1 | 3 | 7.0 | 910.00 | ▇▁▁▁▁ |
| HoursActual | 0 | 1 | 13.18 | 68.72 | 0.01 | 1 | 3 | 8.5 | 2490.16 | ▇▁▁▁▁ |
Temos 20 projetos, com 12299 estimativas_raw. Não há apenas uma estimativa por tarefa, já que há apenas 10266 valores distintos de TaskNumber.
## # A tibble: 1,384 x 2
## # Groups: TaskNumber [1,384]
## TaskNumber n
## <chr> <int>
## 1 10605 8
## 2 6889 8
## 3 10089 7
## 4 10974 7
## 5 11056 7
## 6 11270 7
## 7 13124 7
## 8 13190 7
## 9 13253 7
## 10 3812 7
## # ... with 1,374 more rows
Para nossa análise, usaremos uma estimativa por task. Caso haja mais de uma usaremos a média das estimativas_raw:
Análise
De primeira não é possível identificar visivelmente nenhum padrão no gráfico, porém há uma grande concentração próximo da origem.
Ao adicionar uma visão logarítmica do gráfico, é possível identificar um padrão de correlação assimétrico positivo, como se os pontos estivessem alinhados sobre uma reta, logo pode-se deduzir que as variáveis estão relacionadas.
Para verificar se duas variáveis são dependentes estatisticamente, pode-se usar a medida de correlação para entender a relação entre as mesmas. Os tipos de correlação conhecidas são: Pearson, Kendall e Spearman.
corrAll <- estimativas %>%
summarise(pearson = cor(HoursEstimate, HoursActual, method = "pearson"),
kendall = cor(HoursEstimate, HoursActual, method = "kendall"),
spearman = cor(HoursEstimate, HoursActual, method = "spearman"))
corrAll
## # A tibble: 1 x 3
## pearson kendall spearman
## <dbl> <dbl> <dbl>
## 1 0.316 0.696 0.826
É possível ver que o coeficiente de Pearson foi bem distante dos outros, isso acontece pois ela considera outliers e que a relação entre as variáveis não é linear, logo ela não retorna um resultado significativo para a análise. Quanto aos demais coeficientes, o coeficiente de Kendall é próximo de 0.7, que entre o intervalo de 0.7 até 0.9, indica que é uma relação forte. O coeficiente de Spearman tem um valor próximo de 0.83, indicando também uma relação forte entre Horas Estimadas e Horas Reais. Levando em conta a empresa como um todo, podemos afirmar que a relação entre as variáveis é forte e positiva.
A seguir, vamos analisar por categorias a relação das Horas Estimadas e Horas Reais.
estManagement <- estimativas %>% filter(Category == "Management")
## # A tibble: 1 x 3
## pearson kendall spearman
## <dbl> <dbl> <dbl>
## 1 0.456 0.635 0.753
estDevelopment <- estimativas %>% filter(Category == "Development")
## # A tibble: 1 x 3
## pearson kendall spearman
## <dbl> <dbl> <dbl>
## 1 0.377 0.700 0.835
estOperational <- estimativas %>% filter(Category == "Operational")
## # A tibble: 1 x 3
## pearson kendall spearman
## <dbl> <dbl> <dbl>
## 1 0.159 0.729 0.842
Nos três cenários acima de cada, podemos observar um comportamente parecido com o do cenário geral, onde a correlação de Pearson é fraca, mas a de Kendall e Spearman é forte, provado assim que em cada categoria existe também relação entre Horas Estimadas e Horas Reais.
Pra isso vamos analisar a variável erro_medio_abs
por_time %>%
ggplot(aes(x = devs, y = erro_medio_abs, size = estimativas, alpha = .8, color = "rosa")) +
geom_point() +
labs(x = "n Desenvolvedores", y = "Erro Médio") +
theme(plot.title = element_text(hjust = 0.5))
corrErr <- por_time %>%
summarise(pearson = cor(devs, erro_medio_abs, method = "pearson"),
kendall = cor(devs, erro_medio_abs, method = "kendall"),
spearman = cor(devs, erro_medio_abs, method = "spearman"))
corrErr
## # A tibble: 1 x 3
## pearson kendall spearman
## <dbl> <dbl> <dbl>
## 1 -0.137 0.0324 0.0438
As três correlações mostram uma fraca relação da variáveis, logo podemos concluir que equipes grandes podem errar tanto quanto equipes pequenas e a quantidade de desenvolvedores não está associada com o erro ser menor ou maior.