·
Administração ·
Probabilidade e Estatística 1
Send your question to AI and receive an answer instantly
Recommended for you
Preview text
Estatística Multivariada Aluna Enzo Ramalho March 25 2024 Este trabalho visa analisar a performance dos clubes de futebol brasileiros durante a temporada de 2008 a 2017 utilizando uma base de dados que inclui informações detalhadas sobre os clubes que participaram do campeonato brasileiro As variáveis consideradas incluem não apenas o desempenho esportivo dos clubes como vitórias derrotas e empates mas também aspectos financeiros e demográficos como o valor total do elenco a média de idade dos jogadores e a quantidade de jogadores estrangeiros Ao explorar essas dimensões este estudo busca compreender como diferentes fatores podem influenciar o sucesso dos clubes no campeonato oferecendo insights valiosos para gestores esportivos treinadores e analistas do esporte Aqui está uma breve descrição de cada coluna Ano O ano da temporada Pos Posição final do clube na tabela Clubes Nome do clube Vitórias Número de vitórias Derrotas Número de derrotas Empates Número de empates GolsFS Gols feitos e sofridos possivelmente necessitando de tratamento adicional para separar esses valores Saldo Saldo de gols gols feitos menos gols sofridos QtdJogadores Quantidade de jogadores utilizados durante a temporada IdadeMedia Idade média dos jogadores notar que o separador decimal está como vírgula Estrangeiros Número de jogadores estrangeiros no clube Valortotal Valor total do elenco MediaValor Média do valor de mercado dos jogadores Estatística Descritivas Vamos começar lendo o arquivo para entender a estrutura dos dados e suas variáveis import pandas as pd Caminho do arquivo filepath TabelaClubes 2csv Lendo o arquivo CSV com delimitador df pdreadcsvfilepath delimiter Antes de prosseguir vamos converter a coluna IdadeMedia para o tipo float garantindo que possamos realizar operações numéricas com ela Primeiro substituímos a vírgula por ponto para adequar ao padrão decimal dfIdadeMedia dfIdadeMediastrreplace astypefloat Agora vamos realizar uma estatística descritiva básica dos dados descritiva dfdescribe Para os gráficos selecionaremos algumas variáveis chave para explorar visualmente import matplotlibpyplot as plt import seaborn as sns Definindo o estilo dos gráficos snssetstylewhitegrid 1 Preparando a figura para múltiplos gráficos fig axs pltsubplots3 2 figsize15 15 Gráfico de distribuição de Idade Média snshistplotdfIdadeMedia kdeTrue axaxs0 0 colorskyblue axs0 0settitleDistribuição da Idade Média dos Jogadores Gráfico de distribuição de Valor Total do Elenco snshistplotdfValortotal kdeTrue axaxs0 1 colorlightgreen axs0 1settitleDistribuição do Valor Total do Elenco Gráfico de barras da quantidade de vitórias por clube Top 10 topvitorias dfgroupbyClubesVitoriassumsortvaluesascendingFalsehead10 topvitoriasplotkindbar axaxs1 0 colorcoral axs1 0settitleTop 10 Clubes com Mais Vitórias axs1 0tickparamsaxisx rotation45 Gráfico de barras do número de estrangeiros por clube Top 10 topestrangeiros dfgroupbyClubesEstrangeirossumsortvaluesascendingFalsehead10 topestrangeirosplotkindbar axaxs1 1 colorgold axs1 1settitleTop 10 Clubes com Mais Estrangeiros axs1 1tickparamsaxisx rotation45 Gráfico de dispersão entre Idade Média e Valor Total do Elenco snsscatterplotxIdadeMedia yValortotal datadf axaxs2 0 colorpurple axs2 0settitleIdade Média vs Valor Total do Elenco Gráfico de dispersão entre Gols Feitos e Gols Sofridos snsscatterplotxGolsFeitos yGolsSofridos datadf axaxs2 1 colorteal axs2 1settitleGols Feitos vs Gols Sofridos plttightlayout pltshow 2 Distribuição da Idade Média dos Jogadores Distribuição do Valor Total do Elenco Top 10 Clubes com Mais Vitórias Top 10 Clubes com Mais Estrangeiros Idade Média vs Valor Total do Elenco Gols Feitos vs Gols Sofridos descritiva Ano Pos GolsFeitos GolsSofridos count 200000000 200000000 199000000 199000000 mean 2012500000 10500000 47045226 46758794 std 2879489 5780751 10105652 9778461 min 2008000000 1000000 18000000 22000000 25 2010000000 5750000 39000000 40000000 50 2012500000 10500000 48000000 46000000 75 2015000000 15250000 53000000 53000000 max 2017000000 20000000 77000000 75000000 8 rows x 13 columns 6 Valor Total do Elenco vs Posição Final Número de Estrangeiros vs Posição Final Evolução do Desempenho dos Clubes ao Longo dos Anos Vitorias Derrotas Empates Ano Total 9 Análise de Componentes Principais PCA Cada ponto representa um clube posicionado com base nos dois principais componentes derivados da PCA O gráfico acima mostra a dispersão dos clubes com base nos dois principais componentes derivados da PCA Cada ponto representa um clube posicionado de acordo com seus valores nos componentes principais Esta visualização pode ajudar a identificar padrões agrupamentos ou outliers entre os clubes baseandose nas variáveis analisadas A posição dos clubes no gráfico é determinada por suas características em múltiplas dimensões vitórias derrotas empates saldo de gols valor do elenco etc agora condensadas nos dois principais componentes Clubs que estão próximos uns dos outros no gráfico são semelhantes em termos dessas características multi variadas enquanto aqueles que estão mais distantes diferem mais significativamente O Componente Principal 1 no eixo X explica aproximadamente 4518 da variância total nos dados O Componente Principal 2 no eixo Y adiciona mais 1521 totalizando 6039 da variância explicada pelos dois componentes Este gráfico oferece uma visualização clara de como os clubes se distribuem no espaço definido pelos dois principais componentes facilitando a identificação de padrões semelhanças ou diferenças significativas entre os clubes com base em múltiplas variáveis A estatística descritiva nos revela o seguinte sobre os dados analisados Ano Os dados abrangem temporadas de 2008 a 2017 Pos As posições finais variam de 1 a 20 como esperado em uma liga de 20 times Vitórias Em média os clubes obtêm aproximadamente 14 vitórias por temporada com um mínimo de 4 e um máximo de 24 Derrotas As equipes sofrem cerca de 10 derrotas em média com uma variação de 3 a 17 Empates O número de empates é similar ao de vitórias com uma média de quase 14 por temporada Saldo de Gols Varia significativamente entre 57 a 40 com uma média de 0 indicando uma distribuição equilibrada entre as equipes Quantidade de Jogadores O elenco médio possui 43 jogadores com uma variação de 20 a 77 Idade Média A idade média dos jogadores gira em torno de 2399 anos indicando uma preferência por jogadores relativamente jovens Estrangeiros Em média os clubes têm quase 3 jogadores estrangeiros em seus elencos Valor Total do Elenco O valor médio do elenco é de aproximadamente 3925 milhões com uma variação significativa que reflete a disparidade econômica entre os clubes Valor Médio por Jogador Cerca de 912440 variando de 67000 a 2520000 Gols Feitos As equipes marcam em média 47 gols por temporada Gols Sofridos Similarmente sofrem em média quase 47 gols o que mostra um equilíbrio entre ataque e defesa na liga Os gráficos complementam essas informações oferecendo visuais atraentes e diversos que ajudam a entender melhor a distribuição e as relações entre diferentes variáveis Por exemplo podemos observar que não há uma correlação clara entre a idade média do elenco e o valor total do mesmo e a competição parece ser bastante equilibrada em termos de gols feitos e sofridos Vamos agora analisar fatores interessantes para retirarmos bons insights como 1 A relação entre o valor total do elenco e o desempenho na competição Posição final 2 O impacto do número de estrangeiros no sucesso dos clubes 3 A evolução do desempenho dos clubes ao longo dos anos considerando vitórias derrotas e empates Preparando a figura para os gráficos solicitados fig axs pltsubplots3 1 figsize10 15 Gráfico 1 Relação entre o Valor Total do Elenco e o Desempenho na Competição snsscatterplotxValortotal yPos datadf axaxs0 colorblue edgecolorw axs0settitleValor Total do Elenco vs Posição Final axs0setxlabelValor Total do Elenco axs0setylabelPosição Final axs0invertyaxis Inverter o eixo Y para mostrar a melhor posição no topo Gráfico 2 Impacto do Número de Estrangeiros no Sucesso dos Clubes snsboxplotxEstrangeiros yPos datadf axaxs1 palettecoolwarm axs1settitleNúmero de Estrangeiros vs Posição Final axs1setxlabelNúmero de Estrangeiros axs1setylabelPosição Final axs1invertyaxis Inverter o eixo Y para mostrar a melhor posição no topo Gráfico 3 Evolução do Desempenho dos Clubes ao Longo dos Anos Aqui vamos considerar a soma de vitórias derrotas e empates por ano performanceano dfgroupbyAnoVitorias Derrotas Empatessum performanceanoplotaxaxs2 markero axs2settitleEvolução do Desempenho dos Clubes ao Longo dos Anos 4 axs2setxlabelAno axs2setylabelTotal plttightlayout pltshow 5 Aqui estão as análises solicitadas visualmente representadas em gráficos 1 Relação entre o Valor Total do Elenco e o Desempenho na Competição O gráfico de dispersão mostra que não há uma correlação clara e direta entre o valor total do elenco e a posição final na competição Isso sugere que embora o investimento no elenco possa ser importante outros fatores também influenciam o sucesso na competição 2 Impacto do Número de Estrangeiros no Sucesso dos Clubes O boxplot ilustra como a dis tribuição das posições finais varia com o número de jogadores estrangeiros nos clubes Não parece haver uma tendência clara que indique que ter mais jogadores estrangeiros leva a uma melhor ou pior posição final indicando que a qualidade e a integração dos jogadores estrangeiros podem ser mais críticas do que a quantidade 3 Evolução do Desempenho dos Clubes ao Longo dos Anos Este gráfico mostra as somas de vitórias derrotas e empates ao longo dos anos Podemos observar variações nos totais de vitórias derrotas e empates o que reflete mudanças no equilíbrio competitivo da liga ao longo do tempo A dinâmica competitiva parece flutuar o que pode ser influenciado por diversos fatores como mudanças nas regras na qualidade dos times ou em estratégias de jogo Análise multivariada Considerando a natureza dos dadosa PCA pode ajudar a identificar as principais variáveis que contribuem para a variância nos dados o que pode ser útil para entender quais aspectos dos clubes são mais importantes para o seu desempenho PCA from sklearndecomposition import PCA from sklearnpreprocessing import StandardScaler Removendo colunas que não serão utilizadas na PCA pcadata dfdropAno Clubes axis1 Tratando valores ausentes substituindo por a média da coluna pcadatafillnapcadatamean inplaceTrue Padronizando os dados scaler StandardScaler pcadatascaled scalerfittransformpcadata Aplicando PCA pca PCAncomponents2 Reduzindo para 2 componentes principais para facilitar a visualização pcaresult pcafittransformpcadatascaled Transformando o resultado em DataFrame para facilitar a visualização pcadf pdDataFramedatapcaresult columnsPrincipal Component 1 Principal Component 2 Calculando a variância explicada por cada componente explainedvariance pcaexplainedvarianceratio explainedvariance pcadfhead 7 array045184481 015212954 Principal Component 1 Principal Component 2 0 2857197 0001280 1 1378927 0230116 2 2098962 1319616 3 0507124 0066878 4 0538429 0150567 A Análise de Componentes Principais PCA resultou em dois componentes principais que juntos explicam aproximadamente 60 da variância total nos dados 45 pelo primeiro componente e 15 pelo segundo Isso indica que esses dois componentes capturam uma parte significativa da informação contida no conjunto de dados original Aqui estão as primeiras linhas dos dados transformados Principal Component 1 Principal Component 2 2857197 0001280 1378927 0230116 2098962 1319616 0507124 0066878 0538429 0150567 Cada linha representa um clube agora descrito pelos valores nos dois componentes principais em vez das variáveis originais Esses componentes são combinações lineares das variáveis originais ponderadas pela sua importância na explicação da variância nos dados Para visualizar como os clubes se agrupam com base nestes componentes principais podemos plotar um gráfico de dispersão explainedvariancepercent x 100 for x in explainedvariance Criando o gráfico pltfigurefigsize12 8 snsscatterplotxPrincipal Component 1 yPrincipal Component 2 datapcadf alpha07 edgecolorw s100 paletteviridis Adicionando títulos e labels mais informativos plttitleAnálise de Componentes Principais PCA fontsize16 pltxlabelfComponente Principal 1 explainedvariancepercent02f da Variância fontsize14 pltylabelfComponente Principal 2 explainedvariancepercent12f da Variância fontsize14 pltgridTrue Adicionando uma grade para facilitar a visualização Adicionando um pouco de texto para explicar melhor o gráfico pltfigtext05 001 Cada ponto representa um clube posicionado com base nos dois principais componentes derivados da PCA wrapTrue horizontalalignmentcenter fontsize12 pltshow 8 Clubes April 15 2024 1 Introdução A análise do desempenho de clubes de futebol em campeonatos é uma área de interesse constante para gestores esportivos torcedores e analistas Compreender os fatores que influenciam o sucesso ou fracasso de um clube pode fornecer resultados para aprimorar estratégias de gestão recrutamento de jogadores e táticas de jogo Sendo assim o presente trabalho busca explorar um conjunto de dados que contém informações sobre diversos clubes de futebol incluindo suas posições finais em campeonatos estatísticas de vitórias derrotas e empates características demográficas dos jogadores dados financeiros e estatís ticas de desempenho em campo como gols feitos e gols sofridos O objetivo principal desta análise é identificar os principais fatores que contribuem para o desem penho dos clubes em campeonatos de futebol Para isso utilizamos técnicas de análise estatística como regressão linear múltipla análise de componentes principais e análise discriminante para explorar a relação entre as variáveis disponíveis e a posição final dos clubes nos campeonatos Inicialmente foir realizado uma análise exploratoria dos dados identificando suas características e distribuições Em seguida aplicado o modelos de regressão linear múltipla para entender como as diferentes variáveis estão relacionadas à posição final dos clubes Também foi utilizado a seleção de backward para identificar as variáveis mais relevantes para o modelo visando aprimorar sua precisão e interpretabilidade Além disso foir realizado uma análise de componentes principais para reduzir a dimensionalidade dos dados e identificar os principais padrões de variabilidade entre os clubes Por fim foi explorado a análise discriminante para avaliar a capacidade de um modelo em classificar corretamente as posições dos clubes com base em suas características 20 Vamos começar lendo o arquivo para entender a estrutura dos dados e suas variáveis import pandas as pd Caminho do arquivo filepath TabelaClubes 2csv Lendo o arquivo CSV com delimitador df pdreadcsvfilepath delimiter decimal printdf Ano Pos Clubes Vitorias Derrotas Empates Saldo 0 2017 18 AmericaMG 10 10 18 17 1 2017 7 AthleticoPR 16 9 13 17 1 2 2017 6 AtleticoMG 17 8 13 13 3 2017 11 Bahia 12 12 14 2 4 2017 9 Botafogo 13 12 13 8 195 2008 18 Santo Andre 11 8 19 15 196 2008 12 Santos 12 13 13 0 197 2008 3 Sao Paulo 18 11 9 15 198 2008 20 Sport 7 10 21 23 199 2008 13 Vitoria 13 9 16 6 QtdJogadores IdadeMedia Estrangeiros Valortotal MediaValor 0 51 248 0 27350000 536000 1 52 240 3 37650000 724000 2 50 234 6 61350000 1230000 3 48 232 2 34900000 727000 4 45 231 4 25550000 568000 195 43 251 3 6230000 145000 196 33 239 1 27850000 844000 197 30 239 1 46650000 1560000 198 30 250 1 15600000 520000 199 38 241 2 13450000 354000 GolsFeitos GolsSofridos 0 30 47 1 54 37 2 56 43 3 39 41 4 38 46 195 460 610 196 580 580 197 570 420 198 480 710 199 510 570 200 rows x 14 columns 23 Verificar os tipos de dados de todas as colunas no DataFrame printdfdtypes Ano int64 Pos int64 Clubes object Vitorias int64 Derrotas int64 Empates int64 Saldo int64 2 QtdJogadores int64 IdadeMedia float64 Estrangeiros int64 Valortotal int64 MediaValor int64 GolsFeitos object GolsSofridos object dtype object 30 Preencher valores ausentes com zero dfGolsFeitosfillna0 inplaceTrue dfGolsSofridosfillna0 inplaceTrue Remover pontos decimais e converter os dados para inteiros dfGolsFeitos dfGolsFeitosastypestrstrsplitstr0 astypeint dfGolsSofridos dfGolsSofridosastypestrstrsplitstr0 astypeint 31 Agora vamos realizar uma estatística descritiva básica dos dados descritiva dfdescribe Para os gráficos selecionaremos algumas variáveis chave para explorar visualmente import matplotlibpyplot as plt import seaborn as sns Definindo o estilo dos gráficos snssetstylewhitegrid Preparando a figura para múltiplos gráficos fig axs pltsubplots3 2 figsize15 15 Gráfico de distribuição de Idade Média snshistplotdfIdadeMedia kdeTrue axaxs0 0 colorskyblue axs0 0settitleDistribuição da Idade Média dos Jogadores Gráfico de distribuição de Valor Total do Elenco snshistplotdfValortotal kdeTrue axaxs0 1 colorlightgreen axs0 1settitleDistribuição do Valor Total do Elenco Gráfico de barras da quantidade de vitórias por clube Top 10 topvitorias dfgroupbyClubesVitoriassum sortvaluesascendingFalsehead10 topvitoriasplotkindbar axaxs1 0 colorcoral axs1 0settitleTop 10 Clubes com Mais Vitórias axs1 0tickparamsaxisx rotation45 Gráfico de barras do número de estrangeiros por clube Top 10 topestrangeiros dfgroupbyClubesEstrangeirossum sortvaluesascendingFalsehead10 topestrangeirosplotkindbar axaxs1 1 colorgold axs1 1settitleTop 10 Clubes com Mais Estrangeiros axs1 1tickparamsaxisx rotation45 3 Gráfico de dispersão entre Idade Média e Valor Total do Elenco snsscatterplotxIdadeMedia yValortotal datadf axaxs2 0 colorpurple axs2 0settitleIdade Média vs Valor Total do Elenco Gráfico de dispersão entre Gols Feitos e Gols Sofridos snsscatterplotxGolsFeitos yGolsSofridos datadf axaxs2 1 colorteal axs2 1settitleGols Feitos vs Gols Sofridos plttightlayout pltshow descritiva 4 Ano Pos Vitorias Derrotas Empates Saldo count 200000000 200000000 200000000 200000000 200000000 20000000 mean 2012500000 10500000 13855000 10280000 13855000 000000 std 2879489 5780751 3967706 2528551 4187079 1552725 min 2008000000 1000000 4000000 3000000 4000000 5700000 25 2010000000 5750000 11000000 9000000 11000000 900000 50 2012500000 10500000 14000000 10000000 14000000 100000 75 2015000000 15250000 16000000 12000000 17000000 1125000 max 2017000000 20000000 24000000 17000000 28000000 4000000 QtdJogadores Estrangeiros Valortotal MediaValor GolsFeitos count 20000000 200000000 2000000e02 2000000e02 199000000 mean 4323000 2885000 3925280e07 9124400e05 47045226 std 947661 2042704 2523390e07 5625510e05 10105652 min 2000000 0000000 2350000e06 6700000e04 18000000 25 3600000 1000000 1726250e07 3925000e05 39000000 50 4300000 3000000 3505000e07 8410000e05 48000000 75 5000000 4000000 5531250e07 1362500e06 53000000 max 7700000 8000000 1158000e08 2520000e06 77000000 GolsSofridos count 199000000 mean 46758794 std 9778461 min 22000000 25 40000000 50 46000000 75 53000000 max 75000000 Preparando a figura para os gráficos solicitados fig axs pltsubplots3 1 figsize10 15 Gráfico 1 Relação entre o Valor Total do Elenco e o Desempenho na Competição snsscatterplotxValortotal yPos datadf axaxs0 colorblue edgecolorw axs0settitleValor Total do Elenco vs Posição Final axs0setxlabelValor Total do Elenco axs0setylabelPosição Final axs0invertyaxis Inverter o eixo Y para mostrar a melhor posição no topo Gráfico 2 Impacto do Número de Estrangeiros no Sucesso dos Clubes snsboxplotxEstrangeiros yPos datadf axaxs1 palettecoolwarm axs1settitleNúmero de Estrangeiros vs Posição Final axs1setxlabelNúmero de Estrangeiros axs1setylabelPosição Final axs1invertyaxis Inverter o eixo Y para mostrar a melhor posição no topo Gráfico 3 Evolução do Desempenho dos Clubes ao Longo dos Anos Aqui vamos considerar a soma de vitórias derrotas e empates por ano 5 performanceano dfgroupbyAnoVitorias Derrotas Empatessum performanceanoplotaxaxs2 markero axs2settitleEvolução do Desempenho dos Clubes ao Longo dos Anos axs2setxlabelAno axs2setylabelTotal plttightlayout pltshow ipythoninput4339751e4919c10 FutureWarning Passing palette without assigning hue is deprecated and will be removed in v0140 Assign the x variable to hue and set legendFalse for the same effect snsboxplotxEstrangeiros yPos datadf axaxs1 palettecoolwarm 6 Valor Total do Elenco vs Posição Final Posição Final Valor Total do Elenco Número de Estrangeiros vs Posição Final Posição Final Número de Estrangeiros Evolução do Desempenho dos Clubes ao Longo dos Anos Total Ano Vitórias Derrotas Empates 33 from sklearndecomposition import PCA from sklearnpreprocessing import StandardScaler Removendo colunas que não serão utilizadas na PCA pcadata dfdropAno Clubes axis1 Tratando valores ausentes substituindo por a média da coluna pcadatafillnapcadatamean inplaceTrue Padronizando os dados scaler StandardScaler pcadatascaled scalerfittransformpcadata Aplicando PCA pca PCAncomponents2 Reduzindo para 2 componentes principais para facilitar a visualização pcaresult pcafittransformpcadatascaled Transformando o resultado em DataFrame para facilitar a visualização pcadf pdDataFramedatapcaresult columnsPrincipal Component 1 Principal Component 2 Calculando a variância explicada por cada componente explainedvariance pcaexplainedvarianceratio explainedvariance pcadfhead 33 array044351545 015349893 Principal Component 1 Principal Component 2 0 2861116 0123642 1 1331901 0204933 2 2092743 1232547 3 0533431 0220085 4 0537863 0266005 2 Regressão Linear Multipla 35 import pandas as pd import statsmodelsapi as sm Supondo que df é o seu DataFrame com as variáveis fornecidas Selecionando as variáveis independentes e dependentes X dfAno Vitorias Derrotas Empates Saldo QtdJogadores IdadeMedia Estrangeiros Valortotal MediaValor GolsFeitos GolsSofridos y dfPos Adicionando uma constante para o termo de interceptação X smaddconstantX 8 Criando o modelo de regressão model smOLSy X Ajustando o modelo aos dados results modelfit Imprimindo os resultados da regressão printresultssummary OLS Regression Results Dep Variable Pos Rsquared 0930 Model OLS Adj Rsquared 0926 Method Least Squares Fstatistic 2073 Date Mon 15 Apr 2024 Prob Fstatistic 446e101 Time 140636 LogLikelihood 36813 No Observations 200 AIC 7623 Df Residuals 187 BIC 8051 Df Model 12 Covariance Type nonrobust coef std err t Pt 0025 0975 const 1784224 116445 1532 0127 408137 51292 Ano 00760 0050 1532 0127 0022 0174 Vitorias 00538 1181 0046 0964 2383 2275 Derrotas 09858 1182 0834 0405 1345 3317 Empates 13840 1169 1184 0238 0922 3690 Saldo 00546 0040 1373 0171 0024 0133 QtdJogadores 00015 0024 0065 0949 0048 0045 IdadeMedia 02529 0130 1947 0053 0003 0509 Estrangeiros 00035 0069 0050 0960 0133 0140 Valortotal 1979e08 224e08 0883 0378 64e08 244e08 9 MediaValor 3276e07 959e07 0342 0733 156e06 222e06 GolsFeitos 00293 0043 0687 0493 0113 0055 GolsSofridos 00700 0031 2256 0025 0009 0131 Omnibus 4671 DurbinWatson 2063 ProbOmnibus 0097 JarqueBera JB 4468 Skew 0365 ProbJB 0107 Kurtosis 3065 Cond No 487e10 Notes 1 Standard Errors assume that the covariance matrix of the errors is correctly specified 2 The condition number is large 487e10 This might indicate that there are strong multicollinearity or other numerical problems Após realizar o modelo de regressão linear múltipla para entender os fatores que influenciam o desempenho dos clubes no campeonato observamos que o teste F indicando a significância do modelo como um todo apresentou um valor próximo de zero confirmando que pelo menos uma das variáveis independentes tem um efeito significativo na posição do clube No entanto ao analisar individualmente as variáveis independentes por meio do teste T utilizando um nível de significância de 5 notamos que nem todas as variáveis são estatisticamente significantes para explicar a posição dos clubes Para refinar o modelo e identificar as variáveis mais relevantes optamos por implementar a seleção backward um método iterativo que remove gradualmente as variáveis menos significativas do modelo Isso nos permitirá alcançar um modelo mais parcimonioso mantendo apenas as variáveis independentes que realmente contribuem para a explicação da posição no campeonato Ao finalizar o processo de seleção backward teremos um modelo simplificado e interpretável destacando as variáveis mais importantes para o sucesso dos clubes no campeonato 36 Adicione uma coluna constante para representar o termo de interceptação X smaddconstantX Implemente a seleção de backward while True model smOLSy Xfit Verifique as variáveis com o maior valorp pvalues modelpvalues1 Exclua o valorp da constante maxpvalue pvaluesmax if maxpvalue 005 Remova a variável com o maior valorp removeindex pvaluesidxmax X Xdropremoveindex axis1 else break 10 Exiba o modelo final printmodelsummary OLS Regression Results Dep Variable Pos Rsquared 0927 Model OLS Adj Rsquared 0926 Method Least Squares Fstatistic 4963 Date Mon 15 Apr 2024 Prob Fstatistic 190e108 Time 151533 LogLikelihood 37180 No Observations 200 AIC 7556 Df Residuals 194 BIC 7754 Df Model 5 Covariance Type nonrobust coef std err t Pt 0025 0975 const 262602 3095 8485 0000 32364 20156 Derrotas 09797 0049 19979 0000 0883 1076 Empates 13368 0037 35675 0000 1263 1411 IdadeMedia 02909 0122 2379 0018 0050 0532 Valortotal 1282e08 489e09 2620 0009 225e08 317e09 GolsSofridos 00364 0014 2656 0009 0009 0063 Omnibus 5011 DurbinWatson 2067 ProbOmnibus 0082 JarqueBera JB 4999 Skew 0386 ProbJB 00821 Kurtosis 2950 Cond No 130e09 Notes 1 Standard Errors assume that the covariance matrix of the errors is correctly specified 2 The condition number is large 13e09 This might indicate that there are strong multicollinearity or other numerical problems O modelo de regressão final selecionado por meio do método de backward revela que cerca de 927 da variação na posição dos clubes no campeonato pode ser explicada pelas variáveis incluídas no modelo Dentre essas variáveis algumas se destacam como preditores significativos da posição 11 do clube A análise dos coeficientes aponta que tanto o número de derrotas quanto o número de empates têm uma influência significativa com aumentos nessas variáveis associados a mudanças na posição do clube Além disso a idade média dos jogadores e o número de gols sofridos também emergem como fatores relevantes cada um contribuindo para explicar a posição do clube de forma distinta Por outro lado o valor total dos jogadores apresenta um efeito negativo na posição do clube sugerindo que clubes com investimentos mais elevados não necessariamente alcançam uma melhor posição no campeonato É importante ressaltar que todas as variáveis restantes no modelo mostraramse estatisticamente significativas reforçando sua relevância na explicação da posição do clube 201 Análise de Resíduos 37 import matplotlibpyplot as plt import statsmodelsapi as sm Obtendo os resíduos do modelo residuos modelresid Plotando os resíduos versus os valores previstos pltscattermodelfittedvalues residuos pltxlabelValores Previstos pltylabelResíduos plttitleAnálise de Resíduos Resíduos vs Valores Previstos pltaxhliney0 colorr linestyle Adicionando linha horizontal em y0 pltshow Plotando um histograma dos resíduos plthistresiduos bins20 pltxlabelResíduos pltylabelFrequência plttitleHistograma dos Resíduos pltshow Plotando o gráfico QQ dos resíduos smqqplotresiduos liner plttitleQQ Plot dos Resíduos pltshow 12 Análise de Resíduos Resíduos vs Valores Previstos Resíduos Valores Previstos Histograma dos Resíduos Frequência Resíduos Após examinar o histograma dos resíduos e o QQ Plot observase que os pressupostos da regressão foram atendidos A normalidade dos resíduos é fundamental pois garante que as estimativas dos coeficientes sejam válidas Aqui a distribuição dos resíduos parece seguir de perto uma distribuição normal o que é encorajador para a confiabilidade das estimativas Além disso a homocedasticidade da variância indica que a dispersão dos resíduos é constante em relação à variável independente Isso é importante porque as previsões do modelo tendem a ser menos precisas se a variabilidade dos erros não for constante No nosso caso não há evidências visuais de que a variância dos resíduos mude à medida que a posição do clube no campeonato varia Quanto à independência dos resíduos sua validação sugere que não há correlação serial entre os resíduos Isso é crucial para evitar vieses nas estimativas dos parâmetros e para garantir que as previsões não sejam influenciadas por padrões temporais nos dados Portanto com base nessas análises podemos ter confiança na adequação do modelo de regressão linear múltipla para explicar a posição dos clubes no campeonato considerando as variáveis selecionadas 3 Análise de Correspondência Múltipla A análise de correspondência múltipla é uma técnica estatística usada quando se tem variáveis categóricas no banco de dados e deseja explorar a relação entre essas variáveis No entanto no 15 conjunto de dados a única variável categórica é Clubes Isso significa que não há múltiplas variáveis categóricas para analisar em relação umas às outras Portanto como a análise se concentra principalmente em variáveis numéricas e o objetivo central é entender a relação entre essas variáveis numéricas e a posição dos clubes no campeonato não há necessidade de realizar a análise de correspondência múltipla 4 Análise de Componentes Principais e Fatorial 46 import pandas as pd from sklearndecomposition import PCA import matplotlibpyplot as plt Excluir colunas não numéricas numericdata dfselectdtypesincludeint float Tratar dados omissos numericdatadropnainplaceTrue Remover observações com dados omissos Padronizando os dados scaler StandardScaler pcadatascaled scalerfittransformnumericdata Aplicar PCA pca PCA pcafitpcadatascaled Plotar a variância explicada por cada componente pltplotrange1 lenpcaexplainedvarianceratio 1 pca explainedvarianceratio markero pltxlabelNúmero de Componentes Principais pltylabelVariância Explicada plttitleVariância Explicada por Componente Principal pltshow 16 Variância Total Explicada pelos Componentes Principais 10000 47 Calcular a variância explicada por cada componente principal explainedvarianceratio pcaexplainedvarianceratio Criar DataFrame para armazenar os resultados resultdf pdDataFrame Componente Principal range1 lenexplainedvarianceratio 1 Variância Explicada explainedvarianceratio Calcular a explicação acumulada resultdfExplicação Acumulada resultdfVariância Explicadacumsum Exibir a tabela printresultdf Componente Principal Variância Explicada Explicação Acumulada 0 1 0409548 0409548 1 2 0152883 0562431 17 2 3 0107349 0669780 3 4 0100620 0770400 4 5 0076757 0847156 5 6 0061271 0908427 6 7 0037447 0945874 7 8 0035960 0981834 8 9 0011769 0993603 9 10 0003353 0996956 10 11 0001584 0998540 11 12 0001443 0999982 12 13 0000018 1000000 A análise de componentes principais PCA revelou que cinco componentes principais explicam aproximadamente 9084 da variação nos dados Isso sugere que a dimensionalidade dos seus dados pode ser reduzida de forma significativa sem perder muita informação A redução da dimen sionalidade pode simplificar a interpretação dos dados e muitas vezes melhorar o desempenho dos modelos 5 Análise de Discriminante 50 import numpy as np import pandas as pd import seaborn as sns import matplotlibpyplot as plt from sklearndecomposition import PCA Calcular os autovalores e autovetores eigenvalues pcaexplainedvariance explainedvarianceratio pcaexplainedvarianceratio Calcular a explicação acumulada cumulativeexplainedvarianceratio npcumsumexplainedvarianceratio Criar dataframe para armazenar os resultados pcaresults pdDataFrame Component nparange1 lenexplainedvarianceratio 1 Explained Variance Ratio explainedvarianceratio Cumulative Explained Variance Ratio cumulativeexplainedvarianceratio Plotar as proporções de variância explicada para cada componente principal pltfigurefigsize10 6 snsbarplotxComponent yExplained Variance Ratio datapcaresults colorskyblue plttitleProporção de Variância Explicada por Componente Principal pltxlabelComponente Principal pltylabelProporção de Variância Explicada 18 pltxticksrotation45 pltgridaxisy linestyle alpha07 pltshow Plotar a explicação acumulada pltfigurefigsize10 6 pltplotnparange1 lenexplainedvarianceratio 1 cumulativeexplainedvarianceratio markero colorgreen plttitleExplicação Acumulada da Variância pltxlabelNúmero de Componentes Principais pltylabelExplained Variance Ratio Acumulada pltxticksnparange1 lenexplainedvarianceratio 1 pltgridTrue linestyle alpha07 pltshow 19 52 from sklearnpreprocessing import LabelEncoder Converter variáveis categóricas em variáveis numéricas labelencoder LabelEncoder Xencoded Xapplylabelencoderfittransform Dividir os dados em conjuntos de treinamento e teste Xtrain Xtest ytrain ytest traintestsplitXencoded y testsize0 2 randomstate42 Inicializar e ajustar o modelo de análise discriminante linear lda LinearDiscriminantAnalysis ldafitXtrain ytrain Prever as classes no conjunto de teste ypred ldapredictXtest Calcular métricas de desempenho accuracy accuracyscoreytest ypred precision precisionscoreytest ypred averageweighted recall recallscoreytest ypred averageweighted f1 f1scoreytest ypred averageweighted Imprimir as métricas 20 printMétricas de Desempenho do Modelo printAcurácia accuracy printPrecisão precision printSensibilidade Recall recall printEscore F1 f1 Criar tabela de confusão confmatrix confusionmatrixytest ypred Plotar matriz de confusão pltfigurefigsize10 8 snsheatmapconfmatrix annotTrue cmapBlues fmtd cbarFalse plttitleMatriz de Confusão do Modelo pltxlabelClasse Predita pltylabelClasse Real pltshow usrlocallibpython310distpackagessklearnmetricsclassificationpy1344 UndefinedMetricWarning Precision is illdefined and being set to 00 in labels with no predicted samples Use zerodivision parameter to control this behavior warnprfaverage modifier msgstart lenresult usrlocallibpython310distpackagessklearnmetricsclassificationpy1344 UndefinedMetricWarning Recall is illdefined and being set to 00 in labels with no true samples Use zerodivision parameter to control this behavior warnprfaverage modifier msgstart lenresult Métricas de Desempenho do Modelo Acurácia 02 Precisão 017375 Sensibilidade Recall 02 Escore F1 016142857142857142 21 As métricas de desempenho do modelo de análise discriminante linear LDA fornecem uma avali ação da capacidade de classificar as posições dos clubes de futebol com base nas variáveis fornecidas A acurácia que indica a proporção de previsões corretas em relação ao total de previsões revela que apenas 20 das instâncias no conjunto de teste foram classificadas corretamente pelo modelo Isso sugere que o modelo tem um desempenho significativamente baixo e não é capaz de prever com precisão a posição dos clubes Além disso a precisão do modelo que representa a proporção de verdadeiros positivos em relação ao total de instâncias previstas como positivas é de apenas 1738 Isso indica que o modelo tem uma alta taxa de falsos positivos ou seja muitas instâncias foram incorretamente classificadas como positivas Da mesma forma a sensibilidade que indica a proporção de verdadeiros positivos em relação ao total de instâncias que realmente são positivas é de apenas 20 Isso sugere que o modelo também tem um alto número de falsos negativos ou instâncias que foram incorretamente classificadas como negativas Por fim o escore F1 que é uma média harmônica entre precisão e sensibilidade é de apenas 01614 indicando um desempenho geral muito baixo do modelo Com base nessas métricas concluímos que o modelo de análise discriminante linear não é eficaz na classificação das posições dos clubes de futebol com base nas variáveis disponíveis Seria necessário revisar e possivelmente reformular 22 o modelo bem como considerar a inclusão de mais variáveis ou a utilização de algoritmos de aprendizado de máquina mais avançados para melhorar o desempenho e a precisão das previsões 23 Introdução A análise do desempenho de clubes de futebol em campeonatos é uma área de interesse constante para gestores esportivos torcedores e analistas Compreender os fatores que influenciam o sucesso ou fracasso de um clube pode fornecer resultados para aprimorar estratégias de gestão recrutamento de jogadores e táticas de jogo Sendo assim o presente trabalho busca explorar um conjunto de dados que contém informações sobre diversos clubes de futebol incluindo suas posições finais em campeonatos estatísticas de vitórias derrotas e empates características demográficas dos jogadores dados financeiros e estatísticas de desempenho em campo como gols feitos e gols sofridos O objetivo principal desta análise é identificar os principais fatores que contribuem para o desempenho dos clubes em campeonatos de futebol Para isso utilizamos técnicas de análise estatística como regressão linear múltipla análise de componentes principais e análise discriminante para explorar a relação entre as variáveis disponíveis e a posição final dos clubes nos campeonatos Inicialmente foi realizado uma análise exploratória dos dados identificando suas características e distribuições Em seguida aplicado os modelos de regressão linear múltipla para entender como as diferentes variáveis estão relacionadas à posição final dos clubes Também foi utilizado a seleção de backward para identificar as variáveis mais relevantes para o modelo visando aprimorar sua precisão e interpretabilidade Além disso foi realizado uma análise de componentes principais para reduzir a dimensionalidade dos dados e identificar os principais padrões de variabilidade entre os clubes Por fim foi explorado a análise discriminante para avaliar a capacidade de um modelo em classificar corretamente as posições dos clubes com base em suas características Vamos começar lendo o arquivo para entender a estrutura dos dados e suas variáveis import pandas as pd Caminho do arquivo filepath TabelaClubes 2csv Lendo o arquivo CSV com delimitador df pdreadcsvfilepath delimiter decimal printdf Ano Pos Clubes Vitorias Derrotas Empates Saldo 0 2017 18 AmericaMG 10 10 18 17 1 2017 7 AthleticoPR 16 9 13 17 2 2017 6 AtleticoMG 17 8 13 13 3 2017 11 Bahia 12 12 14 2 4 2017 9 Botafogo 13 12 13 8 195 2008 18 Santo Andre 11 8 19 15 196 2008 12 Santos 12 13 13 0 197 2008 3 Sao Paulo 18 11 9 15 198 2008 20 Sport 7 10 21 23 199 2008 13 Vitoria 13 9 16 6 QtdJogadores IdadeMedia Estrangeiros Valortotal MediaValor 0 51 248 0 27350000 536000 1 52 240 3 37650000 724000 2 50 234 6 61350000 1230000 3 48 232 2 34900000 727000 4 45 231 4 25550000 568000 195 43 251 3 6230000 145000 196 33 239 1 27850000 844000 197 30 239 1 46650000 1560000 198 30 250 1 15600000 520000 199 38 241 2 13450000 354000 GolsFeitos GolsSofridos 0 30 47 1 54 37 2 56 43 3 39 41 4 38 46 195 460 610 196 580 580 197 570 420 198 480 710 199 510 570 200 rows x 14 columns Verificar os tipos de dados de todas as colunas no DataFrame printdfdtypes Ano int64 Pos int64 Clubes object Vitorias int64 Derrotas int64 Empates int64 Saldo int64 QtdJogadores int64 IdadeMedia float64 Estrangeiros int64 Valortotal int64 MediaValor int64 GolsFeitos object GolsSofridos object dtype object Preencher valores ausentes com zero dfGolsFeitosfillna0 inplaceTrue dfGolsSofridosfillna0 inplaceTrue Remover pontos decimais e converter os dados para inteiros dfGolsFeitos dfGolsFeitosastypestrstrsplitstr0astypeint dfGolsSofridos dfGolsSofridosastypestrstrsplitstr0astypeint Agora vamos realizar uma estatística descritiva básica dos dados descritiva dfdescribe Para os gráficos selecionaremos algumas variáveis chave para explorar visualmente import matplotlibpyplot as plt import seaborn as sns Definindo o estilo dos gráficos snssetstylewhitegrid Preparando a figura para múltiplos gráficos fig axs pltsubplots3 2 figsize15 15 Gráfico de distribuição de Idade Média snshistplotdfIdadeMedia kdeTrue axaxs0 0 colorskyblue axs0 0settitleDistribuição da Idade Média dos Jogadores Gráfico de distribuição de Valor Total do Elenco snshistplotdfValortotal kdeTrue axaxs0 1 colorlightgreen axs0 1settitleDistribuição do Valor Total do Elenco Gráfico de barras da quantidade de vitórias por clube Top 10 topvitorias dfgroupbyClubes VitoriassumsortvaluesascendingFalsehead10 topvitoriasplotkindbar axaxs1 0 colorcoral axs1 0settitleTop 10 Clubes com Mais Vitórias axs1 0tickparamsaxisx rotation45 Gráfico de barras do número de estrangeiros por clube Top 10 topestrangeiros dfgroupbyClubes EstrangeirossumsortvaluesascendingFalsehead10 topestrangeirosplotkindbar axaxs1 1 colorgold axs1 1settitleTop 10 Clubes com Mais Estrangeiros axs1 1tickparamsaxisx rotation45 Gráfico de dispersão entre Idade Média e Valor Total do Elenco snsscatterplotxIdadeMedia yValortotal datadf axaxs2 0 colorpurple axs2 0settitleIdade Média vs Valor Total do Elenco Gráfico de dispersão entre Gols Feitos e Gols Sofridos snsscatterplotxGolsFeitos yGolsSofridos datadf axaxs2 1 colorteal axs2 1settitleGols Feitos vs Gols Sofridos plttightlayout pltshow Distribuição da Idade Média dos Jogadores Count IdadeMedia Top 10 Clubes com Mais Vitórias Gremio Corinthians Cruzeíro Sao Paulo AtleticoMG Santos Criminense Flamengo Nacional descritiva Ano Pos Vitorias Derrotas Empates Saldo QtdJogadore s Estrangeiro count 200000000 200000000 200000000 200000000 200000000 20000000 20000000 200000000 mean 2012500000 10500000 13855000 10280000 13855000 000000 4323000 2885000 std 2879489 5780751 3967706 2528551 4187079 1552725 947661 2042704 min 2008000000 1000000 4000000 3000000 4000000 5700000 2000000 0000000 25 2010000000 5750000 11000000 9000000 11000000 900000 3600000 1000000 50 2012500000 10500000 14000000 10000000 14000000 100000 4300000 3000000 75 2015000000 15250000 16000000 12000000 17000000 1125000 5000000 4000000 max 2017000000 20000000 24000000 17000000 28000000 4000000 7700000 8000000 Preparando a figura para os gráficos solicitados fig axs pltsubplots3 1 figsize10 15 Gráfico 1 Relação entre o Valor Total do Elenco e o Desempenho na Competição snsscatterplotxValortotal yPos datadf axaxs0 colorblue edgecolorw axs0settitleValor Total do Elenco vs Posição Final axs0setxlabelValor Total do Elenco axs0setylabelPosição Final axs0invertyaxis Inverter o eixo Y para mostrar a melhor posição no topo Gráfico 2 Impacto do Número de Estrangeiros no Sucesso dos Clubes snsboxplotxEstrangeiros yPos datadf axaxs1 palettecoolwarm axs1settitleNúmero de Estrangeiros vs Posição Final axs1setxlabelNúmero de Estrangeiros axs1setylabelPosição Final axs1invertyaxis Inverter o eixo Y para mostrar a melhor posição no topo Gráfico 3 Evolução do Desempenho dos Clubes ao Longo dos Anos Aqui vamos considerar a soma de vitórias derrotas e empates por ano performanceano dfgroupbyAnoVitorias Derrotas Empatessum performanceanoplotaxaxs2 markero axs2settitleEvolução do Desempenho dos Clubes ao Longo dos Anos axs2setxlabelAno axs2setylabelTotal plttightlayout pltshow ipythoninput4339751e4919c10 FutureWarning Passing palette without assigning hue is deprecated and will be removed in v0140 Assign the x variable to hue and set legendFalse for the same effect snsboxplotxEstrangeiros yPos datadf axaxs1 palettecoolwarm In 33 from sklearndecomposition import PCA from sklearnpreprocessing import StandardScaler Removendo colunas que não serão utilizadas na PCA pcadata dfdropAno Clubes axis1 Tratando valores ausentes substituindo por a média da coluna pcadatafillnapcadatamean inplaceTrue Padronizando os dados scaler StandardScaler pcadatascaled scalerfittransformpcadata Aplicando PCA pca PCAncomponents2 Reduzindo para 2 componentes principais para facilitar a visualização pcaresult pcafittransformpcadatascaled Transformando o resultado em DataFrame para facilitar a visualização pcadf pdDataFramedatapcaresult columnsPrincipal Component 1 Principal Component 2 Calculando a variância explicada por cada componente explainedvariance pcaexplainedvarianceratio explainedvariance pcadfhead array044351545 015349893 Principal Component 1 Principal Component 2 0 2861116 0123642 1 1331901 0204933 2 2092743 1232547 3 0533431 0220085 4 0537863 0266005 Regressão Linear Multipla import pandas as pd import statsmodelsapi as sm Supondo que df é o seu DataFrame com as variáveis fornecidas Selecionando as variáveis independentes e dependentes X dfAno Vitorias Derrotas Empates Saldo QtdJogadores IdadeMedia Estrangeiros Valortotal MediaValor GolsFeitos GolsSofridos y dfPos Adicionando uma constante para o termo de interceptação X smaddconstantX Criando o modelo de regressão model smOLSy X Ajustando o modelo aos dados results modelfit Imprimindo os resultados da regressão printresultssummary OLS Regression Results Dep Variable Pos Rsquared 0930 Model OLS Adj Rsquared 0926 Method Least Squares Fstatistic 2073 Date Mon 15 Apr 2024 Prob Fstatistic 446e101 Time 140636 LogLikelihood 36813 No Observations 200 AIC 7623 Df Residuals 187 BIC 8051 Df Model 12 Covariance Type nonrobust coef std err t Pt 0025 0975 const 1784224 116445 1532 0127 408137 51292 Ano 00760 0050 1532 0127 0022 0174 Vitorias 00538 1181 0046 0964 2383 2275 Derrotas 09858 1182 0834 0405 1345 3317 Empates 13840 1169 1184 0238 0922 3690 Saldo 00546 0040 1373 0171 0024 0133 QtdJogadores 00015 0024 0065 0949 0048 0045 IdadeMedia 02529 0130 1947 0053 0003 0509 Estrangeiros 00035 0069 0050 0960 0133 0140 Valortotal 1979e08 224e08 0883 0378 64e08 244e08 MediaValor 3276e07 959e07 0342 0733 156e06 222e06 GolsFeitos 00293 0043 0687 0493 0113 0055 GolsSofridos 00700 0031 2256 0025 0009 0131 Omnibus 4671 DurbinWatson 2063 ProbOmnibus 0097 JarqueBera JB 4468 Skew 0365 ProbJB 0107 Kurtosis 3065 Cond No 487e10 Notes 1 Standard Errors assume that the covariance matrix of the errors is correctly specified 2 The condition number is large 487e10 This might indicate that there are strong multicollinearity or other numerical problems Após realizar o modelo de regressão linear múltipla para entender os fatores que influenciam o desempenho dos clubes no campeonato observamos que o teste F indicando a significância do modelo como um todo apresentou um valor próximo de zero confirmando que pelo menos uma das variáveis independentes tem um efeito significativo na posição do clube No entanto ao analisar individualmente as variáveis independentes por meio do teste T utilizando um nível de significância de 5 notamos que nem todas as variáveis são estatisticamente significantes para explicar a posição dos clubes Para refinar o modelo e identificar as variáveis mais relevantes optamos por implementar a seleção backward um método iterativo que remove gradualmente as variáveis menos significativas do modelo Isso nos permitirá alcançar um modelo mais parcimonioso mantendo apenas as variáveis independentes que realmente contribuem para a explicação da posição no campeonato Ao finalizar o processo de seleção backward teremos um modelo simplificado e interpretável destacando as variáveis mais importantes para o sucesso dos clubes no campeonato Adicione uma coluna constante para representar o termo de interceptação X smaddconstantX Implemente a seleção de backward while True model smOLSy Xfit Verifique as variáveis com o maior valorp pvalues modelpvalues1 Exclua o valorp da constante maxpvalue pvaluesmax if maxpvalue 005 Remova a variável com o maior valorp removeindex pvaluesidxmax X Xdropremoveindex axis1 else break Exiba o modelo final printmodelsummary OLS Regression Results Dep Variable Pos Rsquared 0927 Model OLS Adj Rsquared 0926 Method Least Squares Fstatistic 4963 Date Mon 15 Apr 2024 Prob Fstatistic 190e108 Time 151533 LogLikelihood 37180 No Observations 200 AIC 7556 Df Residuals 194 BIC 7754 Df Model 5 Covariance Type nonrobust coef std err t Pt 0025 0975 const 262602 3095 8485 0000 32364 20156 Derrotas 09797 0049 19979 0000 0883 1076 Empates 13368 0037 35675 0000 1263 1411 IdadeMedia 02909 0122 2379 0018 0050 0532 Valortotal 1282e08 489e09 2620 0009 225e08 317e09 GolsSofridos 00364 0014 2656 0009 0009 0063 Omnibus 5011 DurbinWatson 2067 ProbOmnibus 0082 JarqueBera JB 4999 Skew 0386 ProbJB 00821 Kurtosis 2950 Cond No 130e09 Notes 1 Standard Errors assume that the covariance matrix of the errors is correctly specified 2 The condition number is large 13e09 This might indicate that there are strong multicollinearity or other numerical problems O modelo de regressão final selecionado por meio do método de backward revela que cerca de 927 da variação na posição dos clubes no campeonato pode ser explicada pelas variáveis incluídas no modelo Dentre essas variáveis algumas se destacam como preditores significativos da posição do clube A análise dos coeficientes aponta que tanto o número de derrotas quanto o número de empates têm uma influência significativa com aumentos nessas variáveis associados a mudanças na posição do clube Além disso a idade média dos jogadores e o número de gols sofridos também emergem como fatores relevantes cada um contribuindo para explicar a posição do clube de forma distinta Por outro lado o valor total dos jogadores apresenta um efeito negativo na posição do clube sugerindo que clubes com investimentos mais elevados não necessariamente alcançam uma melhor posição no campeonato É importante ressaltar que todas as variáveis restantes no modelo mostraramse estatisticamente significativas reforçando sua relevância na explicação da posição do clube Análise de Resíduos import matplotlibpyplot as plt import statsmodelsapi as sm Obtendo os resíduos do modelo residuos modelresid Plotando os resíduos versus os valores previstos pltscattermodelfittedvalues residuos pltxlabelValores Previstos pltylabelResíduos plttitleAnálise de Resíduos Resíduos vs Valores Previstos pltaxhliney0 colorr linestyle Adicionando linha horizontal em y0 pltshow Plotando um histograma dos resíduos plthistresiduos bins20 pltxlabelResíduos pltylabelFrequência plttitleHistograma dos Resíduos pltshow Plotando o gráfico QQ dos resíduos smqqplotresiduos liner plttitleQQ Plot dos Resíduos pltshow Análise de Resíduos Resíduos vs Valores Previstos Resíduos Valores Previstos Histograma dos Resíduos Frequência Resíduos Após examinar o histograma dos resíduos e o QQ Plot observase que os pressupostos da regressão foram atendidos A normalidade dos resíduos é fundamental pois garante que as estimativas dos coeficientes sejam válidas Aqui a distribuição dos resíduos parece seguir de perto uma distribuição normal o que é encorajador para a confiabilidade das estimativas Além disso a homocedasticidade da variância indica que a dispersão dos resíduos é constante em relação à variável independente Isso é importante porque as previsões do modelo tendem a ser menos precisas se a variabilidade dos erros não for constante No nosso caso não há evidências visuais de que a variância dos resíduos mude à medida que a posição do clube no campeonato varia Quanto à independência dos resíduos sua validação sugere que não há correlação serial entre os resíduos Isso é crucial para evitar vieses nas estimativas dos parâmetros e para garantir que as previsões não sejam influenciadas por padrões temporais nos dados Portanto com base nessas análises podemos ter confiança na adequação do modelo de regressão linear múltipla para explicar a posição dos clubes no campeonato considerando as variáveis selecionadas Análise de Correspondência Múltipla A análise de correspondência múltipla é uma técnica estatística usada quando se tem variáveis categóricas no banco de dados e deseja explorar a relação entre essas variáveis No entanto no conjunto de dados a única variável categórica é Clubes Isso significa que não há múltiplas variáveis categóricas para analisar em relação umas às outras Portanto como a análise se concentra principalmente em variáveis numéricas e o objetivo central é entender a relação entre essas variáveis numéricas e a posição dos clubes no campeonato não há necessidade de realizar a análise de correspondência múltipla Análise de Componentes Principais e Fatorial import pandas as pd from sklearndecomposition import PCA import matplotlibpyplot as plt Excluir colunas não numéricas numericdata dfselectdtypesincludeint float Tratar dados omissos numericdatadropnainplaceTrue Remover observações com dados omissos Padronizando os dados scaler StandardScaler pcadatascaled scalerfittransformnumericdata Aplicar PCA pca PCA pcafitpcadatascaled Plotar a variância explicada por cada componente pltplotrange1 lenpcaexplainedvarianceratio 1 pcaexplainedvarianceratio markero pltxlabelNúmero de Componentes Principais pltylabelVariância Explicada plttitleVariância Explicada por Componente Principal pltshow Variância Total Explicada pelos Componentes Principais 10000 In 47 Calcular a variância explicada por cada componente principal explainedvarianceratio pcaexplainedvarianceratio Criar DataFrame para armazenar os resultados resultdf pdDataFrame Componente Principal range1 lenexplainedvarianceratio 1 Variância Explicada explainedvarianceratio Calcular a explicação acumulada resultdfExplicação Acumulada resultdfVariância Explicadacumsum Exibir a tabela printresultdf Componente Principal Variância Explicada Explicação Acumulada 0 1 0409548 0409548 1 2 0152883 0562431 2 3 0107349 0669780 3 4 0100620 0770400 4 5 0076757 0847156 5 6 0061271 0908427 6 7 0037447 0945874 7 8 0035960 0981834 8 9 0011769 0993603 9 10 0003353 0996956 10 11 0001584 0998540 11 12 0001443 0999982 12 13 0000018 1000000 A análise de componentes principais PCA revelou que cinco componentes principais explicam aproximadamente 9084 da variação nos dados Isso sugere que a dimensionalidade dos seus dados pode ser reduzida de forma significativa sem perder muita informação A redução da dimensionalidade pode simplificar a interpretação dos dados e muitas vezes melhorar o desempenho dos modelos Análise de Discriminante import numpy as np import pandas as pd import seaborn as sns import matplotlibpyplot as plt from sklearndecomposition import PCA Calcular os autovalores e autovetores eigenvalues pcaexplainedvariance explainedvarianceratio pcaexplainedvarianceratio Calcular a explicação acumulada cumulativeexplainedvarianceratio npcumsumexplainedvarianceratio Criar dataframe para armazenar os resultados pcaresults pdDataFrame Component nparange1 lenexplainedvarianceratio 1 Explained Variance Ratio explainedvarianceratio Cumulative Explained Variance Ratio cumulativeexplainedvarianceratio Plotar as proporções de variância explicada para cada componente principal pltfigurefigsize10 6 snsbarplotxComponent yExplained Variance Ratio datapcaresults colorskyblue plttitleProporção de Variância Explicada por Componente Principal pltxlabelComponente Principal pltylabelProporção de Variância Explicada pltxticksrotation45 pltgridaxisy linestyle alpha07 pltshow Plotar a explicação acumulada pltfigurefigsize10 6 pltplotnparange1 lenexplainedvarianceratio 1 cumulativeexplainedvarianceratio markero colorgreen plttitleExplicação Acumulada da Variância pltxlabelNúmero de Componentes Principais pltylabelExplained Variance Ratio Acumulada pltxticksnparange1 lenexplainedvarianceratio 1 pltgridTrue linestyle alpha07 pltshow from sklearnpreprocessing import LabelEncoder Converter variáveis categóricas em variáveis numéricas labelencoder LabelEncoder Xencoded Xapplylabelencoderfittransform Dividir os dados em conjuntos de treinamento e teste Xtrain Xtest ytrain ytest traintestsplitXencoded y testsize02 randomstate42 Inicializar e ajustar o modelo de análise discriminante linear lda LinearDiscriminantAnalysis ldafitXtrain ytrain Prever as classes no conjunto de teste ypred ldapredictXtest Calcular métricas de desempenho accuracy accuracyscoreytest ypred precision precisionscoreytest ypred averageweighted recall recallscoreytest ypred averageweighted f1 f1scoreytest ypred averageweighted Imprimir as métricas printMétricas de Desempenho do Modelo printAcurácia accuracy printPrecisão precision printSensibilidade Recall recall printEscore F1 f1 Criar tabela de confusão confmatrix confusionmatrixytest ypred Plotar matriz de confusão pltfigurefigsize10 8 snsheatmapconfmatrix annotTrue cmapBlues fmtd cbarFalse plttitleMatriz de Confusão do Modelo pltxlabelClasse Predita pltylabelClasse Real pltshow usrlocallibpython310distpackagessklearnmetrics classificationpy1344 UndefinedMetricWarning Precision is ill defined and being set to 00 in labels with no predicted samples Use zerodivision parameter to control this behavior warnprfaverage modifier msgstart lenresult usrlocallibpython310distpackagessklearnmetrics classificationpy1344 UndefinedMetricWarning Recall is illdefined and being set to 00 in labels with no true samples Use zerodivision parameter to control this behavior warnprfaverage modifier msgstart lenresult Métricas de Desempenho do Modelo Acurácia 02 Precisão 017375 Sensibilidade Recall 02 Escore F1 016142857142857142 As métricas de desempenho do modelo de análise discriminante linear LDA fornecem uma avaliação da capacidade de classificar as posições dos clubes de futebol com base nas variáveis fornecidas A acurácia que indica a proporção de previsões corretas em relação ao total de previsões revela que apenas 20 das instâncias no conjunto de teste foram classificadas corretamente pelo modelo Isso sugere que o modelo tem um desempenho significativamente baixo e não é capaz de prever com precisão a posição dos clubes Além disso a precisão do modelo que representa a proporção de verdadeiros positivos em relação ao total de instâncias previstas como positivas é de apenas 1738 Isso indica que o modelo tem uma alta taxa de falsos positivos ou seja muitas instâncias foram incorretamente classificadas como positivas Da mesma forma a sensibilidade que indica a proporção de verdadeiros positivos em relação ao total de instâncias que realmente são positivas é de apenas 20 Isso sugere que o modelo também tem um alto número de falsos negativos ou instâncias que foram incorretamente classificadas como negativas Por fim o escore F1 que é uma média harmônica entre precisão e sensibilidade é de apenas 01614 indicando um desempenho geral muito baixo do modelo Com base nessas métricas concluímos que o modelo de análise discriminante linear não é eficaz na classificação das posições dos clubes de futebol com base nas variáveis disponíveis Seria necessário revisar e possivelmente reformular o modelo bem como considerar a inclusão de mais variáveis ou a utilização de algoritmos de aprendizado de máquina mais avançados para melhorar o desempenho e a precisão das previsões
Send your question to AI and receive an answer instantly
Recommended for you
Preview text
Estatística Multivariada Aluna Enzo Ramalho March 25 2024 Este trabalho visa analisar a performance dos clubes de futebol brasileiros durante a temporada de 2008 a 2017 utilizando uma base de dados que inclui informações detalhadas sobre os clubes que participaram do campeonato brasileiro As variáveis consideradas incluem não apenas o desempenho esportivo dos clubes como vitórias derrotas e empates mas também aspectos financeiros e demográficos como o valor total do elenco a média de idade dos jogadores e a quantidade de jogadores estrangeiros Ao explorar essas dimensões este estudo busca compreender como diferentes fatores podem influenciar o sucesso dos clubes no campeonato oferecendo insights valiosos para gestores esportivos treinadores e analistas do esporte Aqui está uma breve descrição de cada coluna Ano O ano da temporada Pos Posição final do clube na tabela Clubes Nome do clube Vitórias Número de vitórias Derrotas Número de derrotas Empates Número de empates GolsFS Gols feitos e sofridos possivelmente necessitando de tratamento adicional para separar esses valores Saldo Saldo de gols gols feitos menos gols sofridos QtdJogadores Quantidade de jogadores utilizados durante a temporada IdadeMedia Idade média dos jogadores notar que o separador decimal está como vírgula Estrangeiros Número de jogadores estrangeiros no clube Valortotal Valor total do elenco MediaValor Média do valor de mercado dos jogadores Estatística Descritivas Vamos começar lendo o arquivo para entender a estrutura dos dados e suas variáveis import pandas as pd Caminho do arquivo filepath TabelaClubes 2csv Lendo o arquivo CSV com delimitador df pdreadcsvfilepath delimiter Antes de prosseguir vamos converter a coluna IdadeMedia para o tipo float garantindo que possamos realizar operações numéricas com ela Primeiro substituímos a vírgula por ponto para adequar ao padrão decimal dfIdadeMedia dfIdadeMediastrreplace astypefloat Agora vamos realizar uma estatística descritiva básica dos dados descritiva dfdescribe Para os gráficos selecionaremos algumas variáveis chave para explorar visualmente import matplotlibpyplot as plt import seaborn as sns Definindo o estilo dos gráficos snssetstylewhitegrid 1 Preparando a figura para múltiplos gráficos fig axs pltsubplots3 2 figsize15 15 Gráfico de distribuição de Idade Média snshistplotdfIdadeMedia kdeTrue axaxs0 0 colorskyblue axs0 0settitleDistribuição da Idade Média dos Jogadores Gráfico de distribuição de Valor Total do Elenco snshistplotdfValortotal kdeTrue axaxs0 1 colorlightgreen axs0 1settitleDistribuição do Valor Total do Elenco Gráfico de barras da quantidade de vitórias por clube Top 10 topvitorias dfgroupbyClubesVitoriassumsortvaluesascendingFalsehead10 topvitoriasplotkindbar axaxs1 0 colorcoral axs1 0settitleTop 10 Clubes com Mais Vitórias axs1 0tickparamsaxisx rotation45 Gráfico de barras do número de estrangeiros por clube Top 10 topestrangeiros dfgroupbyClubesEstrangeirossumsortvaluesascendingFalsehead10 topestrangeirosplotkindbar axaxs1 1 colorgold axs1 1settitleTop 10 Clubes com Mais Estrangeiros axs1 1tickparamsaxisx rotation45 Gráfico de dispersão entre Idade Média e Valor Total do Elenco snsscatterplotxIdadeMedia yValortotal datadf axaxs2 0 colorpurple axs2 0settitleIdade Média vs Valor Total do Elenco Gráfico de dispersão entre Gols Feitos e Gols Sofridos snsscatterplotxGolsFeitos yGolsSofridos datadf axaxs2 1 colorteal axs2 1settitleGols Feitos vs Gols Sofridos plttightlayout pltshow 2 Distribuição da Idade Média dos Jogadores Distribuição do Valor Total do Elenco Top 10 Clubes com Mais Vitórias Top 10 Clubes com Mais Estrangeiros Idade Média vs Valor Total do Elenco Gols Feitos vs Gols Sofridos descritiva Ano Pos GolsFeitos GolsSofridos count 200000000 200000000 199000000 199000000 mean 2012500000 10500000 47045226 46758794 std 2879489 5780751 10105652 9778461 min 2008000000 1000000 18000000 22000000 25 2010000000 5750000 39000000 40000000 50 2012500000 10500000 48000000 46000000 75 2015000000 15250000 53000000 53000000 max 2017000000 20000000 77000000 75000000 8 rows x 13 columns 6 Valor Total do Elenco vs Posição Final Número de Estrangeiros vs Posição Final Evolução do Desempenho dos Clubes ao Longo dos Anos Vitorias Derrotas Empates Ano Total 9 Análise de Componentes Principais PCA Cada ponto representa um clube posicionado com base nos dois principais componentes derivados da PCA O gráfico acima mostra a dispersão dos clubes com base nos dois principais componentes derivados da PCA Cada ponto representa um clube posicionado de acordo com seus valores nos componentes principais Esta visualização pode ajudar a identificar padrões agrupamentos ou outliers entre os clubes baseandose nas variáveis analisadas A posição dos clubes no gráfico é determinada por suas características em múltiplas dimensões vitórias derrotas empates saldo de gols valor do elenco etc agora condensadas nos dois principais componentes Clubs que estão próximos uns dos outros no gráfico são semelhantes em termos dessas características multi variadas enquanto aqueles que estão mais distantes diferem mais significativamente O Componente Principal 1 no eixo X explica aproximadamente 4518 da variância total nos dados O Componente Principal 2 no eixo Y adiciona mais 1521 totalizando 6039 da variância explicada pelos dois componentes Este gráfico oferece uma visualização clara de como os clubes se distribuem no espaço definido pelos dois principais componentes facilitando a identificação de padrões semelhanças ou diferenças significativas entre os clubes com base em múltiplas variáveis A estatística descritiva nos revela o seguinte sobre os dados analisados Ano Os dados abrangem temporadas de 2008 a 2017 Pos As posições finais variam de 1 a 20 como esperado em uma liga de 20 times Vitórias Em média os clubes obtêm aproximadamente 14 vitórias por temporada com um mínimo de 4 e um máximo de 24 Derrotas As equipes sofrem cerca de 10 derrotas em média com uma variação de 3 a 17 Empates O número de empates é similar ao de vitórias com uma média de quase 14 por temporada Saldo de Gols Varia significativamente entre 57 a 40 com uma média de 0 indicando uma distribuição equilibrada entre as equipes Quantidade de Jogadores O elenco médio possui 43 jogadores com uma variação de 20 a 77 Idade Média A idade média dos jogadores gira em torno de 2399 anos indicando uma preferência por jogadores relativamente jovens Estrangeiros Em média os clubes têm quase 3 jogadores estrangeiros em seus elencos Valor Total do Elenco O valor médio do elenco é de aproximadamente 3925 milhões com uma variação significativa que reflete a disparidade econômica entre os clubes Valor Médio por Jogador Cerca de 912440 variando de 67000 a 2520000 Gols Feitos As equipes marcam em média 47 gols por temporada Gols Sofridos Similarmente sofrem em média quase 47 gols o que mostra um equilíbrio entre ataque e defesa na liga Os gráficos complementam essas informações oferecendo visuais atraentes e diversos que ajudam a entender melhor a distribuição e as relações entre diferentes variáveis Por exemplo podemos observar que não há uma correlação clara entre a idade média do elenco e o valor total do mesmo e a competição parece ser bastante equilibrada em termos de gols feitos e sofridos Vamos agora analisar fatores interessantes para retirarmos bons insights como 1 A relação entre o valor total do elenco e o desempenho na competição Posição final 2 O impacto do número de estrangeiros no sucesso dos clubes 3 A evolução do desempenho dos clubes ao longo dos anos considerando vitórias derrotas e empates Preparando a figura para os gráficos solicitados fig axs pltsubplots3 1 figsize10 15 Gráfico 1 Relação entre o Valor Total do Elenco e o Desempenho na Competição snsscatterplotxValortotal yPos datadf axaxs0 colorblue edgecolorw axs0settitleValor Total do Elenco vs Posição Final axs0setxlabelValor Total do Elenco axs0setylabelPosição Final axs0invertyaxis Inverter o eixo Y para mostrar a melhor posição no topo Gráfico 2 Impacto do Número de Estrangeiros no Sucesso dos Clubes snsboxplotxEstrangeiros yPos datadf axaxs1 palettecoolwarm axs1settitleNúmero de Estrangeiros vs Posição Final axs1setxlabelNúmero de Estrangeiros axs1setylabelPosição Final axs1invertyaxis Inverter o eixo Y para mostrar a melhor posição no topo Gráfico 3 Evolução do Desempenho dos Clubes ao Longo dos Anos Aqui vamos considerar a soma de vitórias derrotas e empates por ano performanceano dfgroupbyAnoVitorias Derrotas Empatessum performanceanoplotaxaxs2 markero axs2settitleEvolução do Desempenho dos Clubes ao Longo dos Anos 4 axs2setxlabelAno axs2setylabelTotal plttightlayout pltshow 5 Aqui estão as análises solicitadas visualmente representadas em gráficos 1 Relação entre o Valor Total do Elenco e o Desempenho na Competição O gráfico de dispersão mostra que não há uma correlação clara e direta entre o valor total do elenco e a posição final na competição Isso sugere que embora o investimento no elenco possa ser importante outros fatores também influenciam o sucesso na competição 2 Impacto do Número de Estrangeiros no Sucesso dos Clubes O boxplot ilustra como a dis tribuição das posições finais varia com o número de jogadores estrangeiros nos clubes Não parece haver uma tendência clara que indique que ter mais jogadores estrangeiros leva a uma melhor ou pior posição final indicando que a qualidade e a integração dos jogadores estrangeiros podem ser mais críticas do que a quantidade 3 Evolução do Desempenho dos Clubes ao Longo dos Anos Este gráfico mostra as somas de vitórias derrotas e empates ao longo dos anos Podemos observar variações nos totais de vitórias derrotas e empates o que reflete mudanças no equilíbrio competitivo da liga ao longo do tempo A dinâmica competitiva parece flutuar o que pode ser influenciado por diversos fatores como mudanças nas regras na qualidade dos times ou em estratégias de jogo Análise multivariada Considerando a natureza dos dadosa PCA pode ajudar a identificar as principais variáveis que contribuem para a variância nos dados o que pode ser útil para entender quais aspectos dos clubes são mais importantes para o seu desempenho PCA from sklearndecomposition import PCA from sklearnpreprocessing import StandardScaler Removendo colunas que não serão utilizadas na PCA pcadata dfdropAno Clubes axis1 Tratando valores ausentes substituindo por a média da coluna pcadatafillnapcadatamean inplaceTrue Padronizando os dados scaler StandardScaler pcadatascaled scalerfittransformpcadata Aplicando PCA pca PCAncomponents2 Reduzindo para 2 componentes principais para facilitar a visualização pcaresult pcafittransformpcadatascaled Transformando o resultado em DataFrame para facilitar a visualização pcadf pdDataFramedatapcaresult columnsPrincipal Component 1 Principal Component 2 Calculando a variância explicada por cada componente explainedvariance pcaexplainedvarianceratio explainedvariance pcadfhead 7 array045184481 015212954 Principal Component 1 Principal Component 2 0 2857197 0001280 1 1378927 0230116 2 2098962 1319616 3 0507124 0066878 4 0538429 0150567 A Análise de Componentes Principais PCA resultou em dois componentes principais que juntos explicam aproximadamente 60 da variância total nos dados 45 pelo primeiro componente e 15 pelo segundo Isso indica que esses dois componentes capturam uma parte significativa da informação contida no conjunto de dados original Aqui estão as primeiras linhas dos dados transformados Principal Component 1 Principal Component 2 2857197 0001280 1378927 0230116 2098962 1319616 0507124 0066878 0538429 0150567 Cada linha representa um clube agora descrito pelos valores nos dois componentes principais em vez das variáveis originais Esses componentes são combinações lineares das variáveis originais ponderadas pela sua importância na explicação da variância nos dados Para visualizar como os clubes se agrupam com base nestes componentes principais podemos plotar um gráfico de dispersão explainedvariancepercent x 100 for x in explainedvariance Criando o gráfico pltfigurefigsize12 8 snsscatterplotxPrincipal Component 1 yPrincipal Component 2 datapcadf alpha07 edgecolorw s100 paletteviridis Adicionando títulos e labels mais informativos plttitleAnálise de Componentes Principais PCA fontsize16 pltxlabelfComponente Principal 1 explainedvariancepercent02f da Variância fontsize14 pltylabelfComponente Principal 2 explainedvariancepercent12f da Variância fontsize14 pltgridTrue Adicionando uma grade para facilitar a visualização Adicionando um pouco de texto para explicar melhor o gráfico pltfigtext05 001 Cada ponto representa um clube posicionado com base nos dois principais componentes derivados da PCA wrapTrue horizontalalignmentcenter fontsize12 pltshow 8 Clubes April 15 2024 1 Introdução A análise do desempenho de clubes de futebol em campeonatos é uma área de interesse constante para gestores esportivos torcedores e analistas Compreender os fatores que influenciam o sucesso ou fracasso de um clube pode fornecer resultados para aprimorar estratégias de gestão recrutamento de jogadores e táticas de jogo Sendo assim o presente trabalho busca explorar um conjunto de dados que contém informações sobre diversos clubes de futebol incluindo suas posições finais em campeonatos estatísticas de vitórias derrotas e empates características demográficas dos jogadores dados financeiros e estatís ticas de desempenho em campo como gols feitos e gols sofridos O objetivo principal desta análise é identificar os principais fatores que contribuem para o desem penho dos clubes em campeonatos de futebol Para isso utilizamos técnicas de análise estatística como regressão linear múltipla análise de componentes principais e análise discriminante para explorar a relação entre as variáveis disponíveis e a posição final dos clubes nos campeonatos Inicialmente foir realizado uma análise exploratoria dos dados identificando suas características e distribuições Em seguida aplicado o modelos de regressão linear múltipla para entender como as diferentes variáveis estão relacionadas à posição final dos clubes Também foi utilizado a seleção de backward para identificar as variáveis mais relevantes para o modelo visando aprimorar sua precisão e interpretabilidade Além disso foir realizado uma análise de componentes principais para reduzir a dimensionalidade dos dados e identificar os principais padrões de variabilidade entre os clubes Por fim foi explorado a análise discriminante para avaliar a capacidade de um modelo em classificar corretamente as posições dos clubes com base em suas características 20 Vamos começar lendo o arquivo para entender a estrutura dos dados e suas variáveis import pandas as pd Caminho do arquivo filepath TabelaClubes 2csv Lendo o arquivo CSV com delimitador df pdreadcsvfilepath delimiter decimal printdf Ano Pos Clubes Vitorias Derrotas Empates Saldo 0 2017 18 AmericaMG 10 10 18 17 1 2017 7 AthleticoPR 16 9 13 17 1 2 2017 6 AtleticoMG 17 8 13 13 3 2017 11 Bahia 12 12 14 2 4 2017 9 Botafogo 13 12 13 8 195 2008 18 Santo Andre 11 8 19 15 196 2008 12 Santos 12 13 13 0 197 2008 3 Sao Paulo 18 11 9 15 198 2008 20 Sport 7 10 21 23 199 2008 13 Vitoria 13 9 16 6 QtdJogadores IdadeMedia Estrangeiros Valortotal MediaValor 0 51 248 0 27350000 536000 1 52 240 3 37650000 724000 2 50 234 6 61350000 1230000 3 48 232 2 34900000 727000 4 45 231 4 25550000 568000 195 43 251 3 6230000 145000 196 33 239 1 27850000 844000 197 30 239 1 46650000 1560000 198 30 250 1 15600000 520000 199 38 241 2 13450000 354000 GolsFeitos GolsSofridos 0 30 47 1 54 37 2 56 43 3 39 41 4 38 46 195 460 610 196 580 580 197 570 420 198 480 710 199 510 570 200 rows x 14 columns 23 Verificar os tipos de dados de todas as colunas no DataFrame printdfdtypes Ano int64 Pos int64 Clubes object Vitorias int64 Derrotas int64 Empates int64 Saldo int64 2 QtdJogadores int64 IdadeMedia float64 Estrangeiros int64 Valortotal int64 MediaValor int64 GolsFeitos object GolsSofridos object dtype object 30 Preencher valores ausentes com zero dfGolsFeitosfillna0 inplaceTrue dfGolsSofridosfillna0 inplaceTrue Remover pontos decimais e converter os dados para inteiros dfGolsFeitos dfGolsFeitosastypestrstrsplitstr0 astypeint dfGolsSofridos dfGolsSofridosastypestrstrsplitstr0 astypeint 31 Agora vamos realizar uma estatística descritiva básica dos dados descritiva dfdescribe Para os gráficos selecionaremos algumas variáveis chave para explorar visualmente import matplotlibpyplot as plt import seaborn as sns Definindo o estilo dos gráficos snssetstylewhitegrid Preparando a figura para múltiplos gráficos fig axs pltsubplots3 2 figsize15 15 Gráfico de distribuição de Idade Média snshistplotdfIdadeMedia kdeTrue axaxs0 0 colorskyblue axs0 0settitleDistribuição da Idade Média dos Jogadores Gráfico de distribuição de Valor Total do Elenco snshistplotdfValortotal kdeTrue axaxs0 1 colorlightgreen axs0 1settitleDistribuição do Valor Total do Elenco Gráfico de barras da quantidade de vitórias por clube Top 10 topvitorias dfgroupbyClubesVitoriassum sortvaluesascendingFalsehead10 topvitoriasplotkindbar axaxs1 0 colorcoral axs1 0settitleTop 10 Clubes com Mais Vitórias axs1 0tickparamsaxisx rotation45 Gráfico de barras do número de estrangeiros por clube Top 10 topestrangeiros dfgroupbyClubesEstrangeirossum sortvaluesascendingFalsehead10 topestrangeirosplotkindbar axaxs1 1 colorgold axs1 1settitleTop 10 Clubes com Mais Estrangeiros axs1 1tickparamsaxisx rotation45 3 Gráfico de dispersão entre Idade Média e Valor Total do Elenco snsscatterplotxIdadeMedia yValortotal datadf axaxs2 0 colorpurple axs2 0settitleIdade Média vs Valor Total do Elenco Gráfico de dispersão entre Gols Feitos e Gols Sofridos snsscatterplotxGolsFeitos yGolsSofridos datadf axaxs2 1 colorteal axs2 1settitleGols Feitos vs Gols Sofridos plttightlayout pltshow descritiva 4 Ano Pos Vitorias Derrotas Empates Saldo count 200000000 200000000 200000000 200000000 200000000 20000000 mean 2012500000 10500000 13855000 10280000 13855000 000000 std 2879489 5780751 3967706 2528551 4187079 1552725 min 2008000000 1000000 4000000 3000000 4000000 5700000 25 2010000000 5750000 11000000 9000000 11000000 900000 50 2012500000 10500000 14000000 10000000 14000000 100000 75 2015000000 15250000 16000000 12000000 17000000 1125000 max 2017000000 20000000 24000000 17000000 28000000 4000000 QtdJogadores Estrangeiros Valortotal MediaValor GolsFeitos count 20000000 200000000 2000000e02 2000000e02 199000000 mean 4323000 2885000 3925280e07 9124400e05 47045226 std 947661 2042704 2523390e07 5625510e05 10105652 min 2000000 0000000 2350000e06 6700000e04 18000000 25 3600000 1000000 1726250e07 3925000e05 39000000 50 4300000 3000000 3505000e07 8410000e05 48000000 75 5000000 4000000 5531250e07 1362500e06 53000000 max 7700000 8000000 1158000e08 2520000e06 77000000 GolsSofridos count 199000000 mean 46758794 std 9778461 min 22000000 25 40000000 50 46000000 75 53000000 max 75000000 Preparando a figura para os gráficos solicitados fig axs pltsubplots3 1 figsize10 15 Gráfico 1 Relação entre o Valor Total do Elenco e o Desempenho na Competição snsscatterplotxValortotal yPos datadf axaxs0 colorblue edgecolorw axs0settitleValor Total do Elenco vs Posição Final axs0setxlabelValor Total do Elenco axs0setylabelPosição Final axs0invertyaxis Inverter o eixo Y para mostrar a melhor posição no topo Gráfico 2 Impacto do Número de Estrangeiros no Sucesso dos Clubes snsboxplotxEstrangeiros yPos datadf axaxs1 palettecoolwarm axs1settitleNúmero de Estrangeiros vs Posição Final axs1setxlabelNúmero de Estrangeiros axs1setylabelPosição Final axs1invertyaxis Inverter o eixo Y para mostrar a melhor posição no topo Gráfico 3 Evolução do Desempenho dos Clubes ao Longo dos Anos Aqui vamos considerar a soma de vitórias derrotas e empates por ano 5 performanceano dfgroupbyAnoVitorias Derrotas Empatessum performanceanoplotaxaxs2 markero axs2settitleEvolução do Desempenho dos Clubes ao Longo dos Anos axs2setxlabelAno axs2setylabelTotal plttightlayout pltshow ipythoninput4339751e4919c10 FutureWarning Passing palette without assigning hue is deprecated and will be removed in v0140 Assign the x variable to hue and set legendFalse for the same effect snsboxplotxEstrangeiros yPos datadf axaxs1 palettecoolwarm 6 Valor Total do Elenco vs Posição Final Posição Final Valor Total do Elenco Número de Estrangeiros vs Posição Final Posição Final Número de Estrangeiros Evolução do Desempenho dos Clubes ao Longo dos Anos Total Ano Vitórias Derrotas Empates 33 from sklearndecomposition import PCA from sklearnpreprocessing import StandardScaler Removendo colunas que não serão utilizadas na PCA pcadata dfdropAno Clubes axis1 Tratando valores ausentes substituindo por a média da coluna pcadatafillnapcadatamean inplaceTrue Padronizando os dados scaler StandardScaler pcadatascaled scalerfittransformpcadata Aplicando PCA pca PCAncomponents2 Reduzindo para 2 componentes principais para facilitar a visualização pcaresult pcafittransformpcadatascaled Transformando o resultado em DataFrame para facilitar a visualização pcadf pdDataFramedatapcaresult columnsPrincipal Component 1 Principal Component 2 Calculando a variância explicada por cada componente explainedvariance pcaexplainedvarianceratio explainedvariance pcadfhead 33 array044351545 015349893 Principal Component 1 Principal Component 2 0 2861116 0123642 1 1331901 0204933 2 2092743 1232547 3 0533431 0220085 4 0537863 0266005 2 Regressão Linear Multipla 35 import pandas as pd import statsmodelsapi as sm Supondo que df é o seu DataFrame com as variáveis fornecidas Selecionando as variáveis independentes e dependentes X dfAno Vitorias Derrotas Empates Saldo QtdJogadores IdadeMedia Estrangeiros Valortotal MediaValor GolsFeitos GolsSofridos y dfPos Adicionando uma constante para o termo de interceptação X smaddconstantX 8 Criando o modelo de regressão model smOLSy X Ajustando o modelo aos dados results modelfit Imprimindo os resultados da regressão printresultssummary OLS Regression Results Dep Variable Pos Rsquared 0930 Model OLS Adj Rsquared 0926 Method Least Squares Fstatistic 2073 Date Mon 15 Apr 2024 Prob Fstatistic 446e101 Time 140636 LogLikelihood 36813 No Observations 200 AIC 7623 Df Residuals 187 BIC 8051 Df Model 12 Covariance Type nonrobust coef std err t Pt 0025 0975 const 1784224 116445 1532 0127 408137 51292 Ano 00760 0050 1532 0127 0022 0174 Vitorias 00538 1181 0046 0964 2383 2275 Derrotas 09858 1182 0834 0405 1345 3317 Empates 13840 1169 1184 0238 0922 3690 Saldo 00546 0040 1373 0171 0024 0133 QtdJogadores 00015 0024 0065 0949 0048 0045 IdadeMedia 02529 0130 1947 0053 0003 0509 Estrangeiros 00035 0069 0050 0960 0133 0140 Valortotal 1979e08 224e08 0883 0378 64e08 244e08 9 MediaValor 3276e07 959e07 0342 0733 156e06 222e06 GolsFeitos 00293 0043 0687 0493 0113 0055 GolsSofridos 00700 0031 2256 0025 0009 0131 Omnibus 4671 DurbinWatson 2063 ProbOmnibus 0097 JarqueBera JB 4468 Skew 0365 ProbJB 0107 Kurtosis 3065 Cond No 487e10 Notes 1 Standard Errors assume that the covariance matrix of the errors is correctly specified 2 The condition number is large 487e10 This might indicate that there are strong multicollinearity or other numerical problems Após realizar o modelo de regressão linear múltipla para entender os fatores que influenciam o desempenho dos clubes no campeonato observamos que o teste F indicando a significância do modelo como um todo apresentou um valor próximo de zero confirmando que pelo menos uma das variáveis independentes tem um efeito significativo na posição do clube No entanto ao analisar individualmente as variáveis independentes por meio do teste T utilizando um nível de significância de 5 notamos que nem todas as variáveis são estatisticamente significantes para explicar a posição dos clubes Para refinar o modelo e identificar as variáveis mais relevantes optamos por implementar a seleção backward um método iterativo que remove gradualmente as variáveis menos significativas do modelo Isso nos permitirá alcançar um modelo mais parcimonioso mantendo apenas as variáveis independentes que realmente contribuem para a explicação da posição no campeonato Ao finalizar o processo de seleção backward teremos um modelo simplificado e interpretável destacando as variáveis mais importantes para o sucesso dos clubes no campeonato 36 Adicione uma coluna constante para representar o termo de interceptação X smaddconstantX Implemente a seleção de backward while True model smOLSy Xfit Verifique as variáveis com o maior valorp pvalues modelpvalues1 Exclua o valorp da constante maxpvalue pvaluesmax if maxpvalue 005 Remova a variável com o maior valorp removeindex pvaluesidxmax X Xdropremoveindex axis1 else break 10 Exiba o modelo final printmodelsummary OLS Regression Results Dep Variable Pos Rsquared 0927 Model OLS Adj Rsquared 0926 Method Least Squares Fstatistic 4963 Date Mon 15 Apr 2024 Prob Fstatistic 190e108 Time 151533 LogLikelihood 37180 No Observations 200 AIC 7556 Df Residuals 194 BIC 7754 Df Model 5 Covariance Type nonrobust coef std err t Pt 0025 0975 const 262602 3095 8485 0000 32364 20156 Derrotas 09797 0049 19979 0000 0883 1076 Empates 13368 0037 35675 0000 1263 1411 IdadeMedia 02909 0122 2379 0018 0050 0532 Valortotal 1282e08 489e09 2620 0009 225e08 317e09 GolsSofridos 00364 0014 2656 0009 0009 0063 Omnibus 5011 DurbinWatson 2067 ProbOmnibus 0082 JarqueBera JB 4999 Skew 0386 ProbJB 00821 Kurtosis 2950 Cond No 130e09 Notes 1 Standard Errors assume that the covariance matrix of the errors is correctly specified 2 The condition number is large 13e09 This might indicate that there are strong multicollinearity or other numerical problems O modelo de regressão final selecionado por meio do método de backward revela que cerca de 927 da variação na posição dos clubes no campeonato pode ser explicada pelas variáveis incluídas no modelo Dentre essas variáveis algumas se destacam como preditores significativos da posição 11 do clube A análise dos coeficientes aponta que tanto o número de derrotas quanto o número de empates têm uma influência significativa com aumentos nessas variáveis associados a mudanças na posição do clube Além disso a idade média dos jogadores e o número de gols sofridos também emergem como fatores relevantes cada um contribuindo para explicar a posição do clube de forma distinta Por outro lado o valor total dos jogadores apresenta um efeito negativo na posição do clube sugerindo que clubes com investimentos mais elevados não necessariamente alcançam uma melhor posição no campeonato É importante ressaltar que todas as variáveis restantes no modelo mostraramse estatisticamente significativas reforçando sua relevância na explicação da posição do clube 201 Análise de Resíduos 37 import matplotlibpyplot as plt import statsmodelsapi as sm Obtendo os resíduos do modelo residuos modelresid Plotando os resíduos versus os valores previstos pltscattermodelfittedvalues residuos pltxlabelValores Previstos pltylabelResíduos plttitleAnálise de Resíduos Resíduos vs Valores Previstos pltaxhliney0 colorr linestyle Adicionando linha horizontal em y0 pltshow Plotando um histograma dos resíduos plthistresiduos bins20 pltxlabelResíduos pltylabelFrequência plttitleHistograma dos Resíduos pltshow Plotando o gráfico QQ dos resíduos smqqplotresiduos liner plttitleQQ Plot dos Resíduos pltshow 12 Análise de Resíduos Resíduos vs Valores Previstos Resíduos Valores Previstos Histograma dos Resíduos Frequência Resíduos Após examinar o histograma dos resíduos e o QQ Plot observase que os pressupostos da regressão foram atendidos A normalidade dos resíduos é fundamental pois garante que as estimativas dos coeficientes sejam válidas Aqui a distribuição dos resíduos parece seguir de perto uma distribuição normal o que é encorajador para a confiabilidade das estimativas Além disso a homocedasticidade da variância indica que a dispersão dos resíduos é constante em relação à variável independente Isso é importante porque as previsões do modelo tendem a ser menos precisas se a variabilidade dos erros não for constante No nosso caso não há evidências visuais de que a variância dos resíduos mude à medida que a posição do clube no campeonato varia Quanto à independência dos resíduos sua validação sugere que não há correlação serial entre os resíduos Isso é crucial para evitar vieses nas estimativas dos parâmetros e para garantir que as previsões não sejam influenciadas por padrões temporais nos dados Portanto com base nessas análises podemos ter confiança na adequação do modelo de regressão linear múltipla para explicar a posição dos clubes no campeonato considerando as variáveis selecionadas 3 Análise de Correspondência Múltipla A análise de correspondência múltipla é uma técnica estatística usada quando se tem variáveis categóricas no banco de dados e deseja explorar a relação entre essas variáveis No entanto no 15 conjunto de dados a única variável categórica é Clubes Isso significa que não há múltiplas variáveis categóricas para analisar em relação umas às outras Portanto como a análise se concentra principalmente em variáveis numéricas e o objetivo central é entender a relação entre essas variáveis numéricas e a posição dos clubes no campeonato não há necessidade de realizar a análise de correspondência múltipla 4 Análise de Componentes Principais e Fatorial 46 import pandas as pd from sklearndecomposition import PCA import matplotlibpyplot as plt Excluir colunas não numéricas numericdata dfselectdtypesincludeint float Tratar dados omissos numericdatadropnainplaceTrue Remover observações com dados omissos Padronizando os dados scaler StandardScaler pcadatascaled scalerfittransformnumericdata Aplicar PCA pca PCA pcafitpcadatascaled Plotar a variância explicada por cada componente pltplotrange1 lenpcaexplainedvarianceratio 1 pca explainedvarianceratio markero pltxlabelNúmero de Componentes Principais pltylabelVariância Explicada plttitleVariância Explicada por Componente Principal pltshow 16 Variância Total Explicada pelos Componentes Principais 10000 47 Calcular a variância explicada por cada componente principal explainedvarianceratio pcaexplainedvarianceratio Criar DataFrame para armazenar os resultados resultdf pdDataFrame Componente Principal range1 lenexplainedvarianceratio 1 Variância Explicada explainedvarianceratio Calcular a explicação acumulada resultdfExplicação Acumulada resultdfVariância Explicadacumsum Exibir a tabela printresultdf Componente Principal Variância Explicada Explicação Acumulada 0 1 0409548 0409548 1 2 0152883 0562431 17 2 3 0107349 0669780 3 4 0100620 0770400 4 5 0076757 0847156 5 6 0061271 0908427 6 7 0037447 0945874 7 8 0035960 0981834 8 9 0011769 0993603 9 10 0003353 0996956 10 11 0001584 0998540 11 12 0001443 0999982 12 13 0000018 1000000 A análise de componentes principais PCA revelou que cinco componentes principais explicam aproximadamente 9084 da variação nos dados Isso sugere que a dimensionalidade dos seus dados pode ser reduzida de forma significativa sem perder muita informação A redução da dimen sionalidade pode simplificar a interpretação dos dados e muitas vezes melhorar o desempenho dos modelos 5 Análise de Discriminante 50 import numpy as np import pandas as pd import seaborn as sns import matplotlibpyplot as plt from sklearndecomposition import PCA Calcular os autovalores e autovetores eigenvalues pcaexplainedvariance explainedvarianceratio pcaexplainedvarianceratio Calcular a explicação acumulada cumulativeexplainedvarianceratio npcumsumexplainedvarianceratio Criar dataframe para armazenar os resultados pcaresults pdDataFrame Component nparange1 lenexplainedvarianceratio 1 Explained Variance Ratio explainedvarianceratio Cumulative Explained Variance Ratio cumulativeexplainedvarianceratio Plotar as proporções de variância explicada para cada componente principal pltfigurefigsize10 6 snsbarplotxComponent yExplained Variance Ratio datapcaresults colorskyblue plttitleProporção de Variância Explicada por Componente Principal pltxlabelComponente Principal pltylabelProporção de Variância Explicada 18 pltxticksrotation45 pltgridaxisy linestyle alpha07 pltshow Plotar a explicação acumulada pltfigurefigsize10 6 pltplotnparange1 lenexplainedvarianceratio 1 cumulativeexplainedvarianceratio markero colorgreen plttitleExplicação Acumulada da Variância pltxlabelNúmero de Componentes Principais pltylabelExplained Variance Ratio Acumulada pltxticksnparange1 lenexplainedvarianceratio 1 pltgridTrue linestyle alpha07 pltshow 19 52 from sklearnpreprocessing import LabelEncoder Converter variáveis categóricas em variáveis numéricas labelencoder LabelEncoder Xencoded Xapplylabelencoderfittransform Dividir os dados em conjuntos de treinamento e teste Xtrain Xtest ytrain ytest traintestsplitXencoded y testsize0 2 randomstate42 Inicializar e ajustar o modelo de análise discriminante linear lda LinearDiscriminantAnalysis ldafitXtrain ytrain Prever as classes no conjunto de teste ypred ldapredictXtest Calcular métricas de desempenho accuracy accuracyscoreytest ypred precision precisionscoreytest ypred averageweighted recall recallscoreytest ypred averageweighted f1 f1scoreytest ypred averageweighted Imprimir as métricas 20 printMétricas de Desempenho do Modelo printAcurácia accuracy printPrecisão precision printSensibilidade Recall recall printEscore F1 f1 Criar tabela de confusão confmatrix confusionmatrixytest ypred Plotar matriz de confusão pltfigurefigsize10 8 snsheatmapconfmatrix annotTrue cmapBlues fmtd cbarFalse plttitleMatriz de Confusão do Modelo pltxlabelClasse Predita pltylabelClasse Real pltshow usrlocallibpython310distpackagessklearnmetricsclassificationpy1344 UndefinedMetricWarning Precision is illdefined and being set to 00 in labels with no predicted samples Use zerodivision parameter to control this behavior warnprfaverage modifier msgstart lenresult usrlocallibpython310distpackagessklearnmetricsclassificationpy1344 UndefinedMetricWarning Recall is illdefined and being set to 00 in labels with no true samples Use zerodivision parameter to control this behavior warnprfaverage modifier msgstart lenresult Métricas de Desempenho do Modelo Acurácia 02 Precisão 017375 Sensibilidade Recall 02 Escore F1 016142857142857142 21 As métricas de desempenho do modelo de análise discriminante linear LDA fornecem uma avali ação da capacidade de classificar as posições dos clubes de futebol com base nas variáveis fornecidas A acurácia que indica a proporção de previsões corretas em relação ao total de previsões revela que apenas 20 das instâncias no conjunto de teste foram classificadas corretamente pelo modelo Isso sugere que o modelo tem um desempenho significativamente baixo e não é capaz de prever com precisão a posição dos clubes Além disso a precisão do modelo que representa a proporção de verdadeiros positivos em relação ao total de instâncias previstas como positivas é de apenas 1738 Isso indica que o modelo tem uma alta taxa de falsos positivos ou seja muitas instâncias foram incorretamente classificadas como positivas Da mesma forma a sensibilidade que indica a proporção de verdadeiros positivos em relação ao total de instâncias que realmente são positivas é de apenas 20 Isso sugere que o modelo também tem um alto número de falsos negativos ou instâncias que foram incorretamente classificadas como negativas Por fim o escore F1 que é uma média harmônica entre precisão e sensibilidade é de apenas 01614 indicando um desempenho geral muito baixo do modelo Com base nessas métricas concluímos que o modelo de análise discriminante linear não é eficaz na classificação das posições dos clubes de futebol com base nas variáveis disponíveis Seria necessário revisar e possivelmente reformular 22 o modelo bem como considerar a inclusão de mais variáveis ou a utilização de algoritmos de aprendizado de máquina mais avançados para melhorar o desempenho e a precisão das previsões 23 Introdução A análise do desempenho de clubes de futebol em campeonatos é uma área de interesse constante para gestores esportivos torcedores e analistas Compreender os fatores que influenciam o sucesso ou fracasso de um clube pode fornecer resultados para aprimorar estratégias de gestão recrutamento de jogadores e táticas de jogo Sendo assim o presente trabalho busca explorar um conjunto de dados que contém informações sobre diversos clubes de futebol incluindo suas posições finais em campeonatos estatísticas de vitórias derrotas e empates características demográficas dos jogadores dados financeiros e estatísticas de desempenho em campo como gols feitos e gols sofridos O objetivo principal desta análise é identificar os principais fatores que contribuem para o desempenho dos clubes em campeonatos de futebol Para isso utilizamos técnicas de análise estatística como regressão linear múltipla análise de componentes principais e análise discriminante para explorar a relação entre as variáveis disponíveis e a posição final dos clubes nos campeonatos Inicialmente foi realizado uma análise exploratória dos dados identificando suas características e distribuições Em seguida aplicado os modelos de regressão linear múltipla para entender como as diferentes variáveis estão relacionadas à posição final dos clubes Também foi utilizado a seleção de backward para identificar as variáveis mais relevantes para o modelo visando aprimorar sua precisão e interpretabilidade Além disso foi realizado uma análise de componentes principais para reduzir a dimensionalidade dos dados e identificar os principais padrões de variabilidade entre os clubes Por fim foi explorado a análise discriminante para avaliar a capacidade de um modelo em classificar corretamente as posições dos clubes com base em suas características Vamos começar lendo o arquivo para entender a estrutura dos dados e suas variáveis import pandas as pd Caminho do arquivo filepath TabelaClubes 2csv Lendo o arquivo CSV com delimitador df pdreadcsvfilepath delimiter decimal printdf Ano Pos Clubes Vitorias Derrotas Empates Saldo 0 2017 18 AmericaMG 10 10 18 17 1 2017 7 AthleticoPR 16 9 13 17 2 2017 6 AtleticoMG 17 8 13 13 3 2017 11 Bahia 12 12 14 2 4 2017 9 Botafogo 13 12 13 8 195 2008 18 Santo Andre 11 8 19 15 196 2008 12 Santos 12 13 13 0 197 2008 3 Sao Paulo 18 11 9 15 198 2008 20 Sport 7 10 21 23 199 2008 13 Vitoria 13 9 16 6 QtdJogadores IdadeMedia Estrangeiros Valortotal MediaValor 0 51 248 0 27350000 536000 1 52 240 3 37650000 724000 2 50 234 6 61350000 1230000 3 48 232 2 34900000 727000 4 45 231 4 25550000 568000 195 43 251 3 6230000 145000 196 33 239 1 27850000 844000 197 30 239 1 46650000 1560000 198 30 250 1 15600000 520000 199 38 241 2 13450000 354000 GolsFeitos GolsSofridos 0 30 47 1 54 37 2 56 43 3 39 41 4 38 46 195 460 610 196 580 580 197 570 420 198 480 710 199 510 570 200 rows x 14 columns Verificar os tipos de dados de todas as colunas no DataFrame printdfdtypes Ano int64 Pos int64 Clubes object Vitorias int64 Derrotas int64 Empates int64 Saldo int64 QtdJogadores int64 IdadeMedia float64 Estrangeiros int64 Valortotal int64 MediaValor int64 GolsFeitos object GolsSofridos object dtype object Preencher valores ausentes com zero dfGolsFeitosfillna0 inplaceTrue dfGolsSofridosfillna0 inplaceTrue Remover pontos decimais e converter os dados para inteiros dfGolsFeitos dfGolsFeitosastypestrstrsplitstr0astypeint dfGolsSofridos dfGolsSofridosastypestrstrsplitstr0astypeint Agora vamos realizar uma estatística descritiva básica dos dados descritiva dfdescribe Para os gráficos selecionaremos algumas variáveis chave para explorar visualmente import matplotlibpyplot as plt import seaborn as sns Definindo o estilo dos gráficos snssetstylewhitegrid Preparando a figura para múltiplos gráficos fig axs pltsubplots3 2 figsize15 15 Gráfico de distribuição de Idade Média snshistplotdfIdadeMedia kdeTrue axaxs0 0 colorskyblue axs0 0settitleDistribuição da Idade Média dos Jogadores Gráfico de distribuição de Valor Total do Elenco snshistplotdfValortotal kdeTrue axaxs0 1 colorlightgreen axs0 1settitleDistribuição do Valor Total do Elenco Gráfico de barras da quantidade de vitórias por clube Top 10 topvitorias dfgroupbyClubes VitoriassumsortvaluesascendingFalsehead10 topvitoriasplotkindbar axaxs1 0 colorcoral axs1 0settitleTop 10 Clubes com Mais Vitórias axs1 0tickparamsaxisx rotation45 Gráfico de barras do número de estrangeiros por clube Top 10 topestrangeiros dfgroupbyClubes EstrangeirossumsortvaluesascendingFalsehead10 topestrangeirosplotkindbar axaxs1 1 colorgold axs1 1settitleTop 10 Clubes com Mais Estrangeiros axs1 1tickparamsaxisx rotation45 Gráfico de dispersão entre Idade Média e Valor Total do Elenco snsscatterplotxIdadeMedia yValortotal datadf axaxs2 0 colorpurple axs2 0settitleIdade Média vs Valor Total do Elenco Gráfico de dispersão entre Gols Feitos e Gols Sofridos snsscatterplotxGolsFeitos yGolsSofridos datadf axaxs2 1 colorteal axs2 1settitleGols Feitos vs Gols Sofridos plttightlayout pltshow Distribuição da Idade Média dos Jogadores Count IdadeMedia Top 10 Clubes com Mais Vitórias Gremio Corinthians Cruzeíro Sao Paulo AtleticoMG Santos Criminense Flamengo Nacional descritiva Ano Pos Vitorias Derrotas Empates Saldo QtdJogadore s Estrangeiro count 200000000 200000000 200000000 200000000 200000000 20000000 20000000 200000000 mean 2012500000 10500000 13855000 10280000 13855000 000000 4323000 2885000 std 2879489 5780751 3967706 2528551 4187079 1552725 947661 2042704 min 2008000000 1000000 4000000 3000000 4000000 5700000 2000000 0000000 25 2010000000 5750000 11000000 9000000 11000000 900000 3600000 1000000 50 2012500000 10500000 14000000 10000000 14000000 100000 4300000 3000000 75 2015000000 15250000 16000000 12000000 17000000 1125000 5000000 4000000 max 2017000000 20000000 24000000 17000000 28000000 4000000 7700000 8000000 Preparando a figura para os gráficos solicitados fig axs pltsubplots3 1 figsize10 15 Gráfico 1 Relação entre o Valor Total do Elenco e o Desempenho na Competição snsscatterplotxValortotal yPos datadf axaxs0 colorblue edgecolorw axs0settitleValor Total do Elenco vs Posição Final axs0setxlabelValor Total do Elenco axs0setylabelPosição Final axs0invertyaxis Inverter o eixo Y para mostrar a melhor posição no topo Gráfico 2 Impacto do Número de Estrangeiros no Sucesso dos Clubes snsboxplotxEstrangeiros yPos datadf axaxs1 palettecoolwarm axs1settitleNúmero de Estrangeiros vs Posição Final axs1setxlabelNúmero de Estrangeiros axs1setylabelPosição Final axs1invertyaxis Inverter o eixo Y para mostrar a melhor posição no topo Gráfico 3 Evolução do Desempenho dos Clubes ao Longo dos Anos Aqui vamos considerar a soma de vitórias derrotas e empates por ano performanceano dfgroupbyAnoVitorias Derrotas Empatessum performanceanoplotaxaxs2 markero axs2settitleEvolução do Desempenho dos Clubes ao Longo dos Anos axs2setxlabelAno axs2setylabelTotal plttightlayout pltshow ipythoninput4339751e4919c10 FutureWarning Passing palette without assigning hue is deprecated and will be removed in v0140 Assign the x variable to hue and set legendFalse for the same effect snsboxplotxEstrangeiros yPos datadf axaxs1 palettecoolwarm In 33 from sklearndecomposition import PCA from sklearnpreprocessing import StandardScaler Removendo colunas que não serão utilizadas na PCA pcadata dfdropAno Clubes axis1 Tratando valores ausentes substituindo por a média da coluna pcadatafillnapcadatamean inplaceTrue Padronizando os dados scaler StandardScaler pcadatascaled scalerfittransformpcadata Aplicando PCA pca PCAncomponents2 Reduzindo para 2 componentes principais para facilitar a visualização pcaresult pcafittransformpcadatascaled Transformando o resultado em DataFrame para facilitar a visualização pcadf pdDataFramedatapcaresult columnsPrincipal Component 1 Principal Component 2 Calculando a variância explicada por cada componente explainedvariance pcaexplainedvarianceratio explainedvariance pcadfhead array044351545 015349893 Principal Component 1 Principal Component 2 0 2861116 0123642 1 1331901 0204933 2 2092743 1232547 3 0533431 0220085 4 0537863 0266005 Regressão Linear Multipla import pandas as pd import statsmodelsapi as sm Supondo que df é o seu DataFrame com as variáveis fornecidas Selecionando as variáveis independentes e dependentes X dfAno Vitorias Derrotas Empates Saldo QtdJogadores IdadeMedia Estrangeiros Valortotal MediaValor GolsFeitos GolsSofridos y dfPos Adicionando uma constante para o termo de interceptação X smaddconstantX Criando o modelo de regressão model smOLSy X Ajustando o modelo aos dados results modelfit Imprimindo os resultados da regressão printresultssummary OLS Regression Results Dep Variable Pos Rsquared 0930 Model OLS Adj Rsquared 0926 Method Least Squares Fstatistic 2073 Date Mon 15 Apr 2024 Prob Fstatistic 446e101 Time 140636 LogLikelihood 36813 No Observations 200 AIC 7623 Df Residuals 187 BIC 8051 Df Model 12 Covariance Type nonrobust coef std err t Pt 0025 0975 const 1784224 116445 1532 0127 408137 51292 Ano 00760 0050 1532 0127 0022 0174 Vitorias 00538 1181 0046 0964 2383 2275 Derrotas 09858 1182 0834 0405 1345 3317 Empates 13840 1169 1184 0238 0922 3690 Saldo 00546 0040 1373 0171 0024 0133 QtdJogadores 00015 0024 0065 0949 0048 0045 IdadeMedia 02529 0130 1947 0053 0003 0509 Estrangeiros 00035 0069 0050 0960 0133 0140 Valortotal 1979e08 224e08 0883 0378 64e08 244e08 MediaValor 3276e07 959e07 0342 0733 156e06 222e06 GolsFeitos 00293 0043 0687 0493 0113 0055 GolsSofridos 00700 0031 2256 0025 0009 0131 Omnibus 4671 DurbinWatson 2063 ProbOmnibus 0097 JarqueBera JB 4468 Skew 0365 ProbJB 0107 Kurtosis 3065 Cond No 487e10 Notes 1 Standard Errors assume that the covariance matrix of the errors is correctly specified 2 The condition number is large 487e10 This might indicate that there are strong multicollinearity or other numerical problems Após realizar o modelo de regressão linear múltipla para entender os fatores que influenciam o desempenho dos clubes no campeonato observamos que o teste F indicando a significância do modelo como um todo apresentou um valor próximo de zero confirmando que pelo menos uma das variáveis independentes tem um efeito significativo na posição do clube No entanto ao analisar individualmente as variáveis independentes por meio do teste T utilizando um nível de significância de 5 notamos que nem todas as variáveis são estatisticamente significantes para explicar a posição dos clubes Para refinar o modelo e identificar as variáveis mais relevantes optamos por implementar a seleção backward um método iterativo que remove gradualmente as variáveis menos significativas do modelo Isso nos permitirá alcançar um modelo mais parcimonioso mantendo apenas as variáveis independentes que realmente contribuem para a explicação da posição no campeonato Ao finalizar o processo de seleção backward teremos um modelo simplificado e interpretável destacando as variáveis mais importantes para o sucesso dos clubes no campeonato Adicione uma coluna constante para representar o termo de interceptação X smaddconstantX Implemente a seleção de backward while True model smOLSy Xfit Verifique as variáveis com o maior valorp pvalues modelpvalues1 Exclua o valorp da constante maxpvalue pvaluesmax if maxpvalue 005 Remova a variável com o maior valorp removeindex pvaluesidxmax X Xdropremoveindex axis1 else break Exiba o modelo final printmodelsummary OLS Regression Results Dep Variable Pos Rsquared 0927 Model OLS Adj Rsquared 0926 Method Least Squares Fstatistic 4963 Date Mon 15 Apr 2024 Prob Fstatistic 190e108 Time 151533 LogLikelihood 37180 No Observations 200 AIC 7556 Df Residuals 194 BIC 7754 Df Model 5 Covariance Type nonrobust coef std err t Pt 0025 0975 const 262602 3095 8485 0000 32364 20156 Derrotas 09797 0049 19979 0000 0883 1076 Empates 13368 0037 35675 0000 1263 1411 IdadeMedia 02909 0122 2379 0018 0050 0532 Valortotal 1282e08 489e09 2620 0009 225e08 317e09 GolsSofridos 00364 0014 2656 0009 0009 0063 Omnibus 5011 DurbinWatson 2067 ProbOmnibus 0082 JarqueBera JB 4999 Skew 0386 ProbJB 00821 Kurtosis 2950 Cond No 130e09 Notes 1 Standard Errors assume that the covariance matrix of the errors is correctly specified 2 The condition number is large 13e09 This might indicate that there are strong multicollinearity or other numerical problems O modelo de regressão final selecionado por meio do método de backward revela que cerca de 927 da variação na posição dos clubes no campeonato pode ser explicada pelas variáveis incluídas no modelo Dentre essas variáveis algumas se destacam como preditores significativos da posição do clube A análise dos coeficientes aponta que tanto o número de derrotas quanto o número de empates têm uma influência significativa com aumentos nessas variáveis associados a mudanças na posição do clube Além disso a idade média dos jogadores e o número de gols sofridos também emergem como fatores relevantes cada um contribuindo para explicar a posição do clube de forma distinta Por outro lado o valor total dos jogadores apresenta um efeito negativo na posição do clube sugerindo que clubes com investimentos mais elevados não necessariamente alcançam uma melhor posição no campeonato É importante ressaltar que todas as variáveis restantes no modelo mostraramse estatisticamente significativas reforçando sua relevância na explicação da posição do clube Análise de Resíduos import matplotlibpyplot as plt import statsmodelsapi as sm Obtendo os resíduos do modelo residuos modelresid Plotando os resíduos versus os valores previstos pltscattermodelfittedvalues residuos pltxlabelValores Previstos pltylabelResíduos plttitleAnálise de Resíduos Resíduos vs Valores Previstos pltaxhliney0 colorr linestyle Adicionando linha horizontal em y0 pltshow Plotando um histograma dos resíduos plthistresiduos bins20 pltxlabelResíduos pltylabelFrequência plttitleHistograma dos Resíduos pltshow Plotando o gráfico QQ dos resíduos smqqplotresiduos liner plttitleQQ Plot dos Resíduos pltshow Análise de Resíduos Resíduos vs Valores Previstos Resíduos Valores Previstos Histograma dos Resíduos Frequência Resíduos Após examinar o histograma dos resíduos e o QQ Plot observase que os pressupostos da regressão foram atendidos A normalidade dos resíduos é fundamental pois garante que as estimativas dos coeficientes sejam válidas Aqui a distribuição dos resíduos parece seguir de perto uma distribuição normal o que é encorajador para a confiabilidade das estimativas Além disso a homocedasticidade da variância indica que a dispersão dos resíduos é constante em relação à variável independente Isso é importante porque as previsões do modelo tendem a ser menos precisas se a variabilidade dos erros não for constante No nosso caso não há evidências visuais de que a variância dos resíduos mude à medida que a posição do clube no campeonato varia Quanto à independência dos resíduos sua validação sugere que não há correlação serial entre os resíduos Isso é crucial para evitar vieses nas estimativas dos parâmetros e para garantir que as previsões não sejam influenciadas por padrões temporais nos dados Portanto com base nessas análises podemos ter confiança na adequação do modelo de regressão linear múltipla para explicar a posição dos clubes no campeonato considerando as variáveis selecionadas Análise de Correspondência Múltipla A análise de correspondência múltipla é uma técnica estatística usada quando se tem variáveis categóricas no banco de dados e deseja explorar a relação entre essas variáveis No entanto no conjunto de dados a única variável categórica é Clubes Isso significa que não há múltiplas variáveis categóricas para analisar em relação umas às outras Portanto como a análise se concentra principalmente em variáveis numéricas e o objetivo central é entender a relação entre essas variáveis numéricas e a posição dos clubes no campeonato não há necessidade de realizar a análise de correspondência múltipla Análise de Componentes Principais e Fatorial import pandas as pd from sklearndecomposition import PCA import matplotlibpyplot as plt Excluir colunas não numéricas numericdata dfselectdtypesincludeint float Tratar dados omissos numericdatadropnainplaceTrue Remover observações com dados omissos Padronizando os dados scaler StandardScaler pcadatascaled scalerfittransformnumericdata Aplicar PCA pca PCA pcafitpcadatascaled Plotar a variância explicada por cada componente pltplotrange1 lenpcaexplainedvarianceratio 1 pcaexplainedvarianceratio markero pltxlabelNúmero de Componentes Principais pltylabelVariância Explicada plttitleVariância Explicada por Componente Principal pltshow Variância Total Explicada pelos Componentes Principais 10000 In 47 Calcular a variância explicada por cada componente principal explainedvarianceratio pcaexplainedvarianceratio Criar DataFrame para armazenar os resultados resultdf pdDataFrame Componente Principal range1 lenexplainedvarianceratio 1 Variância Explicada explainedvarianceratio Calcular a explicação acumulada resultdfExplicação Acumulada resultdfVariância Explicadacumsum Exibir a tabela printresultdf Componente Principal Variância Explicada Explicação Acumulada 0 1 0409548 0409548 1 2 0152883 0562431 2 3 0107349 0669780 3 4 0100620 0770400 4 5 0076757 0847156 5 6 0061271 0908427 6 7 0037447 0945874 7 8 0035960 0981834 8 9 0011769 0993603 9 10 0003353 0996956 10 11 0001584 0998540 11 12 0001443 0999982 12 13 0000018 1000000 A análise de componentes principais PCA revelou que cinco componentes principais explicam aproximadamente 9084 da variação nos dados Isso sugere que a dimensionalidade dos seus dados pode ser reduzida de forma significativa sem perder muita informação A redução da dimensionalidade pode simplificar a interpretação dos dados e muitas vezes melhorar o desempenho dos modelos Análise de Discriminante import numpy as np import pandas as pd import seaborn as sns import matplotlibpyplot as plt from sklearndecomposition import PCA Calcular os autovalores e autovetores eigenvalues pcaexplainedvariance explainedvarianceratio pcaexplainedvarianceratio Calcular a explicação acumulada cumulativeexplainedvarianceratio npcumsumexplainedvarianceratio Criar dataframe para armazenar os resultados pcaresults pdDataFrame Component nparange1 lenexplainedvarianceratio 1 Explained Variance Ratio explainedvarianceratio Cumulative Explained Variance Ratio cumulativeexplainedvarianceratio Plotar as proporções de variância explicada para cada componente principal pltfigurefigsize10 6 snsbarplotxComponent yExplained Variance Ratio datapcaresults colorskyblue plttitleProporção de Variância Explicada por Componente Principal pltxlabelComponente Principal pltylabelProporção de Variância Explicada pltxticksrotation45 pltgridaxisy linestyle alpha07 pltshow Plotar a explicação acumulada pltfigurefigsize10 6 pltplotnparange1 lenexplainedvarianceratio 1 cumulativeexplainedvarianceratio markero colorgreen plttitleExplicação Acumulada da Variância pltxlabelNúmero de Componentes Principais pltylabelExplained Variance Ratio Acumulada pltxticksnparange1 lenexplainedvarianceratio 1 pltgridTrue linestyle alpha07 pltshow from sklearnpreprocessing import LabelEncoder Converter variáveis categóricas em variáveis numéricas labelencoder LabelEncoder Xencoded Xapplylabelencoderfittransform Dividir os dados em conjuntos de treinamento e teste Xtrain Xtest ytrain ytest traintestsplitXencoded y testsize02 randomstate42 Inicializar e ajustar o modelo de análise discriminante linear lda LinearDiscriminantAnalysis ldafitXtrain ytrain Prever as classes no conjunto de teste ypred ldapredictXtest Calcular métricas de desempenho accuracy accuracyscoreytest ypred precision precisionscoreytest ypred averageweighted recall recallscoreytest ypred averageweighted f1 f1scoreytest ypred averageweighted Imprimir as métricas printMétricas de Desempenho do Modelo printAcurácia accuracy printPrecisão precision printSensibilidade Recall recall printEscore F1 f1 Criar tabela de confusão confmatrix confusionmatrixytest ypred Plotar matriz de confusão pltfigurefigsize10 8 snsheatmapconfmatrix annotTrue cmapBlues fmtd cbarFalse plttitleMatriz de Confusão do Modelo pltxlabelClasse Predita pltylabelClasse Real pltshow usrlocallibpython310distpackagessklearnmetrics classificationpy1344 UndefinedMetricWarning Precision is ill defined and being set to 00 in labels with no predicted samples Use zerodivision parameter to control this behavior warnprfaverage modifier msgstart lenresult usrlocallibpython310distpackagessklearnmetrics classificationpy1344 UndefinedMetricWarning Recall is illdefined and being set to 00 in labels with no true samples Use zerodivision parameter to control this behavior warnprfaverage modifier msgstart lenresult Métricas de Desempenho do Modelo Acurácia 02 Precisão 017375 Sensibilidade Recall 02 Escore F1 016142857142857142 As métricas de desempenho do modelo de análise discriminante linear LDA fornecem uma avaliação da capacidade de classificar as posições dos clubes de futebol com base nas variáveis fornecidas A acurácia que indica a proporção de previsões corretas em relação ao total de previsões revela que apenas 20 das instâncias no conjunto de teste foram classificadas corretamente pelo modelo Isso sugere que o modelo tem um desempenho significativamente baixo e não é capaz de prever com precisão a posição dos clubes Além disso a precisão do modelo que representa a proporção de verdadeiros positivos em relação ao total de instâncias previstas como positivas é de apenas 1738 Isso indica que o modelo tem uma alta taxa de falsos positivos ou seja muitas instâncias foram incorretamente classificadas como positivas Da mesma forma a sensibilidade que indica a proporção de verdadeiros positivos em relação ao total de instâncias que realmente são positivas é de apenas 20 Isso sugere que o modelo também tem um alto número de falsos negativos ou instâncias que foram incorretamente classificadas como negativas Por fim o escore F1 que é uma média harmônica entre precisão e sensibilidade é de apenas 01614 indicando um desempenho geral muito baixo do modelo Com base nessas métricas concluímos que o modelo de análise discriminante linear não é eficaz na classificação das posições dos clubes de futebol com base nas variáveis disponíveis Seria necessário revisar e possivelmente reformular o modelo bem como considerar a inclusão de mais variáveis ou a utilização de algoritmos de aprendizado de máquina mais avançados para melhorar o desempenho e a precisão das previsões