O que são os dados

## 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,...

Entendendo os dados

Data summary
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

1 estimativa por task

Para nossa análise, usaremos uma estimativa por task. Caso haja mais de uma usaremos a média das estimativas_raw:

Dados por time

Qual a relação entre as estimativas e horas reais tomadas na empresa como um todo e em diferentes categorias de tarefa?

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.

Equipes com mais desenvolvedores produzem estimativas com mais ou menos erro que equipes menores?

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.