<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Arquivos Professores colaboradores - Estatidados</title>
	<atom:link href="http://estatidados.com.br/category/professores-colaboradores/feed/" rel="self" type="application/rss+xml" />
	<link>http://estatidados.com.br/category/professores-colaboradores/</link>
	<description>Comunidade de Estatística</description>
	<lastBuildDate>Mon, 05 Jun 2023 19:40:27 +0000</lastBuildDate>
	<language>pt-BR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<item>
		<title>Por que a Ciência de Dados é uma Carreira Promissora no Mercado Atual em 2023</title>
		<link>http://estatidados.com.br/por-que-a-ciencia-de-dados-e-uma-carreira-promissora-no-mercado-atual-em-2023/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=por-que-a-ciencia-de-dados-e-uma-carreira-promissora-no-mercado-atual-em-2023</link>
		
		<dc:creator><![CDATA[Ludmila]]></dc:creator>
		<pubDate>Mon, 05 Jun 2023 19:40:26 +0000</pubDate>
				<category><![CDATA[ciencia de dados]]></category>
		<category><![CDATA[Estatística]]></category>
		<category><![CDATA[Thiago Marques]]></category>
		<category><![CDATA[cienciadedados]]></category>
		<category><![CDATA[estatistica]]></category>
		<guid isPermaLink="false">http://estatidados.com.br/?p=756</guid>

					<description><![CDATA[<p>Em um mundo cada vez mais orientado por dados, a Ciência de Dados emergiu como uma das carreiras mais promissoras e relevantes da atualidade. Com o avanço da tecnologia e a explosão na geração de dados, profissionais especializados em Ciência de Dados são altamente valorizados pelas empresas de todos os setores. Neste artigo, vamos explorar as razões pelas quais a Ciência de Dados é uma carreira tão promissora no mercado atual em 2023.</p>
<p>O post <a href="http://estatidados.com.br/por-que-a-ciencia-de-dados-e-uma-carreira-promissora-no-mercado-atual-em-2023/">Por que a Ciência de Dados é uma Carreira Promissora no Mercado Atual em 2023</a> apareceu primeiro em <a href="http://estatidados.com.br">Estatidados</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-full"><img fetchpriority="high" decoding="async" width="960" height="678" src="http://estatidados.com.br/wp-content/uploads/2023/06/ball-63527_960_720.jpg" alt="" class="wp-image-757" srcset="http://estatidados.com.br/wp-content/uploads/2023/06/ball-63527_960_720.jpg 960w, http://estatidados.com.br/wp-content/uploads/2023/06/ball-63527_960_720-300x212.jpg 300w, http://estatidados.com.br/wp-content/uploads/2023/06/ball-63527_960_720-768x542.jpg 768w, http://estatidados.com.br/wp-content/uploads/2023/06/ball-63527_960_720-200x141.jpg 200w, http://estatidados.com.br/wp-content/uploads/2023/06/ball-63527_960_720-354x250.jpg 354w, http://estatidados.com.br/wp-content/uploads/2023/06/ball-63527_960_720-400x283.jpg 400w, http://estatidados.com.br/wp-content/uploads/2023/06/ball-63527_960_720-673x475.jpg 673w" sizes="(max-width: 960px) 100vw, 960px" /></figure>



<p>Em um mundo cada vez mais orientado por dados, a Ciência de Dados emergiu como uma das carreiras mais promissoras e relevantes da atualidade. Com o avanço da tecnologia e a explosão na geração de dados, profissionais especializados em Ciência de Dados são altamente valorizados pelas empresas de todos os setores. Neste artigo, vamos explorar as razões pelas quais a Ciência de Dados é uma carreira tão promissora no mercado atual em 2023.</p>



<p><strong>Explosão de dados</strong>:</p>



<p>Vivemos em uma era em que a quantidade de <strong>dados gerados diariamente é imensa</strong>. Empresas, governos e indivíduos estão capturando e armazenando uma enorme quantidade de informações. A Ciência de Dados permite <strong>extrair valor </strong>desses <strong>dados</strong>,<strong> transformando-os</strong> em <strong>insights valiosos</strong> que podem <strong>impulsionar o sucesso</strong> das organizações.</p>



<p>Tomada de <strong>decisão </strong>baseada em <strong>dados</strong>:</p>



<p>A <strong>tomada de decisão baseada em dados</strong> se tornou uma prática <strong>essencial </strong>para as empresas. Os dados são utilizados para identificar <strong>tendências</strong>, <strong>prever comportamentos</strong> e tomar <strong>decisões estratégicas fundamentadas</strong>. Profissionais de Ciência de Dados desempenham um papel fundamental nesse processo, fornecendo <strong>análises e insights</strong> que <strong>orientam as decisões de negócio.</strong></p>



<p>Demandas por <strong>insights acionáveis</strong>:</p>



<p>As <strong>empresas </strong>estão cada vez mais buscando <strong>insights acionáveis</strong> ​​que as <strong>ajudem </strong>a obter <strong>vantagem competitiva</strong>. Os profissionais de <strong>Ciência de Dados</strong> são treinados para <strong>identificar padrões</strong>, <strong>tendências </strong>e <strong>relações ocultas </strong>nos dados, fornecendo informações <strong>valiosas </strong>para melhorar processos, <strong>otimizar estratégias de marketing</strong>, <strong>personalizar experiências</strong> de cliente e muito mais.</p>



<p><strong>Automação e Inteligência Artificial (IA)</strong>:</p>



<p>A <strong>automação</strong> e a <strong>Inteligência Artificial </strong>estão transformando a forma como as <strong>tarefas são realizadas</strong>. A Ciência de Dados desempenha um papel importante nesse cenário, ajudando a <strong>desenvolver algoritmos</strong> e modelos de <strong>Machine Learning</strong> que permitem <strong>automatizar processos</strong>, tomar decisões autônomas e oferecer <strong>experiências personalizadas</strong>. Profissionais de Ciência de Dados são essenciais para impulsionar a inovação nesse campo.</p>



<p><strong>Setores </strong>de alto crescimento:</p>



<p>A demanda por profissionais de Ciência de Dados se estende a uma ampla gama de setores. Áreas como <strong>saúde, varejo, finanças, marketing e tecnologia</strong> estão investindo pesadamente em <strong>análise de dados</strong> para <strong>impulsionar</strong> o <strong>crescimento </strong>e a <strong>eficiência</strong>. Esses setores oferecem diversas<strong> oportunidades de carreira </strong>para os <strong>especialistas </strong>em <strong>Ciência de Dados.</strong></p>



<p><strong>Escassez </strong>de talentos:</p>



<p>Apesar da alta demanda, há uma <strong>escassez</strong> de <strong>profissionais qualificados em Ciência de Dados</strong>. As habilidades necessárias, como <strong>programação</strong>, <strong>estatística</strong>, conhecimento em <strong>Machine Learning</strong> e <strong>domínio do negócio</strong>, são <strong>altamente valorizadas e difíceis de encontrar</strong>. Isso coloca os profissionais de Ciência de Dados em uma posição privilegiada, com uma <strong>maior oferta</strong> de oportunidades e <strong>salários competitivos</strong>.</p>



<p><strong>Remuneração atrativa</strong>:</p>



<p>A natureza especializada e a demanda crescente por profissionais de Ciência de Dados resultam em uma <strong>remuneração atrativa</strong>. Devido à <strong>escassez </strong>de talentos, empresas estão dispostas a oferecer salários e pacotes de benefícios generosos para <strong>atrair e reter</strong> talentos nessa área. Além disso, existem oportunidades de trabalho remoto e flexibilidade, o que aumenta ainda mais o apelo dessa carreira.</p>



<p>Evolução contínua e aprendizado constante:</p>



<p>A Ciência de Dados é uma área em <strong>constante evolução</strong>. Novas <strong>técnicas</strong>, <strong>algoritmos </strong>e <strong>ferramentas </strong>estão sendo desenvolvidos regularmente. Isso significa que os profissionais de Ciência de Dados têm a oportunidade de <strong>continuar aprendendo</strong> e se <strong>atualizando </strong>ao longo de suas carreiras. A constante necessidade de <strong>adquirir novos conhecimentos</strong> mantém a carreira <strong>estimulante e desafiadora.</strong></p>



<p>Impacto na <strong>sociedade </strong>e no <strong>mundo</strong>:</p>



<p>A Ciência de Dados tem um impacto significativo na sociedade e no mundo como um todo. Através da <strong>análise de dados</strong>, é possível identificar problemas, encontrar soluções <strong>inovadoras </strong>e <strong>impulsionar </strong>o progresso em diversas áreas, como <strong>saúde</strong>, <strong>sustentabilidade</strong>, <strong>transporte </strong>e muito mais. Os profissionais de Ciência de Dados têm a oportunidade de trabalhar em <strong>projetos </strong>que fazem a <strong>diferença </strong>e contribuem para um futuro melhor.</p>



<p><strong>Crescimento </strong>profissional e oportunidades de <strong>liderança</strong>:</p>



<p>A demanda por profissionais de Ciência de Dados está em constante crescimento, o que significa que há amplas oportunidades de <strong>crescimento profissional e progressão na carreira</strong>. À medida que os profissionais adquirem <strong>experiência e habilidades avançadas</strong>, eles podem assumir cargos de liderança, como <strong>cientista de dados sênior, líder de equipe ou diretor de análise de dados.</strong> Isso proporciona um caminho <strong>claro</strong> de <strong>desenvolvimento profissional</strong> e <strong>reconhecimento </strong>no campo da <strong>Ciência de Dados.</strong></p>



<p>Conclusão:</p>



<p>A Ciência de Dados <strong>continua sendo uma carreira promissora</strong> no mercado atual em <strong>2023</strong>. Com a explosão de dados, a demanda por insights acionáveis ​​e a necessidade de automação e IA, os profissionais de Ciência de Dados estão na <strong>vanguarda </strong>da <strong>transformação digital.</strong> Com <strong>remuneração atrativa, escassez de talentos e oportunidades de crescimento</strong>, essa área oferece um <strong>futuro promissor </strong>para aqueles que desejam se <strong>especializar em dados</strong> e aproveitar as <strong>oportunidades de carreira emocionantes que ela oferece.</strong></p>



<p>Se você está procurando uma carreira <strong>dinâmica</strong>, <strong>desafiadora </strong>e com um <strong>impacto significativo</strong>, a <strong>Ciência de Dados</strong> pode ser a <strong>escolha certa </strong>para <strong>você</strong>. <strong>Esteja preparado </strong>para se dedicar ao<strong> aprendizado contínuo </strong>e <strong>aprimorar suas habilidades técnicas e analíticas.</strong> Com uma abordagem orientada por dados e uma <strong>compreensão profunda das técnicas estatísticas e de Machine Learning</strong>, você <strong>estará pronto</strong> para enfrentar os <strong>desafios </strong>e se <strong>destacar nessa carreira</strong> em <strong>constante evolução.</strong></p>



<p><strong>Aproveite </strong>as <strong>oportunidades </strong>disponíveis, busque <strong>cursos </strong>e <strong>certificações relevantes</strong>, participe de <strong>comunidades </strong>e <strong>eventos </strong>da área e esteja sempre <strong>atualizado</strong> com as <strong>últimas tendências e tecnologias</strong>. A <strong>Ciência de Dados</strong> oferece um <strong>vasto campo de possibilidades </strong>e uma carreira <strong>recompensadora</strong>, permitindo que você faça parte da <strong>revolução</strong> dos <strong>dados </strong>e <strong>contribua </strong>para <strong>moldar o futuro com base em insights sólidos e análises significativas.</strong></p>



<p>Conheça&nbsp;<strong>duas de nossas formações</strong>&nbsp;que vão te proporcionar os&nbsp;<strong>conhecimentos mencionados no artigo</strong>:</p>



<p>Formação em&nbsp;<strong>Análise de dados</strong>&nbsp;–&nbsp;<strong>AD</strong>&nbsp;–&nbsp;<strong>CECD</strong>:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">

<p><a href="http://comunidadedeestatistica.com.br/formacao-em-analise-de-dados-ad-cecd/">Formação em Análise de dados – AD – CECD</a></p>

</blockquote>



<p>Formação em <strong>Estatística – FE – CECD</strong>:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">

<p><a href="http://comunidadedeestatistica.com.br/formacao-em-estatistica-fe/">Formação em Estatística – FE</a></p>


<p>Nossos cursos ao vivo:</p>

<cite><a href="https://comunidadedeestatistica.com.br/category/ao-vivo/">https://comunidadedeestatistica.com.br/category/ao-vivo/</a><br></cite></blockquote>
<p>O post <a href="http://estatidados.com.br/por-que-a-ciencia-de-dados-e-uma-carreira-promissora-no-mercado-atual-em-2023/">Por que a Ciência de Dados é uma Carreira Promissora no Mercado Atual em 2023</a> apareceu primeiro em <a href="http://estatidados.com.br">Estatidados</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>O que é Data Science e o que faz um Cientista de Dados</title>
		<link>http://estatidados.com.br/o-que-e-data-science-e-o-que-faz-um-cientista-de-dados/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=o-que-e-data-science-e-o-que-faz-um-cientista-de-dados</link>
		
		<dc:creator><![CDATA[Ludmila]]></dc:creator>
		<pubDate>Mon, 05 Jun 2023 19:00:31 +0000</pubDate>
				<category><![CDATA[ciencia de dados]]></category>
		<category><![CDATA[Estatística]]></category>
		<category><![CDATA[Thiago Marques]]></category>
		<category><![CDATA[cienciadedados]]></category>
		<category><![CDATA[estatistica]]></category>
		<category><![CDATA[machinelearning]]></category>
		<guid isPermaLink="false">http://estatidados.com.br/?p=749</guid>

					<description><![CDATA[<p>No mundo atual, a quantidade de dados gerados pelas empresas e usuários cresce exponencialmente. Nesse cenário, surge a área de Data Science, que tem como objetivo extrair insights valiosos desses dados para auxiliar na tomada de decisões estratégicas. Mas afinal, o que é Data Science e qual é o papel de um Cientista de Dados? Neste artigo, vamos explorar essas questões e descobrir como essa área tem se tornado fundamental para empresas em diferentes setores.</p>
<p>O post <a href="http://estatidados.com.br/o-que-e-data-science-e-o-que-faz-um-cientista-de-dados/">O que é Data Science e o que faz um Cientista de Dados</a> apareceu primeiro em <a href="http://estatidados.com.br">Estatidados</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p><a href="http://comunidadedeestatistica.com.br/wp-admin/edit.php?post_type=post"></a>O que é Data Science e o que faz um Cientista de Dados</p>



<figure class="wp-block-image" id="block-1dd5f5aa-eb52-4cf3-a67f-2817e5c1e921"><img decoding="async" src="http://comunidadedeestatistica.com.br/wp-content/uploads/2023/06/unicorn-2047233__340.webp" alt="O atributo alt desta imagem está vazio. O nome do arquivo é unicorn-2047233__340.webp"/></figure>



<p id="block-8cca6e28-b8ab-4d46-990e-af1b133cd6c5">No mundo atual, a quantidade de dados gerados pelas empresas e usuários <strong>cresce exponencialmente</strong>. Nesse cenário, surge a área de <strong>Data Science</strong>, que tem como objetivo <strong>extrair insights valiosos desses dados </strong>para auxiliar na <strong>tomada de decisões estratégicas</strong>. Mas afinal, <strong>o que é Data Science</strong> e qual é o <strong>papel</strong> de um Cientista de Dados? Neste artigo, vamos explorar essas questões e descobrir como essa área tem se tornado <strong>fundamental</strong> para <strong>empresas </strong>em <strong>diferentes setores</strong>.</p>



<p id="block-53caa644-34b2-4618-be85-a3cacfd9f68f">O que é <strong>Data Science</strong>?</p>



<p id="block-ecaba9e8-f470-44f6-9259-a5407adc291f">Data Science, ou Ciência de Dados, é uma disciplina<strong> interdisciplinar</strong> que <strong>combina estatística</strong>, <strong>programação </strong>e conhecimentos em <strong>domínios específicos</strong> para analisar<strong> grandes volumes de dados</strong> e obter informações relevantes. É um campo que utiliza <strong>métodos científicos e tecnológicos</strong> para <strong>identificar padrões</strong>, desenvolver <strong>modelos preditivos</strong> e encontrar <strong>soluções </strong>para problemas <strong>complexos</strong>.</p>



<p id="block-093d3089-dd40-4a5e-b957-fa6f1b426e71">Papel de um Cientista de Dados:</p>



<p id="block-70480bd7-d4be-4a1f-ac49-34a9d2dd0b8d">Um Cientista de Dados é o profissional responsável por extrair <strong>conhecimento acionável</strong> <strong>a partir dos dados</strong>. Suas principais atribuições incluem:</p>



<ul class="wp-block-list" id="block-a42f653c-3a38-40d8-ba44-a261ec045369"><li><strong>Coleta e análise de dados</strong>: O Cientista de Dados deve identificar e coletar conjuntos de dados relevantes para um determinado problema. Em seguida, ele realiza uma análise exploratória para entender as características dos dados e identificar padrões.</li><li><strong>Pré-processamento e limpeza de dados</strong>: Antes de aplicar algoritmos e modelos de análise, o Cientista de Dados precisa realizar a limpeza e o pré-processamento dos dados, removendo ruídos, tratando valores faltantes e ajustando escalas, garantindo a qualidade dos dados utilizados nas análises.</li><li><strong>Desenvolvimento de modelos preditivos</strong>: Com base nos dados coletados e processados, o Cientista de Dados utiliza técnicas estatísticas e algoritmos de aprendizado de máquina para desenvolver modelos preditivos que possam fazer previsões e tomar decisões embasadas.</li><li><strong>Comunicação de resultados</strong>: Além de realizar as análises, o Cientista de Dados precisa traduzir os insights obtidos em linguagem compreensível para a equipe ou stakeholders. A comunicação eficaz é fundamental para que as descobertas sejam aplicadas nas estratégias de negócio.</li></ul>



<p id="block-b4ecb79e-e716-4ecf-8af8-cfb837acaf70"><strong>Habilidades e conhecimentos</strong> necessários:</p>



<p id="block-c7e06d49-24f7-42b0-80d7-1b18d73c86dc">Para se tornar um Cientista de Dados, é importante adquirir uma combinação de habilidades técnicas e conhecimentos específicos. Algumas <strong>competências essenciais</strong> incluem:</p>



<ul class="wp-block-list" id="block-60604051-6d3a-4d96-9e20-258cc03b44a8"><li><strong>Conhecimento em programação:</strong> Dominar linguagens como Python e R, além de ter habilidades em SQL para manipulação de bancos de dados.</li><li><strong>Estatística e matemática</strong>: Compreender conceitos estatísticos e matemáticos para realizar análises e desenvolver modelos.</li><li><strong>Conhecimento em Machine Learning</strong>: Ter familiaridade com algoritmos e técnicas de aprendizado de máquina para desenvolver modelos preditivos.</li><li><strong>Domínio do negócio</strong>: Entender o contexto em que os dados estão inseridos, conhecendo a fundo o setor de atuação da empresa para identificar oportunidades e desafios específicos.</li><li><strong>Pensamento analítico e resolução de problemas</strong>: Capacidade de analisar problemas complexos, identificar soluções e aplicar abordagens analíticas para resolvê-los.</li><li><strong>Comunicação efetiva</strong>: Ser capaz de comunicar de forma clara e concisa os resultados e insights obtidos, seja para uma equipe técnica ou para stakeholders não técnicos.</li></ul>



<p id="block-1c930b02-f5fe-46e4-b6f1-8b9ad436d177">Aplicações de Data Science:</p>



<p id="block-f9957106-c7b5-413a-bc75-897f44d1c9f3">A área de Data Science tem uma<strong> ampla gama de aplicações</strong> em <strong>diversos setores</strong>. Alguns exemplos incluem:</p>



<ul class="wp-block-list" id="block-7e975275-785b-4f82-a3e6-a0ccce857490"><li><strong>Saúde</strong>: Utilização de dados médicos para diagnóstico precoce de doenças, previsão de resultados de tratamentos e desenvolvimento de soluções de medicina personalizada.</li><li><strong>Varejo</strong>: Análise de dados de vendas, preferências do consumidor e previsão de demanda para otimização de estoques, personalização de experiências de compra e recomendação de produtos.</li><li><strong>Finanças</strong>: Utilização de algoritmos de aprendizado de máquina para detecção de fraudes, análise de risco de crédito, previsão de mercado e otimização de portfólios.</li><li><strong>Marketing</strong>: Análise de dados de campanhas publicitárias, segmentação de público-alvo, personalização de mensagens e otimização de investimentos em marketing.</li></ul>



<p id="block-cdfece75-c0a9-493e-bdd5-ea8ec9df23c9">O <strong>futuro</strong> da Data Science:</p>



<p id="block-dd0b97b1-46ec-41f5-96a8-aa2adb4a0f41">Com o avanço da tecnologia e o crescimento contínuo da geração de dados, a importância da Data Science<strong> só tende a aumentar</strong>. Novas técnicas, como Inteligência Artificial e Aprendizado Profundo (Deep Learning), estão <strong>impulsionando descobertas</strong> ainda mais <strong>significativas</strong>. Além disso, a <strong>ética e a governança dos dados</strong> estão se tornando <strong>aspectos fundamentais </strong>nesse campo, com a necessidade de garantir a<strong> privacidade e a segurança</strong> das informações.</p>



<p id="block-78cbd485-bb3d-46c2-a312-ddfc9301e1ce"><strong>Conclusão</strong>:</p>



<p id="block-d3895966-26d6-4f6e-912f-63c0249d9c98">A Ciência de Dados desempenha um papel <strong>fundamental </strong>na <strong>era da informação</strong>. Combinando <strong>habilidades</strong> <strong>analíticas</strong>, <strong>conhecimentos técnicos e domínio do negócio</strong>, os Cientistas de Dados são capazes de transformar <strong>dados em insights valiosos </strong>que <strong>impulsionam o sucesso das empresas.</strong> Se você está interessado em se tornar um <strong>profissional </strong>nessa <strong>área em expansão</strong>, é essencial <strong>adquirir as habilidades necessárias</strong> e continuar se <strong>atualizando </strong>para <strong>acompanhar</strong> as demandas do <strong>mercado</strong> em <strong>constante evolução.</strong></p>



<p id="block-d288cef5-4654-4c33-a608-0585bdd0ae83">Para tais <strong>conhecimentos</strong> e criação de <strong>networking</strong>, nós indicamos as nossas <strong>formações completas e reduzidas:</strong></p>



<p id="block-f3332e73-c7bd-40b3-bd64-2f1ab2c1d72a">Conheça <strong>duas de nossas formações</strong> que vão te proporcionar os <strong>conhecimentos mencionados no artigo</strong>:</p>



<p id="block-fbb05837-fad7-48b2-8527-a604c71048e7">Formação em <strong>Análise de dados</strong> &#8211; <strong>AD</strong> &#8211; <strong>CECD</strong>:</p>



<p><a href="http://comunidadedeestatistica.com.br/formacao-em-analise-de-dados-ad-cecd/embed/#?secret=Adlwmj4GZhFormação em Estatística - FE - CECD">http://comunidadedeestatistica.com.br/formacao-em-analise-de-dados-ad-cecd/embed/#?secret=Adlwmj4GZhFormação em Estatística &#8211; FE &#8211; CECD</a></p>



<p><a href="http://comunidadedeestatistica.com.br/formacao-em-estatistica-fe/embed/#?secret=UeA8PrfQDC">http://comunidadedeestatistica.com.br/formacao-em-estatistica-fe/embed/#?secret=UeA8PrfQDC</a></p>
<p>O post <a href="http://estatidados.com.br/o-que-e-data-science-e-o-que-faz-um-cientista-de-dados/">O que é Data Science e o que faz um Cientista de Dados</a> apareceu primeiro em <a href="http://estatidados.com.br">Estatidados</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>CRISP-DM (Processo Padrão Inter-Indústrias para Mineração de Dados)</title>
		<link>http://estatidados.com.br/crisp-dm-processo-padrao-inter-industrias-para-mineracao-de-dados/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=crisp-dm-processo-padrao-inter-industrias-para-mineracao-de-dados</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Thu, 09 Jun 2022 18:35:17 +0000</pubDate>
				<category><![CDATA[ciencia de dados]]></category>
		<category><![CDATA[Jodavid Ferreira]]></category>
		<category><![CDATA[Machine learning]]></category>
		<category><![CDATA[cienciadedados]]></category>
		<category><![CDATA[crispdm]]></category>
		<category><![CDATA[machinelearning]]></category>
		<category><![CDATA[ml]]></category>
		<guid isPermaLink="false">http://estatidados.com.br/?p=703</guid>

					<description><![CDATA[<p>PUBLISHED ON 4 DE JUN DE 2022 —&#160;BIG DATA,&#160;MACHINE LEARNING,&#160;PROGRAMMING,&#160;R,&#160;STATISTICS Olá, no texto de hoje será abordado o&#160;CRISP-DM, este que é uma das metodologias ou processo&#160;(particularmente prefiro esse termo)&#160;que pode ser utilizado na jornada de desenvolvimento de soluções com dados.<a class="leiamais" href="http://estatidados.com.br/crisp-dm-processo-padrao-inter-industrias-para-mineracao-de-dados/" title="CRISP-DM (Processo Padrão Inter-Indústrias para Mineração de Dados)">...[Continuar lendo]</a></p>
<p>O post <a href="http://estatidados.com.br/crisp-dm-processo-padrao-inter-industrias-para-mineracao-de-dados/">CRISP-DM (Processo Padrão Inter-Indústrias para Mineração de Dados)</a> apareceu primeiro em <a href="http://estatidados.com.br">Estatidados</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h6 class="wp-block-heading">PUBLISHED ON 4 DE JUN DE 2022 —&nbsp;<a href="https://jodavid.github.io/categories/big-data">BIG DATA</a>,&nbsp;<a href="https://jodavid.github.io/categories/machine-learning">MACHINE LEARNING</a>,&nbsp;<a href="https://jodavid.github.io/categories/programming">PROGRAMMING</a>,&nbsp;<a href="https://jodavid.github.io/categories/r">R</a>,&nbsp;<a href="https://jodavid.github.io/categories/statistics">STATISTICS</a></h6>



<p>Olá, no texto de hoje será abordado o&nbsp;<strong>CRISP-DM</strong>, este que é uma das metodologias ou processo&nbsp;<em>(particularmente prefiro esse termo)</em>&nbsp;que pode ser utilizado na jornada de desenvolvimento de soluções com dados. Apesar do foco do texto caminhar pelo CRISP-DM, existem outros processos propostos na literatura, dois deles são o famoso&nbsp;<strong>KDD</strong>&nbsp;&#8211;&nbsp;<em>Knowledge Discovery in Databases (Descoberta de Conhecimento em Bases de Dados)</em>&nbsp;proposto por Fayyad et al (1996) e o&nbsp;<strong>SEMMA</strong>&nbsp;acrônimo de&nbsp;<em>Sample, Explore, Modify, Model e Assess (Amostra, Explorar, Modificar, Modelar e Avaliar)</em>, desenvolvido pelo Instituto SAS.</p>



<p>Desenvolvido em 1999 por meio dos esforços de um consórcio composto inicialmente pela&nbsp;<em>DaimlerChrysler</em>,&nbsp;<em>SPSS</em>&nbsp;e&nbsp;<em>NCR</em>, o&nbsp;<strong>CRISP-DM</strong>&nbsp;&#8211;&nbsp;<em>Cross Industry Standard Process for Data Mining (Processo Padrão Inter-Indústrias para Mineração de Dados)</em>&nbsp;<code>surgiu como forma de apoio ao processo de descoberta do conhecimento e para padronizar os processos de mineração de dados em todos os setores</code>. Desde então, este processo é um dos mais utilizados para projetos de mineração de dados, estatística, análise e ciência de dados.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>Os times de ciência de dados que combinam uma implementação flexível do CRISP-DM com abordagens abrangentes de gerenciamento de projetos ágeis baseadas em equipe, provavelmente obterão melhores resultados.</p></blockquote>



<p>O&nbsp;<strong>CRISP-DM</strong>&nbsp;é formado por 6 fases, que podemos descrever como:</p>



<ol class="wp-block-list"><li><em>Compreensão do Negócio</em>: O que o negócio precisa?</li><li><em>Compreensão dos Dados</em>: Que dados temos/precisamos? Está ‘limpo’, tratado, prontos para uso?</li><li><em>Preparação dos Dados</em>: Como organizamos os dados para modelagem?</li><li><em>Modelagem</em>: Quais técnicas de modelagem devemos aplicar?</li><li><em>Avaliação</em>: Qual modelo melhor atende aos objetivos do negócio?</li><li><em>Desenvolvimento</em>:Como as partes interessadas acessam os resultados?</li></ol>



<p>Abaixo é mostrado uma figura que representa o processo&nbsp;<strong>CRISP-DM</strong>&nbsp;e como as fases se interrelacionam:<img decoding="async" src="https://jodavid.github.io/img/crispdm/grafico_crisp_dm.png" alt=""></p>



<p>Etapas do CRISP-DM.Fonte: próprio autor.</p>



<p>A seguir serão detalhados as etapas como forma de deixar mais claro o que é necessário extrair e executar em cada uma delas.</p>



<hr class="wp-block-separator"/>



<h3 class="wp-block-heading">1. Compreensão do Negócio</h3>



<p>Nesta primeira fase de&nbsp;<em>compreensão do negócio</em>, o foco é no entendimento dos objetivos e requisitos do projeto.&nbsp;<code>Conhecer e compreender o problema a ser resolvido é de suma importância neste processo.</code>&nbsp;Perceba que no próprio diagrama existem retornos para esta fase a partir de outras etapas do processo, ou seja, podem ocorrer falhas durante o processo por má compreensão do negócio. Para fins de tentar mitigar estes riscos de má compreensão, o&nbsp;<em>CRISP-DM</em>&nbsp;determina algumas atividades nesta fase, conforme é descrito a seguir:</p>



<ul class="wp-block-list"><li><strong>Determine os objetivos de negócios</strong>: entender completamente de uma perspectiva de negócios, o que o cliente realmente deseja realizar e, em seguida, definir os critérios de sucesso do negócio.</li><li><strong>Avalie a situação</strong>: determine a disponibilidade de recursos, os requisitos do projeto, avalie riscos e contingências e realize uma análise de custo-benefício.</li><li><strong>Determine as metas</strong>: Além de definir os objetivos de negócios, você também deve definir como é o sucesso de uma perspectiva técnica.</li><li><strong>Produza o plano do projeto</strong>: selecione tecnologias e ferramentas e defina planos detalhados para cada fase do projeto.</li></ul>



<p>Outros pontos interessantes que podem deixar o entendimento mais completo são:</p>



<ul class="wp-block-list"><li><strong>Identificar os especialistas na organização</strong>: Os especialistas da área de negócio (domínio), o pessoal da TI, bem como os responsáveis pela tomada de decisão precisam conhecer o processo. É comum nesta etapa, realizar treinamentos para fins de nivelamento de conhecimento do pessoal em torno do processo e onde o&nbsp;<strong>CRISP-DM</strong>&nbsp;estará atuando.</li><li><strong>Levantar e esboçar as necessidades e expectativas</strong>: As pessoas que estarão envolvidas no processo, precisam expor suas necessidades, principalmente aqueles que irão lidar com os dados e informações obtidos para posterior análise e tomada de decisão. É comum serem feitas rodadas de reuniões com estas pessoas para fins de elencar os objetivos e necessidades.</li><li><strong>Levantamento dos hardwares e softwares</strong>: A organização não é feita apenas de pessoas, mas também de ferramentas e neste sentido se faz necessário conhecer o que existe disponível ou não. O&nbsp;<strong>CRISP-DM</strong>&nbsp;orienta que o processo seja realizado em plataforma que possua arquitetura expansível, com capacidade de suportar grandes volumes de dados, com grandes chances destes dados serem heterogêneos e que possa ter capacidade de processamento compatível com o volume de dados.</li><li><strong>Fazer inventário das bases de dados existentes</strong>: É importante conhecer o que a organização possui de bases de dados internas e do acesso e uso de bases de dados externas. Neste momento, se faz necessário também observar potenciais bases de dados externas que guardem relação com o negócio da organização e por isso podem fazer parte do processo.</li><li><strong>Verificar a existência de DW (Data Warehouses) na organização</strong>: Caso a organização possua dados armazenados em bases multidimensionais, como os Data Lake, Data Warehouses, Data Marts, é possível que ela já tenha estabelecido um processo&nbsp;<em>ETL</em>&nbsp;e neste caso haverá um ganho de esforço no restante do processo.</li></ul>



<hr class="wp-block-separator"/>



<h3 class="wp-block-heading">2. Compreensão dos Dados</h3>



<p>Esta fase geralmente é executada juntamente com a fase anterior (<em>Compreensão do Negócio</em>), em que o estudo sobre as informações coletadas se faz necessário e deve ser feita de forma detalhista. Aqui neste caso, o foco é direcionado para identificar, coletar e analisar os conjuntos de dados que podem ajudá-lo a atingir as metas do projeto. Podemos definir essa fase através de algumas tarefas:</p>



<ul class="wp-block-list"><li><strong>Solicite dados iniciais</strong>: adquira os dados necessários e (se necessário) carregue-os em sua ferramenta de análise.</li><li><strong>Descreva os dados</strong>: examine os dados e&nbsp;<code>documente</code>&nbsp;suas propriedades de superfície, como formato de dados, número de registros ou identidades de campo.</li><li><strong>Explorar dados</strong>: aprofunde-se nos dados. Consulte-o, visualize-o e identifique relacionamentos entre os dados.</li><li><strong>Verificar a qualidade dos dados</strong>: o quão “limpos/sujos”, “tratados/não tratados” estão os dados? Documente quaisquer problemas de qualidade.</li><li><strong>Verificar se a volumetria dos dados atende ao negócio</strong>: refere-se a quantidade de dados que será utilizada, pois amostras pequenas de dados podem não ser úteis para o processo, portanto é importante que seja feito um acordo para o fornecimento de volume de dados adequado.</li></ul>



<hr class="wp-block-separator"/>



<h3 class="wp-block-heading">3. Preparação dos Dados</h3>



<p>Esta fase, prepara o(s) conjunto(s) de dados final(is) para modelagem. As diversas ferramentas analíticas que podem ser usadas nesta fase, apesar de oferecerem muitos recursos, impõem alguns requisitos sobre os dados quanto ao seu formato, gerando a necessidade de formatações e/ou transformações dos mesmos. Nesta estapa é possível dividir em cinco tarefas distintas:</p>



<ul class="wp-block-list"><li><strong>Selecionar dados</strong>: determine quais conjuntos de dados serão usados e documente os motivos da inclusão/exclusão.</li><li><strong>Limpeza dos Dados</strong>: muitas vezes esta é a tarefa mais demorada. Sem ele, você provavelmente será vítima do&nbsp;<code>"lixo que entra e sai do lixo"</code>. Uma prática comum durante esta tarefa é corrigir, imputar ou remover valores incorretos.</li><li><strong>Construir dados</strong>: Derive novos atributos que serão úteis.&nbsp;<em>Por exemplo, derivar o índice de massa corporal de alguém dos campos de altura e peso.</em></li><li><strong>Integrar dados</strong>: crie novos conjuntos de dados combinando dados de várias fontes.</li><li><strong>Formatar dados</strong>: Reformate os dados conforme necessário.&nbsp;<em>Por exemplo, você pode converter valores de string que armazenam números em valores numéricos para poder realizar operações matemáticas</em>.</li></ul>



<hr class="wp-block-separator"/>



<h3 class="wp-block-heading">4. Modelagem</h3>



<p>A&nbsp;<strong>modelagem</strong>&nbsp;é o principal local onde as técnicas são aplicadas aos dados. É importante ter alguma compreensão dos conceitos de modelagem, incluindo os tipos de técnicas e algoritmos existentes. É aqui que você provavelmente construirá e avaliará vários modelos com base em várias técnicas de modelagem diferentes. Esta fase tem quatro tarefas:</p>



<ul class="wp-block-list"><li><strong>Selecione técnicas de modelagem</strong>: Determine quais algoritmos se adequam a problemática,&nbsp;<em>por exemplo: regressão, rede neural, etc</em>.</li><li><strong>Gerar design de teste</strong>: enquanto aguarda sua abordagem de modelagem, pode ser necessário dividir os dados em conjuntos de treinamento, teste e validação.</li><li><strong>Modelo de construção</strong>: Aqui é etapa da execução da modelagem dos algoritmos utilizando a tecnologia selecionada.</li><li><strong>Modelo de avaliação</strong>: Geralmente, vários modelos estão competindo entre si, e o&nbsp;<strong>cientista de dados</strong>&nbsp;precisa interpretar os resultados do modelo com base no&nbsp;<code>conhecimento do domínio, nos critérios de sucesso predefinidos e no design do teste</code>.</li></ul>



<hr class="wp-block-separator"/>



<h3 class="wp-block-heading">5. Avaliação</h3>



<p>O insumo desta fase é a saída da fase anterior em forma de um ou mais modelos. Aqui na fase avaliação, é analisado qual modelo atende melhor ao negócio e o que fazer em seguida. Esta fase possui três tarefas:</p>



<ul class="wp-block-list"><li><strong>Avalie os resultados</strong>: os modelos atendem aos critérios de sucesso do negócio? Qual(is) devemos aprovar para o negócio?</li><li><strong>Processo de revisão</strong>: revise o trabalho realizado. Alguma coisa foi esquecida? Todas as etapas foram executadas corretamente? Resuma as descobertas e corrija qualquer coisa, se necessário.</li><li><strong>Determine as próximas etapas</strong>: Com base nas três tarefas anteriores, determine se deve continuar com a implantação, iterar mais ou iniciar novos projetos.</li></ul>



<hr class="wp-block-separator"/>



<h3 class="wp-block-heading">6. Desenvolvimento</h3>



<p>A fase de&nbsp;<strong>desenvolvimento</strong>&nbsp;consiste da definição das fases de implantação do projeto, levando em consideração que o modelo resultante da fase de modelagem precisa ser factível de ser usado, ou seja, digamos que&nbsp;<code>um modelo não é particularmente útil a menos que o cliente possa acessar seus resultados</code>. A complexidade desta fase varia muito. Esta fase final tem quatro tarefas:</p>



<ul class="wp-block-list"><li><strong>Planejar a implantação</strong>: desenvolva e documente um plano para implantar o modelo.</li><li><strong>Plano de monitoramento e manutenção</strong>: desenvolva um plano completo de monitoramento e manutenção para evitar problemas durante a fase operacional (ou fase pós-projeto) de um modelo.</li><li><strong>Produzir relatório final</strong>: a equipe do projeto documenta um resumo do projeto que pode incluir uma apresentação final dos resultados das etapas realizadas.</li><li><strong>Revisão do projeto</strong>: conduza uma retrospectiva do projeto sobre o que deu certo, o que poderia ter sido melhor e como melhorar no futuro.</li></ul>



<hr class="wp-block-separator"/>



<h4 class="wp-block-heading">Conclusão</h4>



<p>Como uma forma de finalização desse post, com uma conclusão, podemos escrever alguns pontos para que seja possível aproveitar ao máximo os benefícios da&nbsp;<strong>CRISP-DM</strong>, para suprir as fraquezas ou pontos negativos existentes.</p>



<p>Sendo assim, pense sempre em fazer a equipe se concentrar estritamente em entregar lançamentos menores de todas as etapas e frequentemente solicitar feedback ao longo do caminho, evitando dessa forma cair em uma armadilha em cascata trabalhando minuciosamente em todas as etapas do projeto, e raramente retornar a uma etapa anterior, e a entrega ser um “big bang” no final do projeto porque a sua primeira entrega pode não ser muito útil, por estar nas fases iniciais do processo.</p>



<p>As etapas do processo exigem muita documentação, assim o gasto de tempo fazendo documentações poderá ser maior do que fazendo qualquer outra coisa, entretanto, procure sempre documentar o que for suficiente… mas não precisa exagerar. Não se esqueça também das tecnologias atuais: adicione etapas para aproveitar arquiteturas de nuvem e práticas de software modernos, como controle de versão&nbsp;<code>git</code>&nbsp;e pipelines de CI/CD ao seu plano de projeto, quando apropriado.</p>



<p>O&nbsp;<strong>CRISP-DM</strong>&nbsp;carece de estratégias de comunicação com as partes interessadas. Portanto, certifique-se de definir expectativas e se comunicar com eles com frequência.</p>



<p>E por fim, combine com uma abordagem de gerenciamento de projetos. Como uma declaração mais generalizada do item anterior, o&nbsp;<strong>CRISP-DM</strong>&nbsp;não é realmente uma abordagem de gerenciamento de projetos. Assim, combine-o com uma estrutura de coordenação de ciência de dados. As abordagens ágeis populares incluem:&nbsp;<strong>Kanban</strong>,&nbsp;<strong>Scrum</strong>&nbsp;e&nbsp;<strong>Scrum Orientado a Dados</strong>.</p>



<p>Fontes:</p>



<p>Azevedo, A. e Manuel, F.S. “KDD, SEMMA and CRISP-DM: a parallel overview.” IADS-DM (2008).</p>



<p>Fayyad, U. M. “Data mining and knowledge discovery: making sense out of data”. IEEE Expert, Vol. 11 No.&nbsp;5, pp.&nbsp;20-25 (1996).</p>



<figure class="wp-block-embed is-type-wp-embed is-provider-blog-dnc-group wp-block-embed-blog-dnc-group"><div class="wp-block-embed__wrapper">
https://dnc.group/blog/data-science/metodologia-crisp-dm/
</div></figure>



<figure class="wp-block-embed is-type-wp-embed is-provider-data-science-process-alliance wp-block-embed-data-science-process-alliance"><div class="wp-block-embed__wrapper">
https://www.datascience-pm.com/crisp-dm-2/
</div></figure>



<figure class="wp-block-embed"><div class="wp-block-embed__wrapper">
https://blog.grancursosonline.com.br/processo-de-mineracao-de-dados-com-crisp-dm/
</div></figure>



<p><br>Texto baseado nas fontes citadas.<br></p>



<h4 class="wp-block-heading">“Post gerado com framework HUGO (<a href="http://gohugo.io/">http://gohugo.io/</a>), R Markdown (<a href="http://rmarkdown.rstudio.com/">http://rmarkdown.rstudio.com/</a>), no qual os resultados são gerados na geração da página.”</h4>



<h6 class="wp-block-heading">TAGS: <a href="https://jodavid.github.io/tags/big-data">BIG DATA</a>, <a href="https://jodavid.github.io/tags/machine-learning">MACHINE LEARNING</a>, <a href="https://jodavid.github.io/tags/programming">PROGRAMMING</a>, <a href="https://jodavid.github.io/tags/r">R</a>, <a href="https://jodavid.github.io/tags/statistics">STATISTICS</a></h6>



<p>Post original: https://jodavid.github.io/post/2022-06-04-crisp-dm-processo-padr-o-inter-ind-strias-para-minera-o-de-dados/</p>



<h6 class="wp-block-heading"><a href="https://jodavid.github.io/"></a></h6>



<p></p>
<p>O post <a href="http://estatidados.com.br/crisp-dm-processo-padrao-inter-industrias-para-mineracao-de-dados/">CRISP-DM (Processo Padrão Inter-Indústrias para Mineração de Dados)</a> apareceu primeiro em <a href="http://estatidados.com.br">Estatidados</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>COMO A TORCIDA INFLUENCIA NO DESEMPENHO DO TIME DA NHL – PARTE II</title>
		<link>http://estatidados.com.br/como-a-torcida-influencia-no-desempenho-do-time-da-nhl-parte-ii/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=como-a-torcida-influencia-no-desempenho-do-time-da-nhl-parte-ii</link>
					<comments>http://estatidados.com.br/como-a-torcida-influencia-no-desempenho-do-time-da-nhl-parte-ii/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Thu, 21 Oct 2021 12:21:07 +0000</pubDate>
				<category><![CDATA[Danilo Oliveira]]></category>
		<category><![CDATA[Sports analytics]]></category>
		<guid isPermaLink="false">http://estatidados.com.br/?p=655</guid>

					<description><![CDATA[<p>Dando sequência à nossa análise dos efeitos da pandemia na NHL e como a falta de torcida afetou a liga, vamos voltar nossos olhos agora para os astros do jogo, jogadores e goleiros. Caso não tenha lido a primeira parte,<a class="leiamais" href="http://estatidados.com.br/como-a-torcida-influencia-no-desempenho-do-time-da-nhl-parte-ii/" title="COMO A TORCIDA INFLUENCIA NO DESEMPENHO DO TIME DA NHL – PARTE II">...[Continuar lendo]</a></p>
<p>O post <a href="http://estatidados.com.br/como-a-torcida-influencia-no-desempenho-do-time-da-nhl-parte-ii/">COMO A TORCIDA INFLUENCIA NO DESEMPENHO DO TIME DA NHL – PARTE II</a> apareceu primeiro em <a href="http://estatidados.com.br">Estatidados</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Dando sequência à nossa análise dos efeitos da pandemia na NHL e como a falta de torcida afetou a liga, vamos voltar nossos olhos agora para os astros do jogo, jogadores e goleiros. Caso não tenha lido a primeira parte, que teve um foco mais nas organizações, times, como um todo, você pode acessar o post clicando aqui&nbsp;<a href="http://estatidados.com.br/como-a-torcida-influencia-no-desempenho-do-time-da-nhl-parte-i/">link</a>, vai lá, tem muito gráfico legal, mas volta aqui depois.&nbsp;Recapitulando para dar um pouco mais de contexto. Na primeira parte vimos que o fato de jogar com torcida ou não nas arenas não teve um impacto tão significativo no número de vitórias dos times em relação às temporadas anteriores. O impacto dessa falta de fãs nas arenas afetou muito mais&nbsp;as&nbsp;organizações, que deixaram de arrecadar com a presença do público.&nbsp;</p>



<p>Assim, nossa primeira análise olhou apenas para o resultado final, vitória, no que diz respeito ao desempenho do time dentro do gelo, deixando de lado outros fatores. O grande ponto aqui é que dentre os esportes, o hóquei é o esporte onde o fator “sorte” é o mais presente.</p>



<figure class="wp-block-image" id="attachment_2702"><img decoding="async" src="https://www.nhlbrasil.com.br/wp-content/uploads/2021/10/continuum.png" alt="Gráfico sorte nos esportes" class="wp-image-2702"/><figcaption>Michael Mauboussin’s skill-luck continuum.</figcaption></figure>



<p>E como destacamos na nossa primeira parte, apesar do grande volume de dados gerados, os fatores psicológicos e emocionais dos jogadores ainda não são mensuráveis. Um assunto que veio à tona devido ao nosso cenário pandêmico.&nbsp;Portanto, nosso intuito é verificar através das estatísticas avançadas se a falta de torcida impactou no desempenho dos jogadores, que consequentemente reverbera no desempenho final dos times, de modo a ver se o que era esperado realmente aconteceu ao final da temporada. Para mensurarmos esse desempenho vamos olhar para aquilo que dá aos times a vitória quando temos o apito final, os gols.</p>



<p><strong>Observação: O</strong><strong>s jogos analisados serão aqueles onde as forças dos times é a mesma, sempre 5 contra 5.</strong></p>



<h3 class="wp-block-heading"><strong>ESTATÍSTICAS AVANÇADAS QUE VAMOS UTILIZAR</strong></h3>



<p>Para mensurar o desempenho dos times e jogadores vamos utilizar, valor esperado de gols (xG) , gols feitos acima do esperado (GFaE) e gols sofridos acima do esperado (GAaE), já para os goleiros, delta da porcentagem de defesas(dSv%).</p>



<h5 class="wp-block-heading"><strong>XG (VALOR ESPERADO DE GOLS)</strong></h5>



<p>Expectativa de gols (<em>Expected Goals</em>) é um modelo estatístico que vem sendo desenvolvido em vários esportes onde o intuito é prever o desempenho futuro. Para esportes como hóquei e futebol, onde os gols são inerentemente aleatórios e escassos, o modelo de gols esperados provou ser particularmente útil na previsão de gols futuros. Isso porque eles consideram o número de chutes, que é mais preditivo do desempenho da equipe e do jogador do que apenas o número total de gols.</p>



<p>Os primeiros modelos datam por volta de 2012 e alguns ainda levam outros nomes como “qualidade de chute”. Desde então muitos modelos vêm sendo desenvolvidos e cada um tem a sua particularidade, ainda estou trabalhando no meu, no que diz respeito a quais variáveis, características, são aquelas que mais impactam para a previsão. Para nossa análise vou utilizar os dados do site&nbsp;<a href="https://moneypuck.com/about.htm"><em>Money Puck</em></a>&nbsp;e os resultados gerados pelo seu modelo, que leva em consideração as seguintes variáveis:</p>



<ol class="wp-block-list"><li>&nbsp;Distância do chute a gol;</li><li>&nbsp;Tempo desde o último evento (ação) de jogo;</li><li>&nbsp;Tipo do chute (wrist shot, slap shot, backhand, etc);</li><li>&nbsp;Velocidade da ação anterior;</li><li>&nbsp;Ângulo do chute;</li><li>&nbsp;Localização Leste-Oeste no gelo do último evento antes do chute;</li><li>&nbsp;Se rebote, diferença no ângulo do chute dividido pelo tempo desde o último chute;</li><li>&nbsp;Último evento que aconteceu antes do chute (faceoff, hit, etc);</li><li>&nbsp;Número de patinadores da outra equipe no gelo;</li><li>&nbsp;Localização Leste-Oeste no Gelo de chute;</li><li>&nbsp;Situação de vantagem de homem;</li><li>&nbsp;Tempo desde que o Powerplay atual começou;</li><li>&nbsp;Distância do evento anterior;</li><li>&nbsp;Localização Norte-Sul no Gelo de Tiro;</li><li>&nbsp;Tiro na rede vazia.</li></ol>



<p>Para deixar mais visual de como funciona esse modelo vou colocar dois vídeos que mostram como isso pode ser visualizado dentro do jogo:</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe title="Expected Goals in Hockey" width="500" height="281" src="https://www.youtube.com/embed/akVZtvcLr_Q?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe title="xGoals counting" width="500" height="281" src="https://www.youtube.com/embed/ozTskKQJES4?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<p>As outras duas estatísticas que vamos utilizar para os times e jogadores derivam da primeira:</p>



<ul class="wp-block-list"><li>GFaE (Diferença de gols feitos pelos esperados dividido pelo número de jogos)</li><li>GAaE (Diferença de gols sofridos pelos esperados dividido pelo número de jogos)</li></ul>



<p>São elas que vão nos dizer se os times tiveram uma performance positiva ou negativa em relação ao que aconteceu durante toda a temporada.</p>



<h5 class="wp-block-heading"><strong>DSV%</strong></h5>



<p>Diferença entre a porcentagem de defesa esperada de um goleiro e sua porcentagem de defesa real. Esta é uma estatística muito valiosa que ajuda a mostrar o quão melhor (ou pior) um goleiro está se saindo em comparação com o desempenho de um goleiro médio dada a qualidade dos chutes que ele enfrentou. Um dSv% de 0 significa que um goleiro teve um desempenho exatamente no nível de um goleiro médio, dada a qualidade dos chutes que ele enfrentou.</p>



<h3 class="wp-block-heading"><strong>DESEMPENHO DOS TIMES</strong></h3>



<p>Vamos ver o que era previsto para os times em relação aos gols feitos e sofridos e comparar com os dados reais.</p>



<h5 class="wp-block-heading"><strong>TEMPORADA 2018-19</strong></h5>



<figure class="wp-block-image"><img decoding="async" src="https://www.nhlbrasil.com.br/wp-content/uploads/2021/10/xGAvsxGF_1819.png" alt="Gráfico de setores temporada 2018-19. media xGF pela media xGA" class="wp-image-2703"/></figure>



<figure class="wp-block-image"><img decoding="async" src="https://www.nhlbrasil.com.br/wp-content/uploads/2021/10/GAvsGF_1819.png" alt="Gráfico de setores temporada 2018-19. media GF pela media GA" class="wp-image-2704"/></figure>



<h5 class="wp-block-heading"><strong>TEMPORADA 2019-20</strong></h5>



<figure class="wp-block-image"><img decoding="async" src="https://www.nhlbrasil.com.br/wp-content/uploads/2021/10/xGAvsxGF_1920.png" alt="Gráfico de setores temporada 2019-20. media xGF pela media xGA" class="wp-image-2705"/></figure>



<figure class="wp-block-image"><img decoding="async" src="https://www.nhlbrasil.com.br/wp-content/uploads/2021/10/GAvsGF_1920.png" alt="Gráfico de setores temporada 2019-20. media GF pela media GA" class="wp-image-2706"/></figure>



<p>Em relação às duas temporadas, podemos ver nos dois gráficos como os times de uma maneira geral negligenciam a defesa. Grande parte dos times se concentram na parte superior do gráfico. O apelo ofensivo é maior que o defensivo. Isso é interessante porque estudos mostram o quanto uma defesa sólida é essencial para conquista de campeonatos, mas esse assunto fica para um outro post.</p>



<h5 class="wp-block-heading"><strong>TEMPORADA 2020-21</strong></h5>



<p>Para a última temporada, além do gráfico de setores, vamos ver as diferenças em relação aos valores previstos (GFaE e GAaE).&nbsp;Aqui precisamos fazer uma observação. Como foi uma temporada atípica, tivemos a divisão das equipes por localização geográfica. Assim, os times jogaram 8x contra o mesmo adversário.&nbsp; Isso provou ter um certo impacto nos times. Uma vez que, você começa a conhecer bem o estilo de jogo do seu oponente o que torna os confrontos previsíveis.</p>



<figure class="wp-block-image"><img decoding="async" src="https://www.nhlbrasil.com.br/wp-content/uploads/2021/10/xGAvsxGF_2021.png" alt="Gráfico de setores temporada 2020-21. media xGF pela media xGA" class="wp-image-2707"/></figure>



<p>Agora vamos ver como foi o desempenho dos times quando comparamos com os resultados reais.</p>



<h5 class="wp-block-heading"><strong>GOLS FEITOS</strong></h5>



<figure class="wp-block-image"><img decoding="async" src="https://www.nhlbrasil.com.br/wp-content/uploads/2021/10/GFvsxGF_2021.png" alt="diferença entre a media dos gols feitos esperados e reais" class="wp-image-2708"/></figure>



<p>Em relação aos gols feitos:</p>



<ul class="wp-block-list"><li>Os grandes destaques são os Capitals, Penguins, Rangers, Wild, Blues, Avalanche e Knights com um diferença do previsto para real acima dos 10 gols;</li><li>Toronto teve um desempenho ruim e bom ao mesmo tempo. Isso porque ele tinha um valor previsto de 134 gols na temporada e acabou fazendo 133 gols, média de 2.3 gols por jogo. Comprovou seu favoritismo em relação ao potencial ofensivo esperado;</li><li>Entre os piores times quem se destaca é o time dos Sabres com um desempenho bem inferior ao previsto, média de 1,57 gols por jogo.</li></ul>



<h5 class="wp-block-heading"><strong>GOLS SOFRIDOS</strong></h5>



<figure class="wp-block-image"><img decoding="async" src="https://www.nhlbrasil.com.br/wp-content/uploads/2021/10/GAvsxGA_2021.png" alt="diferença entre a media dos gols sofridos esperados e reais" class="wp-image-2709"/></figure>



<p>Em relação aos gols sofridos:</p>



<ul class="wp-block-list"><li>O time dos Flyers foi aquele que apresentou o pior desempenho em relação aos gols sofridos, com média acima dos 2 gols por jogo.</li><li>De forma geral um desempenho majoritariamente negativo dos times em relação aos gols sofridos.</li></ul>



<h3 class="wp-block-heading"><strong>DESEMPENHO DOS JOGADORES</strong></h3>



<figure class="wp-block-image"><img decoding="async" src="https://www.nhlbrasil.com.br/wp-content/uploads/2021/10/tab_1.png" alt="Apresenta desempenho dos joadores" class="wp-image-2710"/></figure>



<p>A tabela compila a quantidade de gols que era previsto, resultado real e a diferença entre eles (goals above expected – GAE). A lista dos 10 jogadores não segue nenhum critério de quem é o melhor nem nada, existem muitos outros jogadores com muito potencial em toda liga.&nbsp;Quando olhamos para o resultado fica evidente o quanto a temporada 2020-21 impactou os atacantes.</p>



<p>Não podemos deixar de lado o fato que tivemos menos jogos, 56, e que nossa lista contém jogadores bem experientes, como: Sidney Crosby, Alex Ovechkin e Patrick Kane, que já passaram dos 30 anos mas continuam jogando em altíssimo nível. Contudo, quando analisamos a tabela, percebe-se que os desempenhos foram afetados na última temporada apresentada.</p>



<p>Dentre os jogadores o grande destaque fica para Auston Matthews que fez 41 gols durante toda a temporada de 2020-2021. Mas, para uma análise mais fiel, consta na tabela apenas 28 gols, que foram feitos nas disputas em que os dois times estavam com número máximo de jogadores no gelo (5 contra 5).</p>



<h3 class="wp-block-heading"><strong>DESEMPENHO DOS GOLEIROS</strong></h3>



<p>Assim como a escolha dos jogadores não seguiu nenhum critério, para os goleiros também não.&nbsp;</p>



<figure class="wp-block-image"><img decoding="async" src="https://www.nhlbrasil.com.br/wp-content/uploads/2021/10/tab_2.png" alt="apresenta desempenho gos goleiros" class="wp-image-2711"/></figure>



<p>Para os goleiros temos um resultado muito interessante e que talvez expresse melhor a falta dos torcedores nas arenas. Tenho para mim que a posição do goleiro é a mais ingrata entre os esportes, em geral, e aqui no hóquei não seria diferente. Digo isso porque ele pode fazer tudo certo e ainda sair como vilão da partida. Assim, a pressão é muito grande diferente do atacante onde erros não são tão impactantes. Claro que estamos falando de jogadores de alta performance, mas precisamos lembrar que todos são humanos também.</p>



<p>Tivemos como destaques negativos John Gibson, Darcy Kuemper e Branden Holtby. Porém, a maioria dos goleiros tiveram uma performance melhor e superior as temporadas passadas. Destaques positivos para Connor Hellebuyck, Andrei Vasilevsky e Marc-Andre Fleury, na temporada 2020-2021, que foram além do esperado. Vale lembrar que a comparação é realizada sobre a performance de um goleiro médio, que tem um desempenho igual a zero, como expliquei no início do artigo.&nbsp;</p>



<h3 class="wp-block-heading"><strong>CONCLUSÃO</strong></h3>



<p>Diferente de quando olhamos para o contexto geral, as vitórias, os fãs não parecem exercer um papel tão determinante no desempenhos dos times. Mas a ausência de lucro, promovidos pelas relações financeiras que se estabeleciam antes, durante e depois dos jogos deixaram marcas negativas nos bolsos dos donos e afins que lucravam com a realização do evento. A arena ficou cara para alguns e sem emoção para todos.&nbsp;</p>



<p>Entretanto, quando analisamos de uma forma mais precisa, temos sim um possível&nbsp; impacto a ser debatido. Vemos que os jogadores, em especial, os patinadores tiveram uma alteração negativa em relação ao desempenho esperado. Diferente dos goleiros que mantiveram uma certa constância na temporada. Não podemos falar com exatidão que a falta de torcida foi o grande fator para esse resultado, e nem que isso influenciou negativamente de forma psíquica e emocional os jogadores, afinal, foi uma temporada atípica, mas é algo que precisa ser levado em conta em momentos como esse, em que a mudança tornou-se uma constante na vida de todos.&nbsp;</p>
<p>O post <a href="http://estatidados.com.br/como-a-torcida-influencia-no-desempenho-do-time-da-nhl-parte-ii/">COMO A TORCIDA INFLUENCIA NO DESEMPENHO DO TIME DA NHL – PARTE II</a> apareceu primeiro em <a href="http://estatidados.com.br">Estatidados</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>http://estatidados.com.br/como-a-torcida-influencia-no-desempenho-do-time-da-nhl-parte-ii/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>COMO A TORCIDA INFLUENCIA NO DESEMPENHO DO TIME DA NHL – PARTE I</title>
		<link>http://estatidados.com.br/como-a-torcida-influencia-no-desempenho-do-time-da-nhl-parte-i/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=como-a-torcida-influencia-no-desempenho-do-time-da-nhl-parte-i</link>
					<comments>http://estatidados.com.br/como-a-torcida-influencia-no-desempenho-do-time-da-nhl-parte-i/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Thu, 21 Oct 2021 12:19:27 +0000</pubDate>
				<category><![CDATA[Danilo Oliveira]]></category>
		<category><![CDATA[Sports analytics]]></category>
		<guid isPermaLink="false">http://estatidados.com.br/?p=658</guid>

					<description><![CDATA[<p>No último dia 15 de maio de 2021 deu-se início a pós-temporada da&#160;National Hockey League&#160;(NHL). Sendo essa para mim, dentre as cinco grandes ligas americanas, NBA, NFL, MLB, MLS e NHL, aquela mais emocionante, frenética e mágica onde tudo pode<a class="leiamais" href="http://estatidados.com.br/como-a-torcida-influencia-no-desempenho-do-time-da-nhl-parte-i/" title="COMO A TORCIDA INFLUENCIA NO DESEMPENHO DO TIME DA NHL – PARTE I">...[Continuar lendo]</a></p>
<p>O post <a href="http://estatidados.com.br/como-a-torcida-influencia-no-desempenho-do-time-da-nhl-parte-i/">COMO A TORCIDA INFLUENCIA NO DESEMPENHO DO TIME DA NHL – PARTE I</a> apareceu primeiro em <a href="http://estatidados.com.br">Estatidados</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>No último dia 15 de maio de 2021 deu-se início a pós-temporada da&nbsp;<em>National Hockey League&nbsp;</em>(NHL). Sendo essa para mim, dentre as cinco grandes ligas americanas, NBA, NFL, MLB, MLS e NHL, aquela mais emocionante, frenética e mágica onde tudo pode acontecer. Outro ponto muito importante, e que foi o responsável pela ideia do artigo, foi o acréscimo na capacidade de torcedores permitidos nas arenas para conclusão da temporada.</p>



<p>A restrição dos torcedores às arenas de hóquei teve início na pós-temporada de 2019-2020, após uma temporada regular já encurtada devido a&nbsp;<a href="https://www.nhlbrasil.com.br/jogadores-novatos-tem-de-se-readaptar-devido-covid-19/">pandemia do coronavírus</a>. O que levou a conclusão da temporada sem a presença dos torcedores como mostrado na foto abaixo.</p>



<figure class="wp-block-image" id="attachment_1908"><img decoding="async" src="https://www.nhlbrasil.com.br/wp-content/uploads/2021/06/USATSI_14629809-scaled-1.jpg" alt="" class="wp-image-1908"/><figcaption>Foto: Andy Devlin/NHL via USA Today Sports</figcaption></figure>



<p>Para a temporada de 2020-2021 a NHLPA, representante dos jogadores, e a liga chegaram a um acordo de que a temporada normalmente de 82 jogos seria encurtada para 56 jogos. E em vez das divisões normais, os times seriam separados com base na localização geográfica, com uma das quatro divisões sendo composta apenas por equipes canadenses. Em relação a presença dos torcedores nas arenas a capacidade inicial permitida pela NHL foi de 10 a 15% do total da arena de cada time. Esses valores foram revisados ao decorrer da temporada regular de acordo com o controle da pandemia.</p>



<p>Isso é interessante porque, por mais que os esportes americanos sejam excelentes para criar uma base sólida de dados, o fator humano nunca pode ser deixado de lado. As estatísticas podem dizer algo, mas o contexto precisa ser levado em conta. Fatores que ainda não são representados nos dados, como a condição psicológica e o humor dos jogadores, também são chaves importantes na hora de analisar o jogo.</p>



<p>Assim, nosso intuito é verificar se a falta de torcedores nas arenas teve algum impacto significativo no desempenho dos times e dos jogadores. Para nossa análise vamos utilizar as três últimas temporadas, 2018-2019, 2019-2020 e 2020-2021, para a primeira tivemos a presença dos torcedores em todas as fases do campeonato, na segunda a presença dos torcedores aconteceu apenas na temporada regular e na última temporada essa presença aconteceu de forma bastante limitada.</p>



<p>Como disse previamente essas são questões difíceis de serem mensuradas por diversas razões então para analisar qual impacto da pandemia do coronavírus vamos analisar os times e os jogadores através das seguintes estatísticas avançadas:</p>



<ul class="wp-block-list"><li><em><strong>xG</strong></em>&nbsp;–&nbsp;<em>Expected Goals</em>&nbsp;<em>For</em>&nbsp;<em>and</em>&nbsp;<em>Against</em>&nbsp;– expectativa de gols feito e cedidos. Essa estatística mede o valor esperado de gols feitos ou cedidos pelos times.</li><li><em><strong>GFAE</strong></em>&nbsp;–&nbsp;<em>Goals For Above Expected</em><em>&nbsp;–&nbsp;</em>diferença do gols feitos pelos esperados dividido pelo número de jogos.<em></em></li><li><em><strong>GAAE</strong></em>&nbsp;–&nbsp;<em>Goals Against Above Expected</em>&nbsp;– diferença do gols cedidos pelos esperados dividido pelo número de jogos.</li></ul>



<p>Dessa forma podemos medir a eficiência do time e do jogadores comparando o que era esperado com o que de fato aconteceu durante a temporada.</p>



<p>Para os goleiros vamos olhar a seguinte estatística avançada:</p>



<ul class="wp-block-list"><li><em><strong>Delta/Adjusted Save Percentage (dSv%) –&nbsp;</strong></em>diferença entre a porcentagem de defesa esperada de um goleiro e sua porcentagem de defesa real. Esta é uma estatística muito valiosa que ajuda a mostrar o quão melhor (ou pior) um goleiro está se saindo em comparação com o desempenho de um goleiro médio dada a qualidade dos chutes que ele enfrentou. Um dSv% de 0 significa que um goleiro teve um desempenho exatamente no nível de um goleiro médio, dada a qualidade dos chutes que ele enfrentou.<em><strong></strong></em></li></ul>



<p>Algumas observações:</p>



<ul class="wp-block-list"><li><strong>Todas&nbsp;</strong><strong>as análises serão feitas para os jogos dentro e fora de casa. Assim, podemos ver se jogar em casa tem alguma influência nessas estatísticas.</strong></li><li><strong>Os jogos analisados serão aqueles onde as forças dos times é a mesma, sempre 5 contra 5.</strong></li><li><strong>Para os jogadores, as estatística serão aplicada ao top10 atacantes da NHL no momento.</strong></li></ul>



<h3 class="wp-block-heading">QUAL A FREQUÊNCIA DE TORCEDORES POR TEMPORADA?</h3>



<p>Antes de verificarmos se a torcida influência no desempenho dos times e jogadores vamos analisar alguns números referente a média de torcedores por temporada. Para realizar a média de público na&nbsp;<em>NHL</em>&nbsp;os jogos realizados em lugares aberto como,&nbsp;<em>Stadium Series</em>,&nbsp;<em>Winter Classic e NHL heritage classic,&nbsp;</em>foram retirados dos cálculos. Pois, os número de torcedores nesses jogos ultrapassam a capacidade das arenas dos times. O que tornaria nossa média enviesada, não contando a história verdadeira.</p>



<figure class="wp-block-image"><img decoding="async" src="https://www.nhlbrasil.com.br/wp-content/uploads/2021/06/mediageral.png" alt="" class="wp-image-1907"/></figure>



<p>O gráfico mostra o claro impacto que a pandemia do coronavírus teve na última temporada. Saímos de uma média de mais de 17 mil torcedores nas temporadas regulares anteriores para uma média de pouco mais de 3 mil torcedores. E quando olhando para a pós-temporada da temporada 2018-2019 a média de torcedores sobe para mais de 18 mil torcedores. Agora vamos apresentar quais os times possuem as maiores médias de público durante as temporadas observadas.</p>



<h3 class="wp-block-heading">TEMPORADA 2018-2019 DA NHL</h3>



<p>Aqui temos tanto a temporada regular como a pós-temporada com a presença dos torcedores nas arenas.</p>



<h5 class="wp-block-heading">REGULAR</h5>



<figure class="wp-block-image"><img decoding="async" src="https://www.nhlbrasil.com.br/wp-content/uploads/2021/06/mediapub1819_juntado.png" alt="" class="wp-image-1910"/></figure>



<p>Na temporada regular o time do&nbsp;<strong>Montreal Canadiens</strong>&nbsp;é aquele que apresenta a maior média de público por jogos, um total 41 jogos como mandante. Isso mostra que quando o time joga em casa a torcida de fato está presente ocupando 99% da capacidade da arena. De uma forma geral podemos ver no gráfico que todos os times apresentam uma média acima dos 90% em relação à ocupação das arenas. Algumas equipes chamam ainda mais a atenção como o caso do<strong>&nbsp;Chicago Blackhawks, Minnesota Wild e o Pittsburgh Penguins</strong>&nbsp;que quando jogam em casa tendem a ter uma média de publico que ultrapassa a capacidade da arena.</p>



<h5 class="wp-block-heading"><em>PLAYOFFS</em></h5>



<figure class="wp-block-image"><img decoding="async" src="https://www.nhlbrasil.com.br/wp-content/uploads/2021/06/mediapuboffs1819_juntado.png" alt="" class="wp-image-1914"/></figure>



<p>Diferente do que vimos na temporada regular, aqui veremos a mágica da pós-temporada. Alguns pontos interessantes são:</p>



<ul class="wp-block-list"><li>Os times apresentam uma média de publico igual ou superior a capacidade da arena.</li><li><strong>Toronto Maple Leafs</strong>&nbsp;apresenta a maior média de público quando mandante.</li><li>Times que não figuraram entre as maiores médias na temporada regular, apresentam valores bem expressivos na pós-temporada. Mostrando que a torcida realmente se anima nesta segunda parte da temporada.</li></ul>



<h3 class="wp-block-heading">TEMPORADA 2019-2020 DA NHL</h3>



<p>Aqui temos os valores de torcedores apenas para a temporada regular.</p>



<h5 class="wp-block-heading">REGULAR</h5>



<figure class="wp-block-image"><img decoding="async" src="https://www.nhlbrasil.com.br/wp-content/uploads/2021/06/mediapub1920_juntado.png" alt="" class="wp-image-1912"/></figure>



<p>Apesar da temporada regular ter sido encurtada, 35-36 jogos por equipe como mandante, devido a pandemia do coronavírus, não temos um impacto tão significativo nas médias por equipe daquelas vistas na temporada regular 2018-2019. Aqui vemos a torcida do&nbsp;<strong>Chicago Blackhawks</strong>&nbsp;chamando a responsabilidade e colocando o time como aquele com a maior média de público por jogo, ultrapassando assim a capacidade da sua arena. Temos também a entrada do time do&nbsp;<strong>Vancouver Canucks</strong>&nbsp;que ocupou o lugar do time do&nbsp;<strong>Minnesota Wild</strong><em>.&nbsp;</em>Um dos motivos para essa aparição do time do Vancouver foi a sua boa fase, o que fez a torcida empolgar e impulsionar ainda mais o time nos jogos em casa.</p>



<h3 class="wp-block-heading">TEMPORADA 2020-21 DA NHL</h3>



<p>Como mencionado anteriormente a temporada 2020-2021 aconteceu com várias restrições com intuito de preservar as equipes e os fãs, o gráfico mostra a média de torcedores pelo número de jogos em casa onde houve a presença dos torcedores. Alguns times como,&nbsp;<strong>Buffalo, Calgary, Detroit, Edmonton, Montreal, Nashville, St. Louis, Ottawa, Toronto, Vancouver e Winnipeg</strong>&nbsp;não anunciaram números dos públicos e, portanto, foram omitidos.</p>



<figure class="wp-block-image"><img decoding="async" src="https://www.nhlbrasil.com.br/wp-content/uploads/2021/06/media2021final.png" alt="" class="wp-image-1913"/></figure>



<p>Esse gráfico é interessante porque de certa forma, mostra como alguns estados tiveram um controle maior sobre a pandemia o que ocasionou em um maior número de jogos em casa na presença dos fãs além do aumento da capacidade permitida de torcedores nas arenas. Não é possível comparar a média de torcedores entre os times pois temos um número de jogos diferente para cada um. Olhando de forma individual:</p>



<ul class="wp-block-list"><li><strong>Dallas, Arizona e Flórida</strong>&nbsp;foram o times com o maior número de jogos tendo a presença de fãs nas arenas.</li><li><strong>Vegas Golden Knights</strong>&nbsp;foi o time com a maior média torcedores, 4.362, representando 25% da capacidade da arena em 17 jogos.</li><li>O time de&nbsp;<strong>Chicago</strong>&nbsp;que apresentou ter uma base sólida de torcedores, como visto nas temporadas anteriores, teve apenas 2 jogos na temporada 2020-2021 na presença dos fãs, os dois últimos da temporada regular, uma média de 3.868 cerca de 20% da capacidade total da arena.</li></ul>



<p>Comparando com os gráficos anteriormente é nítido o impacto que a pandemia do coronavírus teve nos jogos em relação ao público presente. E&nbsp;<a href="https://twitter.com/seanshapiro/status/1392815996797440002?lang=bg">de acordo com Sean Shapiro</a>&nbsp;do site T<em>he Athletic “</em>os times da liga nacional de hóquei (NHL) deixaram de arrecadar quase US$3,6 bilhões em receita em 2020-21 devido a esse comparecimento limitado”.</p>



<h3 class="wp-block-heading">O QUE É A VANTAGEM DE CASA (HOME ADVANTAGE)?</h3>



<p>Refere-se à tendência dos times de ganharem com mais frequência quando competem em suas instalações. Isso chega a ser mais uma questão psicológica. Uma vez que, a vantagem de se jogar em casa pode estar associada ao apoio da torcida, já que o público impulsiona inspirando os jogadores a darem o máximo no gelo. Aliado, também, a familiaridade com a ambientação. Para os times visitantes as desvantagens são grandes. Temos o quesito relacionados às distâncias percorridas pelos times o que ocasiona fadiga devido às viagens; fatores ambientais, como o clima, fuso horário, mudança da arena e a ausência de torcida.</p>



<p>Este termo ganha ainda mais força quando chegamos a pós-temporada onde as partidas são disputadas no formato melhor de sete. Assim, o time com melhor campanha na temporada regular ganha a vantagem de disputar o último jogo da série em casa caso necessário. Tendo esses pontos levantados.</p>



<h3 class="wp-block-heading">SERÁ QUE NA NHL JOGAR EM CASA TRAZ ALGUMA VANTAGEM AOS TIMES ?</h3>



<p>Como a pós-temporada 2018-2019 e a temporada de 2020-2021 possuem as suas peculiaridades, vamos olhá-las de forma separadamente. Vamos analisar primeiro como foi o desempenho dos times nas temporadas regulares de 2018-2019 e 2019-2020.</p>



<figure class="wp-block-image"><img decoding="async" src="https://www.nhlbrasil.com.br/wp-content/uploads/2021/06/desempenho1820.png" alt="" class="wp-image-1970"/></figure>



<p>Pela tabela temos que na temporada regular de 2018-2019 a média de vitória dos times quando mandante foi de&nbsp;<strong>53.63%</strong>&nbsp;com um desvio padrão de&nbsp;<strong>8.95%</strong>. Portanto, quando o time joga em casa a chance dele vencer varia de&nbsp;<strong>44.67%</strong>&nbsp;a&nbsp;<strong>62.58%</strong>. Já na temporada regular de 2019-2020 a média de vitória dos times quando mandante foi de&nbsp;<strong>53.33%</strong>&nbsp;com um desvio padrão de&nbsp;<strong>8.75%</strong>. Temos uma pequena queda se comparamos a temporada anterior, mas nada estatisticamente significativo. Vale ressaltar que a temporada 2019-2020 foi encurtada devido à pandemia do coronavírus.</p>



<h5 class="wp-block-heading">PÓS-TEMPORADA 2018-2019</h5>



<p>Como apresentado anteriormente, a pós-temporada leva ainda mais torcedores às arenas. É como as séries são disputadas no formato melhor de sete os times jogam no mínimo duas vezes em casa. Assim, será que esse mando de “gelo” e um maior apoio da torcida são significativos?</p>



<p>Como nem todos os times possuem o mesmo número de jogos, vamos utilizar a mediana para evitar que o resultado seja perturbado por valores extremos baixos ou altos. Assim, a mediana na pós-temporada dos times mandantes foi de&nbsp;<strong>53.85%</strong>&nbsp;. Um valor bem próximo ao observado na temporada regular. Portanto, apesar de existir um pequeno aumento em relação a temporada regular, ter um maior número de torcedores nas arenas não chega a impactar tanto assim os resultados. Vamos ao gráfico que mostra essa porcentagem de vitórias em relação ao número de jogos dos times quando mandantes e sua média de público.</p>



<figure class="wp-block-image"><img decoding="async" src="https://www.nhlbrasil.com.br/wp-content/uploads/2021/06/win_rateP-1.png" alt="" class="wp-image-1945"/></figure>



<p>A pós-temporada é composta por 16 times, mas no gráfico há apenas 13 times. Isso porque,&nbsp;<strong>Pittsburgh, Tampa Bay e Winnipeg</strong>&nbsp;que foram classificados para essa fase não ganharam nenhum jogo em casa e portanto, foram omitidos.</p>



<p>Fatos interessantes:</p>



<ul class="wp-block-list"><li>Apesar do time de&nbsp;<strong>Toronto</strong>&nbsp;ter uma média de público, 19.644, superior ao outros times, isso não foi capaz de levar o time à segunda fase da pós-temporada. O time venceu apenas um jogo dos 3 disputados em casa, 33% de aproveitamento, na série contra o&nbsp;<strong>Boston Bruins</strong><strong>.&nbsp;</strong></li><li>Assim como Toronto,&nbsp;<strong>Nashville e Calgary</strong>&nbsp;venceram apenas um único jogo dos 3 disputados em casa e também caíram na primeira rodada. O time de Vegas,&nbsp;<strong>Golden Knights</strong><em>,&nbsp;</em>que também caiu na primeira rodada, venceu 2 dos 3 jogos disputados em casa.</li><li><strong>Colorado</strong>&nbsp;foi aquele que apresentou o melhor desempenho jogando em casa, ganhando 4 dos 5 disputados, mas deixou a desejar ao jogar fora de casa e acabou sendo eliminado.</li><li>O time de&nbsp;<strong>Tampa Bay</strong>&nbsp;que foi o vencedor do Troféu do Presidente, dado ao time com a maior pontuação na temporada regular, acabou sendo varrido.</li><li>O&nbsp;<strong>St. Louis Blues&nbsp;</strong>que apresentou um baixo aproveitamento nos jogos como mandante, 46.15%, foi o grande campeão da Copa Stanley vencendo o&nbsp;<strong>Bost</strong><strong>on</strong><strong>&nbsp;Bruins.</strong></li></ul>



<h3 class="wp-block-heading">TEMPORADA REGULAR 2020-2021</h3>



<p>Assim como na pós-temporada 2018-2019 não temos a mesma quantidade de jogos por time. O que torna a comparação entre os times difícil de ser mensurada. A tabela a seguir mostra o desempenho dos times como mandante com e sem a torcida presente. Como foi uma temporada de apenas 56 jogos por time, cada time jogou em casa 28 vezes. Aqui nosso objetivo é verificar se jogar na presença do público trouxe algum benefício ao time por mais que a quantidade de jogos em casa de alguns times seja pequena. Não iremos levar em consideração nesse primeiro momento outros fatores que contribuem para o bom desempenho de um time e sim simplesmente o fator casa.</p>



<figure class="wp-block-image"><img decoding="async" src="https://www.nhlbrasil.com.br/wp-content/uploads/2021/06/desempenho2021.png" alt="" class="wp-image-1971"/></figure>



<p>Olhando para os times que tiveram a oportunidade de jogar com o público presente, oito deles tiveram um aproveitamento abaixo dos 50% (<strong>Dallas Stars, Arizona Coyotes, Columbus Blue Jackets, San Jose Sharks, Philadelphia Flyers, New Jersey Devils, Los Angeles Kings e Anaheim Ducks</strong>). Desses 8 times, 2 deles,&nbsp;<strong>Dallas Stars e Arizona Coyotes</strong>, jogaram todos seus 28 jogos na presença do público. Logo, não podemos comparar se eles tiverem um desempenho melhor sem a presença da torcida. Com relação aos demais:</p>



<ul class="wp-block-list"><li><strong>Columbus Blue Jackets</strong>&nbsp;e&nbsp;<strong>Philadelphia Flyers</strong>,&nbsp;que tiveram ao menos 10 jogos com e sem público tiveram um aproveitamento melhor jogando sem a presença dos torcedores. O time de&nbsp;<strong>New Jersey</strong>&nbsp;piorou sem o apoio dos torcedores.</li><li><strong>San Jose Sharks</strong>,&nbsp;<strong>Los Angeles Kings</strong>&nbsp;e&nbsp;<strong>Anaheim Ducks</strong>&nbsp;que tiveram menos de 10 jogos na presença do público melhoram seu rendimento sem a presença do público, mas pouca coisa.</li></ul>



<p>É claro que precisamos dar os devidos pesos e olhar com cautela uma vez que a quantidade de jogos são diferentes, mas é interessante verificar que os times em sua grande maioria apresentaram um aproveitamento um pouco melhor quando jogaram sem a presença dos torcedores.&nbsp;</p>



<p>Chegamos ao fim da nossa primeira parte e o que podemos concluir com isso tudo é que diferente de outros esportes como, basquete, futebol americano e beisebol, onde jogar em casa tem um certo peso nos resultados. No caso do hóquei, podemos ver que apesar de ter um certo impacto o simples fato de jogar em casa por si só não é um fator determinante para determinarmos a vitória dentro do gelo. Este impacto que a torcida traz acaba sendo algo muito mais econômico onde as organizações são afetadas e o show dentro das arenas é comprometido.&nbsp;Para a nossa segunda parte vamos mergulhar nas estatísticas que levantamos inicialmente e verificar como a ausência da torcida afeta o desempenho dos times e dos jogadores.</p>
<p>O post <a href="http://estatidados.com.br/como-a-torcida-influencia-no-desempenho-do-time-da-nhl-parte-i/">COMO A TORCIDA INFLUENCIA NO DESEMPENHO DO TIME DA NHL – PARTE I</a> apareceu primeiro em <a href="http://estatidados.com.br">Estatidados</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>http://estatidados.com.br/como-a-torcida-influencia-no-desempenho-do-time-da-nhl-parte-i/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>O que são modelos científicos e como eles funcionam</title>
		<link>http://estatidados.com.br/o-que-sao-modelos-cientificos-e-como-eles-funcionam/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=o-que-sao-modelos-cientificos-e-como-eles-funcionam</link>
					<comments>http://estatidados.com.br/o-que-sao-modelos-cientificos-e-como-eles-funcionam/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Fri, 24 Sep 2021 12:15:13 +0000</pubDate>
				<category><![CDATA[Bruno Borges de Souza]]></category>
		<category><![CDATA[ciencia de dados]]></category>
		<category><![CDATA[Machine learning]]></category>
		<guid isPermaLink="false">http://estatidados.com.br/?p=652</guid>

					<description><![CDATA[<p>Com o conhecimento científico foi possível a realização de feitos antes inimagináveis, como a comunicação à velocidade da luz, nanotecnologia, fissão nuclear, viagem ao espaço, inteligência artificial, dentre outras. O poder do conhecimento científico está na criação de modelos que<a class="leiamais" href="http://estatidados.com.br/o-que-sao-modelos-cientificos-e-como-eles-funcionam/" title="O que são modelos científicos e como eles funcionam">...[Continuar lendo]</a></p>
<p>O post <a href="http://estatidados.com.br/o-que-sao-modelos-cientificos-e-como-eles-funcionam/">O que são modelos científicos e como eles funcionam</a> apareceu primeiro em <a href="http://estatidados.com.br">Estatidados</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Com o conhecimento científico foi possível a realização de feitos antes inimagináveis, como a comunicação à velocidade da luz, nanotecnologia, fissão nuclear, viagem ao espaço, inteligência artificial, dentre outras. O poder do conhecimento científico está na criação de modelos que representam a realidade ou um fragmento de um sistema. Eles são usados na construção de teorias científicas, que visam capturar a estrutura ou dinâmica da própria realidade. A validação de uma teoria envolve testar hipóteses, que é baseada na análise de padrões encontrados em dados empíricos. Quer a hipótese seja baseada em dados ou na teoria, um conjunto de dados empíricos precisa estar disponível para testar os resultados do modelo. Em seguida, um processo algorítmico é projetado e implementado com o objetivo de descrever matematicamente a estrutura ou dinâmica de interesse. Posteriormente, o modelo é executado e validado comparando dados simulados com dados empíricos. Os insights resultantes inspiram novas hipóteses científicas e o modelo é refinado iterativamente ou novos modelos são desenvolvidos.</p>



<p>Uma pergunta que instiga muitos filósofos epistemológicos é como modelos são criados. Isso significa entender como ocorre o processo de aprendizado de um conhecimento científico, ou seja, entender como, a partir de dados experimentais, conseguimos extrapolá-los e criar modelos confiáveis. O que significa ser confiável na metodologia científica? Como ocorre o processo de generalização a partir da dedução e da indução do conhecimento empírico para um princípio universal, como as leis de Newton ou a mecânica quântica?</p>



<p>Indo além do mero aprendizado humano, pode-se questionar ainda os atuais modelos de aprendizado de máquina e fazer os mesmos questionamentos: Como máquinas aprendem e geram modelos confiáveis baseados apenas em dados empíricos? O que veremos nesse artigo é um paralelo entre filosofia, ciência e a inteligência artificial para nos aprofundarmos nesses questionamentos. Veremos o que significa um &#8220;bom modelo&#8221; na ciência e como o teste de hipóteses valida o conhecimento científico. Também será discutido a &#8220;fonte do conhecimento&#8221;, com suas escolas de pensamento empirista e racionalista e onde o aprendizado de máquina se encontra.</p>



<h3 class="wp-block-heading">O que caracteriza um bom modelo?</h3>



<p>Em certo sentido, todos os modelos estão errados. Isso implica que nenhuma descrição da realidade é a última e todos os modelos atuais estão sujeitos a refinamentos conforme novos dados são apresentados.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><em>&#8220;Todos os modelos implicam em esquematizações e simplificações que se traduzem em “suposições”. E cada suposição de um modelo é uma fonte possível de erro.&#8221;</em></p></blockquote>



<p>Dessa maneira, entendemos que ao criar um modelo, o objetivo não deve ser criar uma descrição última ou perfeita da realidade, e sim minimizar o erro entre a realidade objetiva e a descrição subjetiva dada pelo modelo. Mas existe uma descrição última da realidade que pode ser representada por um modelo matemático perfeito? Esse é um debate filosófico interessante, iniciada por Platão e Aristóteles, e ainda continua sem resposta, com duas correntes filosóficas concorrentes: a realista e a antirrealista.</p>



<p>Platão defende em obras como A República e Fédon, que o conhecimento só é alcançado quando atingimos a “ideia” ou “conceito” do objeto. Essa ideia estaria em um mundo independente das objeto, no &#8220;Mundo das Ideias&#8221;. Exemplo: Um modelo de um cavalo seria representação ideal (no mundo das ideias) de um cavalo e o cavalo real seria uma forma imperfeita desta ideia. O mesmo pode-se dizer de conceitos como Justiça, Beleza, etc. Existe um único modelo perfeito que descreve esses conceitos, que estão no Mundo das Ideias. Aristóteles, por outro lado, critica Platão justamente por criar uma independência entre a ideia abstrata do objeto e o objeto em si. Ele concorda, por exemplo, que a observação e comparação de diferentes tipos de cavalo levam a um grupo de aspectos que definem o “modelo de cavalo”, mas tal modelo não existe independentemente, e sim são uma maneira de categorizar objetos com atributos semelhantes a &#8220;cavalos&#8221; observados empiricamente.</p>



<p>Atualmente, o debate se divide entre realistas e antirrealistas. Apesar das diversas interpretações, em geral podemos dizer que o realismo sobre objetos matemáticos, modelos científicos ou processos mentais, se caracteriza pela afirmação de que os objetos em questão “realmente existem”, ou “desfrutam de uma existência independente de qualquer cognição”, ou “estão entre os constituintes últimos do mundo real”&nbsp;<a href="https://www.scielo.br/pdf/ciedu/v5n1/a02v5n1.pdf" target="_blank" rel="noreferrer noopener">[1]</a>. Realistas dizem que os cientistas interpretam “todas as teorias científicas como tentativas de descrições da realidade”. Usando como exemplo a teoria da gravitação universal de Newton, Força, inércia, gravidade, são entidades que realmente existem, pois elas revelam a estrutura causal do mundo. Um antirrealista acredita justamente no contrário. Berkeley, famoso antirrealista, contra-argumentaria Newton afirmando que essas entidades são apenas criações teóricas que compilam a bem e experiência dos sentidos, mas não existem em um &#8220;Mundo das Ideias Platônico&#8221; ou é a última descrição da realidade. Se você já ouviu a discussão &#8220;A matemática é descoberta ou inventada?&#8221;, saiba que isso é basicamente uma discussão profunda sobre o realismo e antirrealismo da matemática.</p>



<p>Pensando de maneira mais concreta, independente se tais modelos existem ou são constructos mentais, é importante entender o que caracteriza um bom modelo, seja ele físico, biológico, econômico, etc. As principais características de tais modelos são:</p>



<ul class="wp-block-list"><li><strong>Parcimônia&nbsp;</strong>&#8211; Aqui temos a questão da simplicidade: Modelos que dependem de menos suposições para explicar um determinado fenômeno são preferíveis. Isso evita o sobreajuste (<em>overffiting</em>), e tais modelos podem falhar em fazer previsões para situações ainda não observadas. Cientistas e analistas de dados conhecem muito bem esse problema, e técnicas rotineiras, como o&nbsp;<em>cross-validation,</em>&nbsp;são tentativas de evitar o&nbsp;<em>overffiting.&nbsp;</em>Na ciência, um exemplo interessante era o debate entre geocentrismo e heliocentrismo. O modelo geocêntrico era demasiadamente complicado, pois ao assumir que a Terra era o centro do Sistema Solar, teria que criar &#8220;epiciclos&#8221; nas órbitas de outros planetas para explicar os problemas de perspectiva do movimento dos planetas ao serem observados na Terra. Aliás, falharia completamente se tivesse que explicar as órbitas em exoplanetas, algo que não acontece com o heliocentrismo.</li></ul>



<figure class="wp-block-image"><img decoding="async" src="https://media-exp1.licdn.com/dms/image/C4D12AQEexfyyvG-r6g/article-inline_image-shrink_1000_1488/0/1617204319498?e=1637798400&amp;v=beta&amp;t=NbF6ptNMl_ilTd9uJOE_AVPAaO6_RCu62D21Zu5srgE" alt="Não foi fornecido texto alternativo para esta imagem"/></figure>



<ul class="wp-block-list"><li><strong>Perspicácia&nbsp;</strong>&#8211; São modelos que revelam propriedades fundamentais do objeto que está sendo representado. Quando Newton, escreveu que sua teoria é &#8220;O Sistema do Mundo&#8221; ele não estava exagerando: Ele revelou propriedades fundamentais da gravidade, como a teoria da gravitação universal e as famosas Leis de Newton, que revolucionou a física em sua época. Um modelo ainda mais perspicaz é a Teoria da Relatividade Geral, onde Einstein entendeu a gravidade como a distorção causada pela matéria no tecido do próprio Espaço-Tempo.</li><li><strong>Generalização&nbsp;</strong>&#8211; São modelos que podem ser aplicados em uma ampla gama de situações. Por exemplo, as Leis de Newton podem explicar porque as maças caem enquanto a Lua não. As equações de Maxwell são capazes de explicar satisfatoriamente todos os fenômenos elétricos e magnéticos existentes e unificá-lo num único modelo , descrita pela&nbsp;<em>Teoria Eletromagnética.&nbsp;</em>Indo além, físicos buscaram criar modelos ainda mais gerais, buscando unificar as forças fundamentais da natureza: a unificação da força eletromagnética com a força nuclear fraca gerou a&nbsp;<em>Teoria Eletrofraca</em>, e uma unificação ainda maior, adicionando a força nuclear forte, gerou a chamada&nbsp;<em>Grande Teoria Unificada</em>&nbsp;(GUT) que pode explicar fenômenos que aconteceram próximo ao Big Bang, quando tais forças ainda não eram distintas. O Santa Graal da física é a unificação de todas as forças fundamentais numa única teoria (A Teoria de Tudo), mas a gravidade, a mais fraca das forças, ainda é difícil de ser explicada em nível quântico, causando total incompatibilidade entre a Teoria da Relatividade Geral e a Mecânica Quântica.</li><li><strong>Falseabilidade &#8211;&nbsp;</strong>Essa é uma propriedade fundamental da ciência. Todos os modelos científicos devem passar por um teste que possa verificar se determinada ideia, hipótese ou teoria é falsa. Um modelo é falseável se e somente faz previsões não triviais que podem, em princípio, ser falsificadas empiricamente. Se um modelo não faz previsões falsificáveis, então o modelo não pode ser avaliado empiricamente.<strong>&nbsp;</strong>Tal propriedade está diretamente relacionada com a&nbsp;<strong>previsão</strong>, já que para passar na falseabilidade, a predição do modelo deve ser avaliada no teste de hipóteses, onde o&nbsp;<em>status quo&nbsp;</em>e a hipótese alternativa (do modelo) são avaliado com dados observáveis. A teoria de Newton foi extensivamente avaliada em diversos fenômenos onde foi comprovado o poder de previsão. Apesar disso, em alguns fenômenos, onde o efeito gravitacional é muito forte ou onde o objeto está próximo à velocidade da luz, a teoria falha, e é necessário considerar efeitos relativísticos, que só podem ser explicadas pela relatividade especial e geral de Einstein. Uma teoria famosa que por enquanto nem teoricamente pode ser falseada é a Teoria da Supercordas, tentativa de unificar todas as forças fundamentais, onde os menores constituintes da realidade são pequenos filamentos de energia semelhantes a pequenas&nbsp;cordas vibrantes. O problema é que para detectar essas cordas seria necessário um acelerador de partículas maior que o sistema solar. Devido a essa impossibilidade de verificar se a teoria está correta ou não, muitos físicos não consideram a Teoria das Supercordas como ciência.</li></ul>



<h3 class="wp-block-heading">Teste de hipóteses: como os modelos são avaliados</h3>



<p>O Teste de hipóteses é um procedimento estatístico fundamental na tomada de decisões, entre aceitar ou não uma hipótese. Na ciência, é utilizado para validar resultados de estudos, com o objetivo de aceitar ou não a hipótese nula, dada um determinado nível de significância (<em>p-value</em>). Para exemplificar como o teste de hipóteses funciona, vamos considerar duas moedas. Gostaria de avaliar se essas moedas são justas ou viciadas. Um modelo de moeda justa teria como resultado de lançamentos um valor próximo a 50% cara e 50% coroa, enquanto um modelo de moeda viciada teria uma proporção diferente. A hipótese nula é sempre o status quo, ou seja, que a moeda é justa (você geralmente recebe uma moeda justa, você que propôs que ela é viciada, que no caso forma a hipótese alternativa). Jogando cada moeda 10 vezes chegamos no seguinte resultado, onde cara é C e coroa é K:</p>



<p><strong>Moeda 1: CKCCKKCCKC</strong></p>



<p><strong>Moeda 2: CCCCCCCKCC</strong></p>



<figure class="wp-block-image"><img decoding="async" src="https://media-exp1.licdn.com/dms/image/C4D12AQFlafulTZiFYw/article-inline_image-shrink_1000_1488/0/1617221791324?e=1637798400&amp;v=beta&amp;t=yO1M9AcAR76RrPUb1IgcmFA_DhDnUdTOopUj2C7NoKc" alt="Não foi fornecido texto alternativo para esta imagem"/></figure>



<p>Vamos avaliar a moeda 1: Quais chances de uma moeda justa dar 6 caras e 4 coroas? Usando a distribuição binomial, chegamos em 23%. Se usarmos um&nbsp;<em>p-value</em>&nbsp;de 5%, então a hipótese nula só seria rejeitada caso um evento incomum acontecesse menos que 5% das vezes. Com 23% de chance de ocorrer tal evento, falhamos em rejeitar a hipótese nula.</p>



<p>Agora vamos avaliar a moeda 2: Nessa caso, temos 9 caras e uma coroa. As chances disso acontecer é de 0.9%, valor suficiente para classificá-lo como &#8220;raro&#8221;, já que é menor que o p-value de 5%. Assim, rejeitamos a hipótese nula, ou seja, a moeda é viciada.</p>



<p>Então, o p-value avalia o quão provável ou improvável é um evento ao considerar a hipótese nula. Se você quer avaliar se uma vacina é segura, precisa fazer um teste em uma amostra significativa de pessoas e, considerando como hipótese nula que a vacina NÃO é segura , obter uma probabilidade baixa o suficiente de alguém ter algum efeito colateral ao tomar a vacina de maneira que te levaria a rejeitar a hipótese nula.</p>



<p>Pra exemplificar o conceito de ter uma amostra significativa, considere que você está avaliando uma terceira moeda, e fez três lançamentos com os seguintes resultados:</p>



<p><strong>Moeda 3: CCC</strong></p>



<p>Tivemos 100% de caras, o que leva a crer que é uma moeda viciada. Mas o p-value, ou seja, as chances de uma moeda justa dar esse resultado, é de 12,8%, o que falharia em rejeitar a hipótese de que a moeda é justa! Isso mostra que o teste de hipóteses é sensível ao tamanho da amostra. Então tenha muitos dados para avaliar.</p>



<h3 class="wp-block-heading">Teorias do Aprendizado</h3>



<p>Uns dos debates mais importantes da filosofia se diz a respeito de como aprendemos, ou seja, de que maneira o conhecimento genuíno e necessário é adquirido, compreendendo as diversas formas de buscá-lo Na filosofia moderna, houveram duas correntes diferentes de pensamento. A primeira, iniciada por René Descartes e que também foi adotada por Leibniz e Noam Chomsky é a&nbsp;<strong>racionalista</strong>. Como oposição, temos o&nbsp;<strong>empirismo,</strong>&nbsp;onde temos como maiores defensores dessa corrente Locke, Berkeley e Hume.</p>



<p>No&nbsp;<strong>racionalismo</strong>, tem-se a razão como principal fonte de conhecimento humane e acredita-se na dedução como principal método investigativo. Temos um &#8220;conhecimento inato&#8221; como certas categorias de espaço, de tempo e de causa e efeito. Com esse conhecimento, em sua forma mais pura, o racionalismo chega ao ponto de sustentar que todas as nossas crenças racionais, e a totalidade do conhecimento humano, consistem em primeiros princípios e conceitos inatos que são de alguma forma gerados e certificados pela razão, junto com qualquer coisa logicamente dedutível a partir desses primeiros princípios. Esses princípios, os fundamentos do nosso conhecimento, são proposições que são evidentes por si mesmas (auto-evidentes). Por exemplo, Descartes acreditava que deveríamos desconfiar de tudo, menos na própria capacidade de duvidar e, a partir dessa certeza do &#8220;Penso, logo existo&#8221;, seriam deduzidos novos conhecimentos. Outro exemplo seriam os teoremas matemáticos, onde por dedução podemos chegar a conclusões racionais absolutas.</p>



<p>O&nbsp;<strong>empirismo</strong>, por outro lado, afirma que a experiência é a fonte do conhecimento, tendo a indução da experiência como principal método investigativo, Para os empiristas, todas as nossas ideias vêm unicamente da experiência sensorial. Nosso conhecimento é&nbsp;<em>a posteriori</em>, na medida em vamos tendo experiência do assunto, e é dependente da experiência dos sentidos. Os empiristas também negam a implicação da tese do conceito inato, correspondente a de que temos ideias inatas na área de assunto. Eles também rejeitam a versão correspondente da tese da superioridade da razão. Visto que a razão por si só não nos dá nenhum conhecimento, certamente não nos dá um conhecimento superior. Os empiristas podem afirmar, como alguns fazem para alguns sujeitos, que os racionalistas estão corretos ao afirmar que a experiência não pode nos dar conhecimento. A conclusão que eles tiram dessa lição racionalista é que não sabemos nada. David Hume, um empirista radical, gostava de usar como exemplo o nascer do sol. Ele dizia que o nascer do sol é um conhecimento adquirido através da indução, já que você viu o sol nascer no leste desde que você nasceu, mas não temos garantias de que ele vai nascer amanhã, isso não pode ser uma afirmação auto-evidente.</p>



<p>Racionalismo e empirismo não precisam entrar em conflito. Podemos ser racionalistas em matemática, já que teoremas como o Teorema de Pitágoras ou o Teorema Fundamental do Cálculo podem ser deduzidos a priori, e podemos ser empiristas em todas ou em algumas das ciências físicas, utilizando o teste de hipóteses para validar experimentos. Racionalismo e empirismo só entram em conflito quando formulados para cobrir o mesmo assunto. E para solucionar esse conflito, chegamos em&nbsp;<strong>Immanuel Kant,&nbsp;</strong>que revolucionou a epistemologia em sua grande obra &#8220;Crítica da Razão Pura&#8221;.</p>



<p>Kant cria a Teoria dos Juízos, onde ele dirá que existem o Juízo analítico e o Juízo sintético. Juízos analíticos são aqueles em que o predicado não acrescenta em nada o sujeito, exemplo &#8220;Todo triângulo tem três lados&#8221; ou &#8220;Todos os corpos são extensos. Como não dependem de tempo e lugar, são juízos&nbsp;<em>a priori</em>&nbsp;e universais. Juízos sintéticos são aqueles que acrescentam algo ao sujeito, como por exemplo &#8220;Todos os corpos são pesados&#8221; e sempre partem da experiência. Podem ser divididos em dois tipo:&nbsp;<em>A priori&nbsp;</em>e&nbsp;<em>A posteriori.&nbsp;</em>O juízo sintético&nbsp;<em>a posteriori&nbsp;</em>é baseado na indução da experiência, enquanto o juízo sintético&nbsp;<em>a priori&nbsp;</em>não necessitam da experiência imediata, como as afirmações matemáticas. Parece confuso à vista, já que se tende a acreditar que a afirmação &#8220;7+5=12&#8221; é puramente analítica, mas como Kant descreve em &#8220;Crítica da Razão Pura&#8221; [2]:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>Poder-se-ia em verdade crer, à primeira vista, que a proposição 7 + 5 = 12 é puramente analítica, resultante, segundo o princípio de contradição, do conceito de uma soma de sete e cinco. Mas se a considerarmos com mais atenção, acharemos que o conceito de soma de sete e cinco não contém mais do que a união dos dois números em um só, o que não faz pensar qual seja esse número único que compreenda aos outros dois. O conceito de 12 não é de modo algum percebido só pelo pensamento da união de cinco e sete, e posso decompor todo meu conceito dessa soma tanto quanto quiser, sem que por isso encontre o número 12. É preciso, pois, ultrapassar esse conceito recorrendo-se à intuição correspondente a um dos dois números, e aditar sucessivamente ao conceito sete as cinco unidades dadas na intuição. [&#8230;] A proposição aritmética é, pois, sempre sintética: o que se compreende ainda mais claramente se se tomam números maiores, pois então é evidente que, por mais que volvamos e coloquemos nosso conceito quanto quisermos, nunca poderemos achar a soma mediante a simples decomposição de nossos conceitos e sem o auxilio da intuição.&nbsp;</p></blockquote>



<p>Um problema que surge imediatamente quando se fala em juízos sintéticos a priori é o verdadeiro problema da razão pura. Como são possíveis os juízos sintéticos&nbsp;<em>a priori</em>? Como se origina o conhecimento da física teórica e da matemática pura? Como são teorizados os modelos científicos que tanto transformaram o mundo? Kant, para responder essa pergunta, cria a&nbsp;<strong>Teoria Elementar Transcendental,</strong>&nbsp;divididas em estética e lógica transcendental.</p>



<p>A Estética transcendental é a ciência de todos os princípios. É a priori, e diz respeito à capacidade de adquirirmos conhecimento de acordo com a sensibilidade. É apenas através da sensibilidade que podemos ter uma intuição do objetos de estudo. Entenda a intuição como a capacidade de encontrar indícios que levem a alguma correlação, generalização, a algum conhecimento sintético. Conforme afirma Kant:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>Todo pensamento deve em última análise, seja direta ou indiretamente, mediante certos caracteres, referir-se às intuições, e, conseguintemente, à sensibilidade, porque de outro modo nenhum objeto nos pode ser dado.</p></blockquote>



<p>Entremos agora no conceito de<strong>&nbsp;lógica transcendental</strong>. Quando falamos da lógica geral, abstraímos a matéria do conhecimento intelectual e toda a diversidade de seus objetos, e só nos ocupamos com a forma do pensamento. Como Lógica&nbsp;<strong>pura</strong>, não tem nenhum princípio empírico e, por conseguinte, não empresta nada da Psicologia, que não exerce influência alguma sobre o cânon do entendimento. É uma doutrina demonstrada, e tudo deve ser nela amplamente “a priori”. Uma Lógica geral é&nbsp;<strong>aplicada</strong>, quando se ocupa das regras do uso do entendimento, sob as condições empíricas e subjetivas que nos ensina a psicologia. Esta Lógica tem também princípios empíricos, ainda que seja geral enquanto trata da aplicação do entendimento sem distinção de objetos [2]. Para Kant, é preciso fazer a passagem da lógica geral, para a&nbsp;<strong>transcendental</strong>. A Lógica transcendental está mais relacionado ao entendimento e à organização do pensamento. Esta Lógica investigaria também a origem do nosso conhecimento de objetos, enquanto tal origem não possa ser atribuída aos objetos; a Lógica geral, pelo contrário, não se ocupa com essa origem do conhecimento, e só se limita a examinar as nossas representações sob o ponto de vista das leis com que o entendimento a emprega e reúne entre si, quando pensa. A lógica transcendental isola o entendimento (assim como a estética transcendental isola a sensibilidade). Esse entendimento é formado a partir da&nbsp;<strong>intuição</strong>, que é determinada&nbsp;<em>a priori&nbsp;</em>pelas formas da sensibilidade que são o espaço e o tempo.</p>



<h3 class="wp-block-heading">Como máquinas aprendem</h3>



<p>O aprendizado de máquina (<em>machine learning</em>) é um ramo da inteligência artificial onde um sistema é capaz de analisar uma grande quantidade de dados, além de usar uma variedade de algoritmos para encontrar padrões no banco de dados. Com base nesses padrões, são gerados modelos (não explicitamente programados por humanos) que conseguem fazer predições. Modelos gerados por algoritmos de&nbsp;<em>machine learning&nbsp;</em>são científicos, pois precisam representar da maneira mais realista o objeto em estudo, satisfazendo princípios como parcimônia, generalização e capacidade de predição.</p>



<p>Já discutimos que modelos científicos são &#8220;fundamentalmente errados&#8221;. Todos os modelos de&nbsp;<em>machine learning</em>&nbsp;usa esse princípio para otimizar (minimizar) o gap entre a previsão e o valor real. Nenhum algoritmo de&nbsp;<em>machine learning</em>&nbsp;cria um modelo 100% acurado. Tais modelos são construções &#8220;artificiais&#8221; que captura um aspecto do objeto que nos interessa e que geram predições que são úteis na tomada de decisões.</p>



<p>Mas como tais algoritmos aprendem? Pelo que vimos a respeito das teorias do conhecimento, podemos dizer que tais modelos são empiristas, já que tentam induzir um modelo a partir de observações nos dados históricos. Mas a construção de tais modelos é racionalista, um conhecimento sintético a priori, já que são aplicados métodos dedutivos para criar algoritmos empiristas. Como humanos deduzem tais algoritmos? A partir da sensibilidade e intuição, podemos buscar analogias nas criações da natureza, como o cérebro ou a evolução, ou na forma como descrevemos o mundo, a partir de símbolos, ou na maneira em que atualizamos nossas crenças a partir de nossas observações, etc. No livro de Paulo Domingos, &#8220;O Algoritmo Mestre&#8221; [3], são classificados cinco tribos de algoritmos de&nbsp;<em>machine learning</em>:</p>



<p>1)&nbsp;<strong>Conexionistas</strong>: É baseada na simulação de componentes do cérebro e tem como principal algoritmo as redes neurais. Surgiu em 1943, quando McCulloch e Pitts cria o conceito de Percéptron, um neurônio artificial de uma camada. As redes neurais artificiais (ANNs) são compostas por camadas de nós, contendo uma camada de entrada, uma ou mais camadas ocultas e uma camada de saída. Cada nó, ou neurônio artificial, se conecta a outro e tem um peso e limite associados. Se a saída de qualquer nó individual estiver acima do valor limite especificado, esse nó será ativado, enviando dados para a próxima camada da rede. A rede neural aprende ajustando os pesos de conexão dos nós de maneira a minimizar a função de perda (a diferença entre o valor real e previsto), usando uma técnica conhecida como&nbsp;<em>backpropagation,&nbsp;</em>onde os pesos da camada de saída são retro propagados usando a regra da cadeia do cálculo diferencial.</p>



<figure class="wp-block-image"><img decoding="async" src="https://media-exp1.licdn.com/dms/image/C4D12AQFYhj1iNmVUcw/article-inline_image-shrink_1000_1488/0/1617727585967?e=1637798400&amp;v=beta&amp;t=7UoPk5uRtZxRXWuEquS9AR9kAJ7aCFTGUm1LSYsb__U" alt="Não foi fornecido texto alternativo para esta imagem"/></figure>



<p>2)&nbsp;<strong>Simbolistas</strong>: A abordagem baseia-se na suposição de que muitos aspectos da inteligência podem ser alcançados pela manipulação de símbolos, uma suposição definida como a “hipótese dos sistemas de símbolos físicos” por Allen Newell e Herbert&nbsp;Simon em meados dos anos 1960. Os algoritmos de Machine Learning simbólicos são focados no desenvolvimento de sistema de manipulação simbólica e em processos cognitivos. Ou seja, buscam simular a forma com que o ser humano pensa para resolver um determinado problema mas, para isso, é necessário que se entre com as informações sobre o mesmo para que então o algoritmo desenvolva uma forma de resolvê-lo. Um exemplo de algoritmo simbolista é a indução de árvores de decisão, que criam regras automáticas que categorizam as instâncias baseados em suas variáveis. Cada nó na árvore de decisão é uma variável a ser dividida em subnós, e essa estrutura é criada de maneira otimizada de maneira a minimizar a entropia nos nós da folha (<em>leaf nodes</em>) da árvore.</p>



<figure class="wp-block-image"><img decoding="async" src="https://media-exp1.licdn.com/dms/image/C4D12AQHYAb98DciFYw/article-inline_image-shrink_1000_1488/0/1617731217381?e=1637798400&amp;v=beta&amp;t=zd09x5V5MjtOFWXU1Nf5--mepxvsfJqnS4Sc7UIgnNs" alt="Não foi fornecido texto alternativo para esta imagem"/></figure>



<p>3)&nbsp;<strong>Analogistas</strong>; aprendem fazendo extrapolações a partir de julgamentos de semelhança nos dados. Os mais conhecidos são os algoritmos KNN e SVM. O KNN é bem simples: Para classificar uma instância X primeiro você encontra os k pontos mais próximo de X e, a seguir, classifica os pontos pela maioria dos votos de seus k vizinhos. Cada objeto vota em sua classe e a classe com mais votos é considerada a previsão. Para encontrar os pontos semelhantes mais próximos, você encontra a distância entre os pontos usando medidas de distância como distância euclidiana, distância de Hamming, distância de Manhattan e distância de Minkowski.</p>



<figure class="wp-block-image"><img decoding="async" src="https://media-exp1.licdn.com/dms/image/C4D12AQHbqylyge4FjA/article-inline_image-shrink_1000_1488/0/1617729804915?e=1637798400&amp;v=beta&amp;t=JjCLwj0EuOdHNhdP5GyyNbAst9pSaap4UgDBtb2sdGE" alt="Não foi fornecido texto alternativo para esta imagem"/></figure>



<p>O SVM usam máquinas de vetores de suporte para encontrar a melhor maneira de separar os dados. É usado técnicas de otimização matemática para encontrar a encontrar a equação que define o melhor hiperplano, maximizando as distância dos vetores de suporte (margens do hiperplano).</p>



<figure class="wp-block-image"><img decoding="async" src="https://media-exp1.licdn.com/dms/image/C4D12AQFgPsVWupHRJw/article-inline_image-shrink_1000_1488/0/1617729838032?e=1637798400&amp;v=beta&amp;t=dOP0Op5lfhsTh7L9-2-kM-wALC4m0JCgzJl8vlyFURc" alt="Não foi fornecido texto alternativo para esta imagem"/></figure>



<p>4)&nbsp;<strong>Evolucionários</strong>: São algoritmos que abduzem o processo de seleção natural de Darwin e um típico algoritmo funciona seguindo as seguintes etapas:</p>



<ol class="wp-block-list"><li>Initial Population&nbsp;&#8211; É inicializado aleatoriamente um conjunto de indivíduos que formará nossa população. No nosso caso, os indivíduos são os modelos com parâmetros escolhidos aleatoriamente;</li><li>Fitness&nbsp;&#8211; Devemos testar essa população em um ambiente hostil. Somente alguns indivíduos vão sobreviver. Você pode criar um ambiente hostil simplesmente estabelecendo um mínimo para o score do modelo;</li><li>Crossover&nbsp;e&nbsp;Mutation<em>&nbsp;&#8211;&nbsp;</em>Define os critérios para a próxima geração. Na etapa de&nbsp;<em>crossover,&nbsp;</em>os genes (hiperparâmetros) dos pais serão recombinados, para produzir filhos, cada filho herdando alguns genes de cada pai. Para manter a diversidade, adicionamos um pouco de mutação nos filhos;</li><li>Offspring<strong><em>&nbsp;</em></strong><em>&#8211;&nbsp;</em>A próxima geração conterá os pais sobreviventes e os filhos, mantemos os pais sobreviventes para manter os melhores genes, caso o valor dos genes do filho seja pior que os pais. O processo é repetido até que os indivíduos da última geração sejam os mais bem evoluídos.</li></ol>



<figure class="wp-block-image"><img decoding="async" src="https://media-exp1.licdn.com/dms/image/C4D12AQGvARP27t4o5g/article-inline_image-shrink_1000_1488/0/1617727801313?e=1637798400&amp;v=beta&amp;t=Y19S0mjZZP0LsvLIP_oVK72CNirjqKPIOVoX8y46DCg" alt="Não foi fornecido texto alternativo para esta imagem"/></figure>



<p>5)&nbsp;<strong>Bayesianos</strong>: Tem como principal motivador o famoso teorema de bayes. O pensamento Bayesiano fornece uma abordagem probabilística para a aprendizagem e está baseado na suposição de que as quantidades de interesse são reguladas por distribuições de probabilidades. Para um algoritmo bayesiano, &#8220;aprender&#8221; significa atualizar as chances&nbsp;<em>a priori</em>&nbsp;de um evento baseado em novas evidências a posteriori. Por exemplo, usando o teorema de Bayes, podemos encontrar a probabilidade de A acontecer, dado que B ocorreu. Aqui, B é a evidência&nbsp;<em>a posteriori</em>&nbsp;e A é a hipótese&nbsp;<em>a priori</em>. A suposição feita aqui é que os preditores / recursos são independentes. Ou seja, a presença de um determinado recurso não afeta o outro. Por isso que tal algoritmo é chamado de ingênuo (<em>naive bayes</em>).</p>



<figure class="wp-block-image"><img decoding="async" src="https://media-exp1.licdn.com/dms/image/C4D12AQE5et-hQJyYvw/article-inline_image-shrink_1000_1488/0/1617728213300?e=1637798400&amp;v=beta&amp;t=Jq0LB-nwRJH3MxwlHS1g7dhfF5cldxYLFfARFFfCghs" alt="Não foi fornecido texto alternativo para esta imagem"/></figure>



<p>Assim, o&nbsp;<em>machine learning</em>&nbsp;pode ser considerado uma implementação por humanos de técnicas em máquinas para adquirir conhecimento a partir de observações&nbsp;<em>a posteriori</em>. A origem do sucesso do aprendizado de máquina depende de sua capacidade de derivar relações entre fenômenos e potencialmente descobrir o estado oculto (latente) de um sistema (indução), ou seja, potencialmente fornecer um conhecimento verdadeiro intrínseco do sistema. A identificação do sistema e o design baseado no modelo com o auxílio do aprendizado de máquina constituem um primeiro passo para encontrar padrões de um sistema por meio de uma abordagem mista de aprendizagem&nbsp;<em>a priori &#8211; a posteriori</em>, que, retrospectivamente, segue a filosofia de Kant.</p>



<p>Para finalizar, cabe uma última questão. Poderá existir um algoritmo de machine learning que poderá pensar como nós? A reposta iria depender da capacidade de máquinas em poder ter uma estética e lógica transcendental, que a permitam extrair conhecimento a partir da sensibilidade com os objetos ao seu redor iue organizar seus pensamentos com o objetivo de gerar novas deduções lógicas capazes de ampliar o conhecimento científico. O principal problema é o paradoxo que surge ao criar tal máquina. Como faríamos para uma máquina procurar princípios a partir da sensibilidade e intuição do mundo, sem que precisássemos explicitamente introduzir esses princípios em suas mentes?</p>



<p>[1] Silva, M. R. D. (1998). Realismo e anti-realismo na ciência: aspectos introdutórios de uma discussão sobre a natureza das teorias.&nbsp;<em>Ciência &amp; Educação (Bauru)</em>,&nbsp;<em>5</em>(1), 07-13.</p>



<p>[2] Kant, I. (2020).&nbsp;<em>Crítica da razão pura</em>. EDIPRO.</p>



<p>[3] Domingos, P. (2017).&nbsp;<em>O algoritmo mestre: como a busca pelo algoritmo de machine learning definitivo recriará nosso mundo</em>. Novatec Editora.</p>
<p>O post <a href="http://estatidados.com.br/o-que-sao-modelos-cientificos-e-como-eles-funcionam/">O que são modelos científicos e como eles funcionam</a> apareceu primeiro em <a href="http://estatidados.com.br">Estatidados</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>http://estatidados.com.br/o-que-sao-modelos-cientificos-e-como-eles-funcionam/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Do scrap ao deploy com Shiny</title>
		<link>http://estatidados.com.br/do-scrap-ao-deploy-com-shiny/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=do-scrap-ao-deploy-com-shiny</link>
					<comments>http://estatidados.com.br/do-scrap-ao-deploy-com-shiny/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Fri, 24 Sep 2021 10:51:52 +0000</pubDate>
				<category><![CDATA[ciencia de dados]]></category>
		<category><![CDATA[Matheus Duzzi Ribeiro]]></category>
		<category><![CDATA[Professores colaboradores]]></category>
		<guid isPermaLink="false">http://estatidados.com.br/?p=650</guid>

					<description><![CDATA[<p>Mostrando as empresas por trás dos tickers da bolsa e prevendo seu fechamento de maneira direta A partir do momento que você precisa deixar uma análise, modelo ou mesmo um resultado disponível para as pessoas da sua equipe em qualquer<a class="leiamais" href="http://estatidados.com.br/do-scrap-ao-deploy-com-shiny/" title="Do scrap ao deploy com Shiny">...[Continuar lendo]</a></p>
<p>O post <a href="http://estatidados.com.br/do-scrap-ao-deploy-com-shiny/">Do scrap ao deploy com Shiny</a> apareceu primeiro em <a href="http://estatidados.com.br">Estatidados</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p id="a0c1">Mostrando as empresas por trás dos tickers da bolsa e prevendo seu fechamento de maneira direta</p>



<p id="e4b1">A partir do momento que você precisa deixar uma análise, modelo ou mesmo um resultado disponível para as pessoas da sua equipe em qualquer momento, é hora de lidar com o que chamamos de&nbsp;<em>deploy&nbsp;</em>de produtos de dados.</p>



<p id="4f44">O termo&nbsp;<em>deploy&nbsp;</em>remete a ação de automatizar aquilo que você fez na sua própria máquina, deixando o algoritmo executar periodicamente a rotina programada. Esse código pode ser de uma coleta, limpeza, modelagem, análise ou mesmo todas essas etapas juntas para compor um dashboard, como iremos fazer aqui hoje.</p>



<p id="b61d">Assim, o problema que iremos resolver aqui é:&nbsp;<em>mostrar de maneira dinâmica as principais características das empresa listadas na bolsa brasileira, a ibovespa, além de aplicar um modelo preditivo para tentar prever o fechamento de cada ticker nos dias seguintes ao acesso da dashboard, de modo que o usuário possa ter uma visão geral daquela empresa e tomar suas decisões de negócio baseada em dados.</em></p>



<figure class="wp-block-image"><img decoding="async" src="https://miro.medium.com/max/1400/0*3hH9uro8TpZj_7Hr.png" alt=""/><figcaption>Ciclo de vida de desenvolvimento de software — Fonte: Trybe</figcaption></figure>



<p id="851c">Assim, pensando no ciclo acima e no problema exposto, seguiremos com os seguintes passos:</p>



<p id="8eb6"><strong>Coleta de dados</strong></p>



<ul class="wp-block-list"><li>Vamos entender&nbsp;<em>como</em>,&nbsp;<em>quando</em>&nbsp;e de&nbsp;<em>onde</em>&nbsp;coletaremos os dados. Dessa forma, a partir disso poderemos ver onde existe necessidade de adaptar a forma como usamos a fonte de dados para “plugar” da melhor maneira no nosso dashboard.</li></ul>



<p id="8d6e"><strong>Desenvolvimento da aplicação</strong></p>



<ul class="wp-block-list"><li>Construir o painel em Shiny, pensando já que esse painel deverá&nbsp;<em>“se manter sozinho”</em>. Digo isso, pois se estamos acostumados a sempre construir uma análise para ser mantida localmente, criamos alguns hábitos como o uso de variáveis que armazenam os dados para uso linear durante o código, sofrendo mudanças que muitas vezes não podem ser desfeitas durante a compilação, como por exemplo, a limpeza de dados faltantes.</li></ul>



<p id="d7b7"><strong>Deploy</strong></p>



<ul class="wp-block-list"><li>Por fim, chegamos ao ponto de publicar no Shiny Apps. Sempre tenha em mente algumas boas práticas nessa etapa, como: verificar se o arquivo do shiny está como&nbsp;<em>app.R</em>, se esse arquivo está em uma pasta própria para o projeto e se os possíveis arquivos utilizados estão dentro dessa pasta.</li></ul>



<h1 class="wp-block-heading" id="3a9b">Coleta de dados</h1>



<p id="2cc3">Pensando nos dados que alimentaram nosso painel, teremos duas fontes, sendo elas a API do Yahoo!, a&nbsp;<em>Yahoo Finance</em>, e um scrap da&nbsp;<em>Wikipedia</em>. A escolha dessas fontes têm motivos bem simples:</p>



<ul class="wp-block-list"><li>A API do Yahoo é gratuita, tendo um limite de requests razoável para o nosso objetivo e a latência de atualização é viável, pensando que iremos querer somente fechamento dos tickers e não sua cotação em tempo real.</li><li>A Wikipedia em sua natureza possui um bom padrão de publicação, de modo que uma rotina de webscraping consegue facilmente consumir seus dados.</li></ul>



<figure class="wp-block-image"><img decoding="async" src="https://miro.medium.com/max/810/1*qgAL2MJ40vsWIKYvypOAhA.png" alt=""/></figure>



<p id="f530">Veja que o primeiro parágrafo de uma página de empresa conta com uma introdução simples e direta da mesma.</p>



<figure class="wp-block-image"><img decoding="async" src="https://miro.medium.com/max/403/1*cYdSvl57eiAMA0YrebzBBw.png" alt=""/></figure>



<p id="bf70">Além disso, o site disponibiliza um card que pode ser transformado em um “cartão de apresentação” da empresa em forma de tabela.</p>



<figure class="wp-block-image"><img decoding="async" src="https://miro.medium.com/max/875/1*yGfSojmhp2UGV80FjEP3CA.png" alt=""/></figure>



<p id="e279">Por fim, a própria Wikipedia disponibiliza também uma tabela com as principais empresas listadas na bolsa de valores, implantando em cada um dos nomes o link que guia para sua página na enciclopédia digital, de modo que possamos usar essa lista para construir a escolha do usuário de qual empresa ele gostaria de ver em sua tela, guiando qual “vertente” da Wikipedia devemos puxar os dados.</p>



<h1 class="wp-block-heading" id="fc35"><strong>Desenvolvimento e deploy da aplicação</strong></h1>



<p id="e43e">Dado que o Shiny possui um server gratuito disponível para deploy, isto é, podemos deixar nosso painel disponível para quem queira acessar (podendo até implementar uma página de autenticação, se necessário), iremos programar o dashboard em R e publicar no shinyapps.io.</p>



<p id="ef93">É legal ressaltar que além do shinyapps, outra alternativa muito interessante para quem programa em python e deseja colocar seus dashboards em produção é o&nbsp;<em>Streamlit</em>&nbsp;, pelo qual podemos vincular um código no github para virar um painel.</p>



<p id="f56e">Agora que já sabemos de todos os passos a serem seguidos, é hora de por a mão na massa!</p>



<pre class="wp-block-preformatted">library(tidyr)<br>library(dplyr)<br>library(rvest)<br>library(dygraphs)<br>library(BatchGetSymbols)<br>library(shiny)<br>library(forecast)# tabela de acoes<br>wiki1 &lt;- "<a href="https://pt.wikipedia.org/wiki/Lista_de_companhias_citadas_no_Ibovespa">https://pt.wikipedia.org/wiki/Lista_de_companhias_citadas_no_Ibovespa</a>"<br>doc1 &lt;- read_html(wiki1) <br>doc1 %&gt;% <br>    html_nodes(xpath = '//*[<a href="http://twitter.com/id">@id</a>="mw-content-text"]/div/table[1]') %&gt;%<br>    html_table() -&gt; tabela_b3 <br>tabela_acoes &lt;- as.data.frame(tabela_b3) </pre>



<p id="4ec5">Importando as bibliotecas que serão utilizadas, podemos ver alguns nomes comuns para os mais familiarizados com R, como&nbsp;<em>tidyr</em>,&nbsp;<em>dplyr</em>,&nbsp;<em>rvest</em>&nbsp;e&nbsp;<em>shiny.&nbsp;</em>Quanto as<em>&nbsp;</em>outras bibliotecas, temos a seguinte composição:</p>



<ul class="wp-block-list"><li><strong>Dygraphs:</strong>&nbsp;biblioteca que entrega gráficos interativos de&nbsp;<em>“candle”</em>, famosos no mundo da renda variável.</li><li><strong>BatchGetSymbols:</strong>&nbsp;API do Yahoo! Finance</li><li><strong>Forecast:</strong>&nbsp;algoritmos de manipulação e modelagem de séries temporais</li></ul>



<p id="ff6f">Dito isso, começamos com o scrap de dados da Wikipedia, e para esse tarefa iremos iniciar com a coleta dos dados da tabela de tickers. Nesse momento, a ideia é que apontemos a página, por meio de uma URL, a qual iremos escolher o componente HTML que queremos coletar, e por fim, passamos o dado coletado para um dataframe.</p>



<pre class="wp-block-preformatted">links = doc1 %&gt;% html_nodes(xpath = "//td/a") %&gt;% <br>    html_attr("href")<br>links = data.frame(links)<br>links = links %&gt;% filter(!grepl("/wiki/Ficheiro",links) &amp;  !grepl("<a href="http://www.taesa.com.br/">http://www.taesa.com.br/</a>",links))</pre>



<p id="0b3b">Visto que sabemos que os links para cada empresa estão como hiperlinks, passamos novamente um “filtro” no HTML, pegando esses dados e retirando alguns erros de processamento, como duplicação ou termos que não gostaríamos que aparecesse no dataframe de links.</p>



<pre class="wp-block-preformatted">tabela_acoes = tabela_acoes %&gt;% filter(`Código` != "BBDC3" &amp; `Código` !="PETR3" &amp; `Código` !="BRML3" &amp; `Código` != "CCRO3" &amp; `Código` != "ELET3")<br>acesso = cbind(tabela_acoes,links)<br>acesso = acesso %&gt;% select(`Código`,links)</pre>



<p id="3c21">Por fim, retiramos alguns casos onde a tabela está mesclada, de modo que o join entre os links de cada empresa no Wikipedia e o ticker permaneçam na mesma ordem. Unimos os dados em um único dataframe e fechamos a etapa de coleta.</p>



<pre class="wp-block-preformatted">ui &lt;- fluidPage(<br>    theme = shinythemes::shinytheme("united"),titlePanel("Conhecendo a B3"),sidebarLayout(<br>        sidebarPanel(<br>            h3("Escolha uma ação"),<br>            selectInput("escolha_acao", "Ação:", <br>                        choices = acesso$Código)<br>        ),<br>        mainPanel(<br>            textOutput("nome_empresa"),<br>            tags$hr(style="border-color: white;"),tags$hr(style="border-color: white;"),<br>            textOutput("primeiro_paragrafo"),<br>            tags$hr(style="border-color: white;"),tags$hr(style="border-color: white;"),<br>            DT::dataTableOutput("card_wiki"),<br>            tags$hr(style="border-color: white;"),tags$hr(style="border-color: white;"),<br>            h3("Cotação Histórica da empresa"),<br>            dygraphOutput("candle"),<br>            tags$hr(style="border-color: white;"),tags$hr(style="border-color: white;"),<br>            h3("Previsão para os próximos dias (fechamento)"),<br>            tags$hr(style="border-color: white;"),<br>            DT::dataTableOutput("prev"),<br>        )<br>    )<br>)</pre>



<p id="c7bb">Partindo para a construção da interface, codificamos um painel simples de seleção do ticker com&nbsp;<em>SidebarPanel</em>, alinhado<em>&nbsp;</em>a dois componentes de texto dinâmicos (título e primeiro parágrafo), uma tabela dinâmica, um gráfico candle e uma outra tabela para soltar a previsão do ticker.</p>



<pre class="wp-block-preformatted">server &lt;- function(input, output) {<br>    <br>    output$card_wiki = DT::renderDataTable({<br>        <br>        acesso = acesso %&gt;% filter(`Código`== input$escolha_acao)<br>        <br>        wiki1 &lt;- paste0("<a href="https://pt.wikipedia.org/">https://pt.wikipedia.org/</a>",acesso$links[1])<br>        doc1 &lt;- read_html(wiki1) <br>        doc1 %&gt;% <br>            html_nodes(xpath = '//*[<a href="http://twitter.com/id">@id</a>="mw-content-text"]/div/table[1]') %&gt;%<br>            html_table() -&gt; tabela_carac_acao <br>        tabela_carac_acao  &lt;- as.data.frame(tabela_carac_acao)<br>        tabela_carac_acao &lt;- tabela_carac_acao[-1,]<br>        <br>        DT::datatable(<br>            tabela_carac_acao , options = list(paging = FALSE,searching = FALSE))<br>    })<br>    <br>    output$primeiro_paragrafo &lt;- renderText({acesso = acesso %&gt;% filter(`Código`== input$escolha_acao)<br>        <br>        wiki2 &lt;- paste0("<a href="https://pt.wikipedia.org/">https://pt.wikipedia.org/</a>",acesso$links[1])<br>        doc2 &lt;- read_html(wiki2) <br>        doc2 %&gt;% <br>            html_nodes(xpath = '//*[<a href="http://twitter.com/id">@id</a>="mw-content-text"]/div/p[1]') %&gt;%<br>            html_text() -&gt; primeiro_par<br>        primeiro_par<br>    })<br>    <br>    output$nome_empresa &lt;- renderText({<br>        <br>        acesso = acesso %&gt;% filter(`Código`== input$escolha_acao)<br>        <br>        wiki2 &lt;- paste0("<a href="https://pt.wikipedia.org/">https://pt.wikipedia.org/</a>",acesso$links[1])<br>        doc2 &lt;- read_html(wiki2) <br>        doc2 %&gt;% <br>            html_nodes(xpath = '//*[<a href="http://twitter.com/id">@id</a>="firstHeading"]') %&gt;%<br>            html_text() -&gt; nome_empresa<br>        nome_empresa<br>    })<br>    <br>    output$candle &lt;- renderDygraph({<br>        <br>        acesso = acesso %&gt;% filter(`Código`== input$escolha_acao)<br>        <br>        inicio &lt;- "2018-01-01" <br>        final &lt;- Sys.Date()<br>        bench.ticker &lt;- "^BVSP"<br>        saida &lt;- BatchGetSymbols(tickers = paste0(acesso$Código,".SA"), first.date = inicio, last.date = final, <br>                                 bench.ticker = bench.ticker)<br>        saida &lt;- as.data.frame(saida$df.tickers)<br>        <br>        row.names(saida) &lt;- saida$ref.date<br>        m &lt;- saida %&gt;% dplyr::select(-ref.date,-price.adjusted,-volume,-ticker,-ret.adjusted.prices,-ret.closing.prices)<br>        colnames(m) &lt;- c("Open","High","Low","Close")<br>        <br>        dygraph(m) %&gt;%<br>            dyCandlestick()<br>        <br>    })<br>    <br>    output$prev = DT::renderDataTable({<br>        <br>        acesso = acesso %&gt;% filter(`Código`== input$escolha_acao)<br>        <br>        inicio &lt;- "2018-01-01" <br>        final &lt;- Sys.Date()<br>        bench.ticker &lt;- "^BVSP"<br>        saida &lt;- BatchGetSymbols(tickers = paste0(acesso$Código,".SA"), first.date = inicio, last.date = final, <br>                                 bench.ticker = bench.ticker)<br>        saida &lt;- as.data.frame(saida$df.tickers)<br>        <br>        row.names(saida) &lt;- saida$ref.date<br>        d &lt;- saida %&gt;% dplyr::select(-ref.date,-price.adjusted,-volume,-ticker,-ret.adjusted.prices,-ret.closing.prices)<br>        colnames(d) &lt;- c("Open","High","Low","Close")<br>        <br>        tabela = as.data.frame(forecast(nnetar(ts(d$Close,start = c(2018), frequency = 365)),h=4))<br>        tabela = format(round(tabela, 2))<br>        rownames(tabela) &lt;- c(Sys.Date()+1,Sys.Date()+2,Sys.Date()+3,Sys.Date()+4)<br>        <br>        DT::datatable(tabela, options = list(paging = FALSE,searching = FALSE))<br>    })}</pre>



<p id="4312">Passando para a codificação do “backend”, iniciamos a construção do server. O nome da empresa, primeiro parágrafo e tabela da Wikipedia são configurados para terem a dinâmica de usar o que o usuário escolheu, juntando com o link da Wikipedia e fazendo uma varredura na página da empresa.</p>



<p id="21b9">Para o gráfico candle e a previsão, usamos a escolha do usuário para fazer um request na API do Yahoo! em dados de 2018 em diante, de modo que seja possível plotar e realizar uma previsão através de uma Rede Neural Feed-forward para os próximos 4 dias.</p>



<p id="8c90">Concluindo nosso trabalho, é só publicar no Shinyapps!</p>



<p id="901e">O resultado pode ser visto em&nbsp;<a href="https://matheusduzzi.shinyapps.io/wiki/">https://matheusduzzi.shinyapps.io/wiki/</a></p>
<p>O post <a href="http://estatidados.com.br/do-scrap-ao-deploy-com-shiny/">Do scrap ao deploy com Shiny</a> apareceu primeiro em <a href="http://estatidados.com.br">Estatidados</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>http://estatidados.com.br/do-scrap-ao-deploy-com-shiny/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Otimizando carteiras de investimentos com Data Science</title>
		<link>http://estatidados.com.br/otimizando-carteiras-de-investimentos-com-data-science/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=otimizando-carteiras-de-investimentos-com-data-science</link>
					<comments>http://estatidados.com.br/otimizando-carteiras-de-investimentos-com-data-science/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Fri, 24 Sep 2021 10:04:42 +0000</pubDate>
				<category><![CDATA[Bruno Borges de Souza]]></category>
		<category><![CDATA[ciencia de dados]]></category>
		<category><![CDATA[Contabilidade e Finanças]]></category>
		<category><![CDATA[Pesquisa Operacional]]></category>
		<guid isPermaLink="false">http://estatidados.com.br/?p=645</guid>

					<description><![CDATA[<p>As decisões financeiras na prática não são tomadas em ambiente de total certeza com relação a seus resultados. Por essas decisões estarem fundamentalmente voltadas para o futuro, é imprescindível que se introduza a variável incerteza (risco) como um dos mais<a class="leiamais" href="http://estatidados.com.br/otimizando-carteiras-de-investimentos-com-data-science/" title="Otimizando carteiras de investimentos com Data Science">...[Continuar lendo]</a></p>
<p>O post <a href="http://estatidados.com.br/otimizando-carteiras-de-investimentos-com-data-science/">Otimizando carteiras de investimentos com Data Science</a> apareceu primeiro em <a href="http://estatidados.com.br">Estatidados</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>As decisões financeiras na prática não são tomadas em ambiente de total certeza com relação a seus resultados. Por essas decisões estarem fundamentalmente voltadas para o futuro, é imprescindível que se introduza a variável incerteza (risco) como um dos mais significativos aspectos do estudo das finanças corporativas. Saber mensurar corretamente o risco e retorno de um negócio, ou seja, saber exatamente com o que está lidando, é uma das principais habilidades que um empreendedor ou um gestor de fundos precisa ter para obter sucesso.</p>



<p>Como então mensuramos o risco? Primeiro precisamos definir uma medida de risco. De maneira geral, medimos o risco pelo quanto de capital precisamos adicionar à nossa posição de risco para termos uma posição aceitável. Por exemplo, suponha que você tenha 1000 reais para investir no mercado de ações e quer ganhar 1 milhão de reais em três anos. O grau de incerteza de obter esse retorno seria ridiculamente alto, (mas teoricamente seria possível, bastando investir no início do dia, na ação que vai dar maior retorno no final dia, e depois trocando para a ação que vai dar maior retorno no final do dia seguinte, sucessivamente) e deveríamos adicionar um capital bastante expressivo nesse investimento para obtermos uma posição aceitável de risco.</p>



<p>Existe várias maneiras de medir um risco de uma carteira de investimentos. Vamos avaliar neste artigo as três mais importantes: Modelo de&nbsp;<em>Markowitz</em>, Valor em Risco (VaR) e Valor em Risco Condicional (CVaR). Mas antes disso, vamos entender o que é ter uma carteira &#8220;coerente&#8221;. A noção de coerência foi introduzida por&nbsp;<em>Artzner et al</em>&nbsp;e atualmente, é um conceito fundamental relacionado à aceitabilidade de uma medida de risco. A literatura introduz um número de propriedades que são usadas para determinar um medida de risco. As propriedades mais importantes para a medida de risco são</p>



<p><strong><em>1)</em></strong>&nbsp;<strong><em>Invariância à translação:&nbsp;</em></strong>Se adicionarmos ou subtrairmos uma quantidade certa de nossa carteira, a medida de risco aumenta ou diminui. Matematicamente, se&nbsp;<em>A&nbsp;</em>é o quanto queremos adicionar aos ganhos da carteira&nbsp;<em>X</em>&nbsp;e&nbsp;<em>p</em>&nbsp;a nossa medida de risco, então&nbsp;<em>p(X+A)=p(X)+A</em>. Veja que, se trocarmos instrumentos de renda varável e alocarmos em renda fixa (nessa caso,&nbsp;<em>A</em>&nbsp;é negativo) a carteira diminui o risco no mesmo montante.</p>



<p><strong><em>2) Subaditividade:</em></strong>&nbsp;Na minha opinião, é a propriedade mais importante ao se avaliar uma medida de risco. Esta medida é intimamente relacionada com o efeito da diversificação do portfólio. A medida do risco total da carteira (conjunto de ativos) é menor ou igual que a medida do risco da soma individual dos ativos da carteira (<em>p(X1)+p(X2)&lt;p(X1+X2)</em>). É o princípio da Teoria Moderno do Portfólio, do grande Markowitz.&nbsp;O<strong>&nbsp;VaR</strong>&nbsp;<strong>falha na subaditivade</strong>. Isso significa que, minimizar o VaR não garante que você vá diversificar os investimentos da carteira considerada.</p>



<p><strong><em>3) Monotonicidade:&nbsp;</em></strong>&nbsp;Se os ganhos na carteira&nbsp;<em>X</em>&nbsp;são menores que os da carteira&nbsp;<em>Y</em>&nbsp;para todos os cenários possíveis, então o risco na carteira&nbsp;<em>X</em>&nbsp;é menor que na carteira&nbsp;<em>Y</em>&nbsp;(Se&nbsp;<em>X1&lt;X2</em>, então&nbsp;<em>p(X1)&lt;p(X2))</em>. Claro, num portfólio devidamente otimizado, se você quiser arriscar mais, espera que sua possibilidade de ganho seja maior.&nbsp;<strong><em>Markowitz</em>&nbsp;falha na monotonicidade :(.</strong></p>



<p><strong><em>4) Homogeneidade Positiva:&nbsp;</em></strong>Ao aumentar o tamanho de cada posição da carteira o risco da carteira aumenta em igual proporção&nbsp;(<em>p(bX)=bp(X))</em>, sendo&nbsp;<em>b</em>&nbsp;uma constante). Isso significa que, se você trocar a moeda de uma carteira, ou dobrar seu investimento em cada ação, seu risco aumentará na mesma proporção. Se você aposta 100 reais num jogo de poker e depois triplica a aposta, seu risco triplica também, pois você pode perder (ou ganhar) três vezes mais do que antes.</p>



<p>Pronto, agora vamos entender essas três medidas de risco que comentei anteriormente.</p>



<h3 class="wp-block-heading">Markowitz, VaR e CVaR. O que são?</h3>



<p>São basicamente medidas de riscos, meios de quantificar o risco do investimento. Minimizar essas medidas significa escolher um conjunto de ativos e juntá-los com uma certa proporção específica, de tal forma que a carteira tenha o menor risco possível para um determinado retorno esperado. Vejamos cada uma delas:</p>



<p><strong>Markowitz</strong></p>



<p>Até a década de 50, os modelos para risco e retorno eram em grande parte subjetivos e variavam de investidor para investidor. A partir do desenvolvimento da moderna teoria do portfólio por pesquisadores como&nbsp;<em>Markowitz, Sharp, Black, Scholes</em>&nbsp;entres outros, foi desenvolvido um arcabouço teórico quantitativo com base na teoria econômica neoclássica. O desenvolvimento da teoria do portfólio em 1952 por&nbsp;<em>Markowitz</em>, revolucionou o estudo das finanças, fato que lhe rendeu o prêmio Nobel de economia em 1990.</p>



<p>O principal aspecto da teoria do portfólio é que o risco individual de um ativo é diferente de seu risco na carteira, tornando a diversificação capaz de minimizar o risco não-sistemático dos ativos em conjunto. Com a minimização, é possível escolher a proporção ideal de cada ativo no portfólio, otimizando a relação retorno/risco da carteira de títulos. A figura abaixo representa bem essa ideia: Para mais de 30 ativos, é possível mitigar praticamente todo o risco não-sistemático da carteira. O resto é risco de mercado, crédito, liquidez ou operacional.</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="646" src="http://estatidados.com.br/wp-content/uploads/2022/02/image-1024x646.png" alt="" class="wp-image-662" srcset="http://estatidados.com.br/wp-content/uploads/2022/02/image-1024x646.png 1024w, http://estatidados.com.br/wp-content/uploads/2022/02/image-300x189.png 300w, http://estatidados.com.br/wp-content/uploads/2022/02/image-768x485.png 768w, http://estatidados.com.br/wp-content/uploads/2022/02/image-200x126.png 200w, http://estatidados.com.br/wp-content/uploads/2022/02/image-396x250.png 396w, http://estatidados.com.br/wp-content/uploads/2022/02/image-400x252.png 400w, http://estatidados.com.br/wp-content/uploads/2022/02/image-1000x631.png 1000w, http://estatidados.com.br/wp-content/uploads/2022/02/image-753x475.png 753w, http://estatidados.com.br/wp-content/uploads/2022/02/image.png 1090w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure></div>



<p>Como exatamente é feita essa diversificação? Suponha duas empresas diretamente concorrentes,&nbsp;<em>A</em>&nbsp;e&nbsp;<em>B</em>, num mercado promissor. Há três possibilidades: A empresa&nbsp;<em>A</em>&nbsp;vence a competição,&nbsp;<em>B</em>&nbsp;vence ou as duas compartilham o mercado. Se você investiu seu dinheiro em uma delas você corre o risco de perder tudo caso a empresa desmorone. Investindo nas duas fará com que você reduza esse risco, pois uma parte certamente vai para a empresa vencedora. E caso as duas percam? Nesse caso, pode ter sido causado por algum fator externo que afetou o mercado, como a pandemia, por exemplo. O modelos de otimização de risco tenta minimizar o risco não-sistemático, via diversificação dos ativos. O risco sistemático não pode ser minimizado.</p>



<p>Como já comentei, essa medida não é coerente, pois não satisfaz a monotonicidade. Outra coisa é que o modelo CAPM (<em>Capital Asset Pricing Models</em>), muito conhecido no mercado financeiro, é uma simplificação da Teoria de&nbsp;<em>Markowitz</em>&nbsp;para tentar reduzir a complexidade computacional do método.</p>



<p><strong>Valor em Risco e Valor em Risco Condicional</strong></p>



<p>Aqui a ideia é entender o risco como o quanto você aceita perder. Muito simples não? Suponha que você vai fazer um investimento de 1000 reais. Seu gerente lhe diz que na carteira&nbsp;<em>X</em>&nbsp;você pode ter um retorno de 300% no ano e que você pode perder no máximo R$ 900 com chance de 5%. O VaR é a perda máxima esperada (não confundir com a perda máxima possível), os R$900,00, e o alfa do VaR é a chance de você perder mais que isso (no exemplo 5%). Minimizar o VaR significa escolher o melhor conjunto de ativos que, com um mesmo retorno, diminua essa perda máxima esperada.</p>



<p>Como já mencionei, o VaR falha na subaditividade. E pior, falha numa propriedade que o pessoal da otimização adora (eu também!), a convexidade. Felizmente, temos uma medida que, além de ser convexa, é coerente. O Valor em risco condicional (CVaR) examina as perdas que excedem o limite do Valor em Risco (VaR). No exemplo que demos da carteira <em>X</em>, isso significa analisar as perdas para 5%, 4%,&#8230; de chance e tirar uma média disso. O VaR e o CVaR estão intimamente relacionados e, ao minimizar o CVaR, também levará a uma redução do VaR da carteira. A figura abaixo expressa uma curva normal com as perdas esperadas do Var e CVaR e as probabilidades esperadas.</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="752" src="http://estatidados.com.br/wp-content/uploads/2022/02/image-1-1024x752.png" alt="" class="wp-image-664" srcset="http://estatidados.com.br/wp-content/uploads/2022/02/image-1-1024x752.png 1024w, http://estatidados.com.br/wp-content/uploads/2022/02/image-1-300x220.png 300w, http://estatidados.com.br/wp-content/uploads/2022/02/image-1-768x564.png 768w, http://estatidados.com.br/wp-content/uploads/2022/02/image-1-200x147.png 200w, http://estatidados.com.br/wp-content/uploads/2022/02/image-1-340x250.png 340w, http://estatidados.com.br/wp-content/uploads/2022/02/image-1-400x294.png 400w, http://estatidados.com.br/wp-content/uploads/2022/02/image-1-1000x735.png 1000w, http://estatidados.com.br/wp-content/uploads/2022/02/image-1-646x475.png 646w, http://estatidados.com.br/wp-content/uploads/2022/02/image-1.png 1090w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure></div>



<p>Resumindo de maneira matemática o que explicamos:</p>



<ol class="wp-block-list"><li>O VaR tenta resumir em um único número, a perda máxima esperada dentro de um certo prazo com um certo grau de confiança estatística<br></li></ol>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="60" src="http://estatidados.com.br/wp-content/uploads/2022/02/image-2-1024x60.png" alt="" class="wp-image-666" srcset="http://estatidados.com.br/wp-content/uploads/2022/02/image-2-1024x60.png 1024w, http://estatidados.com.br/wp-content/uploads/2022/02/image-2-300x18.png 300w, http://estatidados.com.br/wp-content/uploads/2022/02/image-2-768x45.png 768w, http://estatidados.com.br/wp-content/uploads/2022/02/image-2-200x12.png 200w, http://estatidados.com.br/wp-content/uploads/2022/02/image-2-400x23.png 400w, http://estatidados.com.br/wp-content/uploads/2022/02/image-2-1000x59.png 1000w, http://estatidados.com.br/wp-content/uploads/2022/02/image-2.png 1090w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure></div>



<p>2. O CVaR pode ser definido como a esperança condicional de perdas das carteiras superiores ao VaR:<br></p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="252" src="http://estatidados.com.br/wp-content/uploads/2022/02/image-3-1024x252.png" alt="" class="wp-image-667" srcset="http://estatidados.com.br/wp-content/uploads/2022/02/image-3-1024x252.png 1024w, http://estatidados.com.br/wp-content/uploads/2022/02/image-3-300x74.png 300w, http://estatidados.com.br/wp-content/uploads/2022/02/image-3-768x189.png 768w, http://estatidados.com.br/wp-content/uploads/2022/02/image-3-200x49.png 200w, http://estatidados.com.br/wp-content/uploads/2022/02/image-3-400x98.png 400w, http://estatidados.com.br/wp-content/uploads/2022/02/image-3-1000x246.png 1000w, http://estatidados.com.br/wp-content/uploads/2022/02/image-3.png 1090w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure></div>



<h3 class="wp-block-heading">O problema de otimização</h3>



<p>Resolver um problema de otimização é buscar a melhor utilização de recursos e processos (técnico, econômico, social ou político), através de aplicação de modelos matemáticos, visando otimizar a satisfação (utilidade) do usuário. Compreende o problema de alocar recursos escassos para realização de atividades e cita alguns exemplos de técnicas particulares da otimização:</p>



<ol class="wp-block-list"><li><strong>Programação Linear</strong>: aplicada em áreas relativas à alocação de pessoal, mistura de materiais, distribuição, transporte, etc.;</li><li><strong>Programação Dinâmica</strong>: utilizada principalmente para problemas de otimização combinatória, tem aplicações em a áreas como planejamento de despesas de publicidade, distribuição do esforço de vendas e programação de produção;</li><li><strong>Teoria das Filas</strong>: área que estuda analisar a formação de filas, é aplicada na solução de problemas relativos a congestionamento de tráfego, máquinas de serviços sujeitas à quebra, determinação do nível de uma força de serviço, etc.;</li><li><strong>Programação Não Linear</strong>: é um modelo matemático onde a função objetivo, as restrições ou ambas, apresentam não linearidade em seus coeficientes.</li></ol>



<p>Na área de investimentos, é utilizado métodos de programação linear ou não-linear para maximizar ou minimizar a função objetivo. Um modelo de otimização para investimentos envolve os seguintes conceitos:</p>



<ol class="wp-block-list"><li><strong>Função objetivo</strong>: Representa o principal objetivo do tomador de decisão. No modelo de VaR é dada pela minimização da perda máxima esperada ou maximização do retorno da carteira. É uma função multi-objetivo, então a solução é uma curva, a fronteira eficiente, com a perda mínima para cada retorno.</li><li><strong>Restrições</strong>: Diz o que é possível ou não fazer e quais são as limitações dos recursos ou atividades que estão associados ao modelo. No modelo em questão, as limitações são: a participação dos ativos precisa ser maior que zero, a soma de as participações deve ser igual a 1, e colocar um retorno mínimo exigido pelo cliente, ou um risco máximo, dependendo do objetivo do investido.</li><li><strong>Variáveis de decisão</strong>: variáveis que podem ser controladas pelo tomador de decisão. No modelo correspondem à participação ao peso de cada ativo no portfólio.</li></ol>



<p>Vejamos o modelo para o problema de minimização do CVaR. A partir de uma série da manipulações matemáticas, Rockafellar e Uryasev (2000) reescreve o cálculo do CVaR em termos de uma função, dada por<br></p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="128" src="http://estatidados.com.br/wp-content/uploads/2022/02/image-4-1024x128.png" alt="" class="wp-image-668" srcset="http://estatidados.com.br/wp-content/uploads/2022/02/image-4-1024x128.png 1024w, http://estatidados.com.br/wp-content/uploads/2022/02/image-4-300x37.png 300w, http://estatidados.com.br/wp-content/uploads/2022/02/image-4-768x96.png 768w, http://estatidados.com.br/wp-content/uploads/2022/02/image-4-200x25.png 200w, http://estatidados.com.br/wp-content/uploads/2022/02/image-4-400x50.png 400w, http://estatidados.com.br/wp-content/uploads/2022/02/image-4-1000x125.png 1000w, http://estatidados.com.br/wp-content/uploads/2022/02/image-4.png 1090w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure></div>



<p>Para o caso de valores discretos, a equação acima pode ser reescrita como:<br></p>



<div class="wp-block-image"><figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="708" height="149" src="http://estatidados.com.br/wp-content/uploads/2022/02/image-5.png" alt="" class="wp-image-669" srcset="http://estatidados.com.br/wp-content/uploads/2022/02/image-5.png 708w, http://estatidados.com.br/wp-content/uploads/2022/02/image-5-300x63.png 300w, http://estatidados.com.br/wp-content/uploads/2022/02/image-5-200x42.png 200w, http://estatidados.com.br/wp-content/uploads/2022/02/image-5-400x84.png 400w" sizes="auto, (max-width: 708px) 100vw, 708px" /></figure></div>



<p>Dessa maneira, Rockafellar e Uryasev (2000) usa a função F linear para definir a forma para a otimização de uma carteira de ações utilizando o CVaR como medida de risco:<br></p>



<div class="wp-block-image"><figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="996" height="449" src="http://estatidados.com.br/wp-content/uploads/2022/02/image-6.png" alt="" class="wp-image-670" srcset="http://estatidados.com.br/wp-content/uploads/2022/02/image-6.png 996w, http://estatidados.com.br/wp-content/uploads/2022/02/image-6-300x135.png 300w, http://estatidados.com.br/wp-content/uploads/2022/02/image-6-768x346.png 768w, http://estatidados.com.br/wp-content/uploads/2022/02/image-6-200x90.png 200w, http://estatidados.com.br/wp-content/uploads/2022/02/image-6-400x180.png 400w" sizes="auto, (max-width: 996px) 100vw, 996px" /></figure></div>



<p>onde&nbsp;<em>n</em>&nbsp;é o tamanho da amostra e&nbsp;<em>w_i</em>&nbsp;a proporção de cada ativo na carteira.</p>



<h3 class="wp-block-heading">Resultados na Prática</h3>



<p>Vamos avaliar o modelo para otimização do VaR e CVaR utilizando 30 ações da bolsa de valores do Brasil. Utilizaremos como histórico o retorno das ações desde o começo da pandemia (para evitar envasamento histórico de análise, já que a pandemia alterou a dinâmica do mercado de ações).<br></p>





<p>Agora, utilizando a biblioteca de otimização scipy do python, conjuntamente com bibliotecas que fazem interpretações das integrais, traduzimos a função objetivo e as restrições para o código e, usando como técnica de otimização linear o simplex revisado, construímos a fronteira fronteira eficiente para o VaR e CVaR.</p>



<p>Os gráficos abaixo expressam o retorno para cada valor em risco considerado. Devido ao fato da otimização do VaR não ser convexa, a fronteira eficiente da otimização com o VaR tem um comportamento mais &#8220;caótico&#8221; comparada à otimização com o CVaR, que tem um comportamento mais suave.</p>





<p>O CVaR varia de 10% a 30% com retorno de 6% a 16 % do valor investido. Essa abordagem também levou a uma redução no VaR, uma vez que é um fator envolvido no processo de minimização do CVaR. Vale lembra que o CVaR é uma medida mais conservadora, o que explica um risco maior do CVaR, dado o mesmo retorno, que o VaR.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="528" src="http://estatidados.com.br/wp-content/uploads/2022/02/image-7-1024x528.png" alt="" class="wp-image-672" srcset="http://estatidados.com.br/wp-content/uploads/2022/02/image-7-1024x528.png 1024w, http://estatidados.com.br/wp-content/uploads/2022/02/image-7-300x155.png 300w, http://estatidados.com.br/wp-content/uploads/2022/02/image-7-768x396.png 768w, http://estatidados.com.br/wp-content/uploads/2022/02/image-7-200x103.png 200w, http://estatidados.com.br/wp-content/uploads/2022/02/image-7-400x206.png 400w, http://estatidados.com.br/wp-content/uploads/2022/02/image-7-1000x516.png 1000w, http://estatidados.com.br/wp-content/uploads/2022/02/image-7-921x475.png 921w, http://estatidados.com.br/wp-content/uploads/2022/02/image-7.png 1090w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>O gráfico de área abaixo expressa a proporção de ativos na carteira para cada valor em risco considerado.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="492" src="http://estatidados.com.br/wp-content/uploads/2022/02/image-8-1024x492.png" alt="" class="wp-image-674" srcset="http://estatidados.com.br/wp-content/uploads/2022/02/image-8-1024x492.png 1024w, http://estatidados.com.br/wp-content/uploads/2022/02/image-8-300x144.png 300w, http://estatidados.com.br/wp-content/uploads/2022/02/image-8-768x369.png 768w, http://estatidados.com.br/wp-content/uploads/2022/02/image-8-200x96.png 200w, http://estatidados.com.br/wp-content/uploads/2022/02/image-8-400x192.png 400w, http://estatidados.com.br/wp-content/uploads/2022/02/image-8-1000x481.png 1000w, http://estatidados.com.br/wp-content/uploads/2022/02/image-8-988x475.png 988w, http://estatidados.com.br/wp-content/uploads/2022/02/image-8.png 1090w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>O resultado final é, para um dado valor em risco, as ações que devo investir e em qual proporção, para o meu portfólio ótimo. Exemplo, caso eu queira assumir um CVar de 20%, o conjunto de ativos que me trariam o melhor retorno seria:</p>



<p>Trans Paulista (<strong>TRPL4</strong>) &#8211; 82%, Suzano Papel (<strong>SUZB3</strong>) &#8211; 13%, Bradespar (<strong>BRAP4</strong>) &#8211; 3%,</p>



<p>Itausa (<strong>ITSA4</strong>) &#8211; 2%.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="551" src="http://estatidados.com.br/wp-content/uploads/2022/02/image-9-1024x551.png" alt="" class="wp-image-675" srcset="http://estatidados.com.br/wp-content/uploads/2022/02/image-9-1024x551.png 1024w, http://estatidados.com.br/wp-content/uploads/2022/02/image-9-300x162.png 300w, http://estatidados.com.br/wp-content/uploads/2022/02/image-9-768x414.png 768w, http://estatidados.com.br/wp-content/uploads/2022/02/image-9-200x108.png 200w, http://estatidados.com.br/wp-content/uploads/2022/02/image-9-400x215.png 400w, http://estatidados.com.br/wp-content/uploads/2022/02/image-9-1000x539.png 1000w, http://estatidados.com.br/wp-content/uploads/2022/02/image-9-882x475.png 882w, http://estatidados.com.br/wp-content/uploads/2022/02/image-9.png 1090w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p><strong>Backtest</strong></p>



<p>Para validarmos o modelo, é importante fazer uma análise de backtest. O objetivo do backtest é analisar quais seriam os resultados de um carteira ótima criada num período anterior ao atual, verificando a evolução do retorno da carteira desde o instante em que ela foi criada, até o instante atual.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="477" src="http://estatidados.com.br/wp-content/uploads/2022/02/image-10-1024x477.png" alt="" class="wp-image-676" srcset="http://estatidados.com.br/wp-content/uploads/2022/02/image-10-1024x477.png 1024w, http://estatidados.com.br/wp-content/uploads/2022/02/image-10-300x140.png 300w, http://estatidados.com.br/wp-content/uploads/2022/02/image-10-768x358.png 768w, http://estatidados.com.br/wp-content/uploads/2022/02/image-10-200x93.png 200w, http://estatidados.com.br/wp-content/uploads/2022/02/image-10-400x186.png 400w, http://estatidados.com.br/wp-content/uploads/2022/02/image-10-1000x466.png 1000w, http://estatidados.com.br/wp-content/uploads/2022/02/image-10-1019x475.png 1019w, http://estatidados.com.br/wp-content/uploads/2022/02/image-10.png 1090w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Analisando a evolução do retorno para 5 níveis de risco diferentes, podemos notar o seguinte:</p>



<ol class="wp-block-list"><li>Quanto maior o risco, mais volátil será a carteira;</li><li>Em nenhum dos casos a perda ultrapassou a perda máxima esperada. Exemplo, para um CVaR de 20%, o ponto mínimo foi de 4600 (8% de perda);</li><li>Para esse caso em particular, o CVaR de 25% acabou perfomando melhor, inclusive gerando um retorno de 6,72% durante o período avaliado (dentro do esperado ao verificar a fronteira eficiente).<br></li></ol>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="192" src="http://estatidados.com.br/wp-content/uploads/2022/02/image-11-1024x192.png" alt="" class="wp-image-677" srcset="http://estatidados.com.br/wp-content/uploads/2022/02/image-11-1024x192.png 1024w, http://estatidados.com.br/wp-content/uploads/2022/02/image-11-300x56.png 300w, http://estatidados.com.br/wp-content/uploads/2022/02/image-11-768x144.png 768w, http://estatidados.com.br/wp-content/uploads/2022/02/image-11-200x37.png 200w, http://estatidados.com.br/wp-content/uploads/2022/02/image-11-400x75.png 400w, http://estatidados.com.br/wp-content/uploads/2022/02/image-11-1000x187.png 1000w, http://estatidados.com.br/wp-content/uploads/2022/02/image-11.png 1090w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h3 class="wp-block-heading">Bônus: Minimizando medidas de risco usando a Teoria da Evolução</h3>



<p>O que a Teoria da Evolução tem a ver com tudo isso que fizemos? Bom, se você entendeu a matemática da função objetivo, sabe que essas fórmulas do VaR e CVaR são bastante &#8220;cabeludas&#8221;. Existem algoritmos de otimização específicos para cada um dos problemas (programação linear para o CVaR, programação quadrática para Markowitz e algum método de otimização não-convexa para o VaR), mas não que minimiza os três com o mesmo método. Para minimizar o risco das três carteiras que estudamos, podemos usar um algoritmo genético da inteligência artificial que é baseado na Teoria de Darwin, o&nbsp;<em>Differential Evolution (DE).&nbsp;</em>O DE tem se apresentado como um simples, mas poderoso algoritmo de otimização numérica para busca da solução ótima global, sendo aplicado com sucesso na solução de vários problemas de otimização complexa.</p>



<p>Para otimizar um portfólio utilizando o algoritmo DE, melhoramos iterativamente uma solução candidata de uma população gerada de carteiras,&nbsp;<em>c1,&#8230;,c𝑖, 𝑖 = 1,…, n</em>&nbsp;onde cada carteira contém&nbsp;<em>N</em>&nbsp;elementos e representa as variáveis objetivas, ou seja, os retornos históricos dos ativos do portfólio. A DE visa otimizar o trade-off entre risco e retorno, em vez de minimizar o risco de um determinado retorno específico, ou seja, teremos uma avaliação de retorno para diversos riscos possíveis. Isso é o que chamamos de&nbsp;<strong>fronteira eficiente da carteira</strong>.</p>



<p>A ideia básica do DE é produzir uma nova solução para cada carteira atual, onde a nova solução é uma combinação de quatro soluções atuais na população. Funciona da seguinte maneira:</p>



<p>1) Selecione uma carteira (<em>c0</em>) da população atual, que será nossa carteira-pai. Em seguida, selecione aleatoriamente três carteiras diferentes, usando um deles como uma carteira-base e adicione a diferença ponderada das outras duas para construir uma nova solução,</p>



<p><em>cm=c1+F*(c2-c3),</em></p>



<p>onde 𝐹 é um fator de mutação entre 0 e 1 que controla a taxa na qual a população de carteiras evolui. A solução dessa fórmula,&nbsp;<em>cm</em>, será nossa carteira-mutante.</p>



<p>2) Agora, realizamos um cruzamento entre a carteira-pai e a carteira-mutante. Cada elemento na carteira-filha será determinado por uma taxa de <em>crossover (CR &#8211; razão de cruzamento)</em> definida pelo usuário, onde 𝐶𝑅 está entre 0 e 1, e um número gerado pseudo-aleatório ε. O cruzamento controla a fração de valores de parâmetros copiados da carteira-mutante, de modo que, se o número gerado for menor que a razão de cruzamento, a carteira-filho herdará o elemento 𝑗 da carteira-pai. Da mesma forma, se o número gerado for maior ou igual à razão de cruzamento, a carteira-filho herdará o elemento 𝑗 da carteira-mutante. A figura abaixo dá a visualização gráfico disso:<br></p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="750" src="http://estatidados.com.br/wp-content/uploads/2022/02/image-12-1024x750.png" alt="" class="wp-image-679" srcset="http://estatidados.com.br/wp-content/uploads/2022/02/image-12-1024x750.png 1024w, http://estatidados.com.br/wp-content/uploads/2022/02/image-12-300x220.png 300w, http://estatidados.com.br/wp-content/uploads/2022/02/image-12-768x562.png 768w, http://estatidados.com.br/wp-content/uploads/2022/02/image-12-200x146.png 200w, http://estatidados.com.br/wp-content/uploads/2022/02/image-12-341x250.png 341w, http://estatidados.com.br/wp-content/uploads/2022/02/image-12-400x293.png 400w, http://estatidados.com.br/wp-content/uploads/2022/02/image-12-1000x732.png 1000w, http://estatidados.com.br/wp-content/uploads/2022/02/image-12-649x475.png 649w, http://estatidados.com.br/wp-content/uploads/2022/02/image-12.png 1090w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>3) Há ainda algumas medidas para evitar que os ativos saiam do espaço viável de soluções, pois não podemos ter carteiras com ativos que, somados, dão pesos maiores que 100%. Para resolver isso, lembre-se de normalizar todas as carteiras de sua população.</p>



<p><strong>Hora da prática</strong></p>



<p>Apresentamos aqui a escolha de parâmetros para o algoritmo DE e comparamos seus resultados com outras técnicas de otimização. Consideramos uma carteira composta apenas por ações e assumimos que os retornos diários dos registros são normalmente distribuídos. Com relação aos dados, vamos utilizar 25 ações da BM&amp;Fbovespa, usando cotações históricas diárias de 5 anos. Além disso, vamos assumir que há 252 dias de negociação por ano e, assim, escalaremos os retornos proporcionalmente ao tempo. Para a programação dos algoritmos, eu utilizei o software Matlab.</p>



<p>Primeiro veremos a medida de Markowitz. Para o caso da volatilidade, na figura abaixo fizemos uma comparação entre o método de otimização quadrática e a evolução diferencial, com parâmetros N = 25, F = 0,5, CR = 0,7 e ε = 1%. A fronteira da carteira indica o quanto de risco você você assume para cada retorno esperado. Podemos ver que o retorno esperado ideal sobre o investimento varia de 16% a 35%, e a volatilidade de 13% a 22%, ou seja, a tendência de movimento da carteira. Além disso, ao analisar os retornos e riscos dos ativos individualmente, vemos que a diversificação representa um risco menor e, ao mesmo tempo, produz um retorno maior, onde cada portfólio ideal fica ao longo da fronteira eficiente.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="754" src="http://estatidados.com.br/wp-content/uploads/2022/02/image-13-1024x754.png" alt="" class="wp-image-680" srcset="http://estatidados.com.br/wp-content/uploads/2022/02/image-13-1024x754.png 1024w, http://estatidados.com.br/wp-content/uploads/2022/02/image-13-300x221.png 300w, http://estatidados.com.br/wp-content/uploads/2022/02/image-13-768x566.png 768w, http://estatidados.com.br/wp-content/uploads/2022/02/image-13-200x147.png 200w, http://estatidados.com.br/wp-content/uploads/2022/02/image-13-339x250.png 339w, http://estatidados.com.br/wp-content/uploads/2022/02/image-13-400x295.png 400w, http://estatidados.com.br/wp-content/uploads/2022/02/image-13-1000x737.png 1000w, http://estatidados.com.br/wp-content/uploads/2022/02/image-13-645x475.png 645w, http://estatidados.com.br/wp-content/uploads/2022/02/image-13.png 1090w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Para mostrar que o DE pode lidar com qualquer medida de risco, usamos a abordagem de R. T Rockafellar e S. Uryasev para minimizar o CVaR comparando as soluções do algoritmo DE com o de programação linear. Usamos aqui a mesma suposição do último caso e aproximamos os retornos. Em seguida, vamos otimizar o CVaR usando os mesmos parâmetros de antes. Esses valores foram escolhidos pois são que oferecem melhor acurácia em um tempo admissível (Dependendo dos parâmetros que você escolhe, pode ficar até dias esperando sua carteira &#8220;evoluir&#8221;). Temos então a seguinte fronteira:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="693" src="http://estatidados.com.br/wp-content/uploads/2022/02/image-14-1024x693.png" alt="" class="wp-image-682" srcset="http://estatidados.com.br/wp-content/uploads/2022/02/image-14-1024x693.png 1024w, http://estatidados.com.br/wp-content/uploads/2022/02/image-14-300x203.png 300w, http://estatidados.com.br/wp-content/uploads/2022/02/image-14-768x520.png 768w, http://estatidados.com.br/wp-content/uploads/2022/02/image-14-200x135.png 200w, http://estatidados.com.br/wp-content/uploads/2022/02/image-14-369x250.png 369w, http://estatidados.com.br/wp-content/uploads/2022/02/image-14-400x271.png 400w, http://estatidados.com.br/wp-content/uploads/2022/02/image-14-1000x677.png 1000w, http://estatidados.com.br/wp-content/uploads/2022/02/image-14-702x475.png 702w, http://estatidados.com.br/wp-content/uploads/2022/02/image-14.png 1090w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>O CVaR varia de 30 % a 100 % do valor investido, que é a proporção média de um capital de investidores que será perdido para o nível de probabilidade de perda de 5%. Essa abordagem também levou a uma redução no VaR, uma vez que é um fator envolvido no processo de minimização do CVaR. Para o VaR, na figura abaixo, vemos que o valor varia de 22% a 70%. De qualquer forma, vemos que o DE está na fronteira eficiente e podemos confirmar que as soluções são as mesmas para os métodos específicos de cada método, investigando novamente a distribuição do peso do portfólio.<br></p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="717" src="http://estatidados.com.br/wp-content/uploads/2022/02/image-15-1024x717.png" alt="" class="wp-image-683" srcset="http://estatidados.com.br/wp-content/uploads/2022/02/image-15-1024x717.png 1024w, http://estatidados.com.br/wp-content/uploads/2022/02/image-15-300x210.png 300w, http://estatidados.com.br/wp-content/uploads/2022/02/image-15-768x538.png 768w, http://estatidados.com.br/wp-content/uploads/2022/02/image-15-200x140.png 200w, http://estatidados.com.br/wp-content/uploads/2022/02/image-15-357x250.png 357w, http://estatidados.com.br/wp-content/uploads/2022/02/image-15-400x280.png 400w, http://estatidados.com.br/wp-content/uploads/2022/02/image-15-1000x700.png 1000w, http://estatidados.com.br/wp-content/uploads/2022/02/image-15-679x475.png 679w, http://estatidados.com.br/wp-content/uploads/2022/02/image-15.png 1090w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Percebeu que a fronteira do VaR é um pouco &#8220;deformada&#8221;? Isso é justamente devido ao fato de não termos aqui aquela propriedade da convexidade envolvida.</p>



<p>Bom, agora vamos para o que importa. Quais os ativos e quanto investir em cada um para formar uma carteira eficiente evoluída? vEis os resultados de acordo com Markowitz e o CVaR:<br></p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="762" src="http://estatidados.com.br/wp-content/uploads/2022/02/image-16-1024x762.png" alt="" class="wp-image-684" srcset="http://estatidados.com.br/wp-content/uploads/2022/02/image-16-1024x762.png 1024w, http://estatidados.com.br/wp-content/uploads/2022/02/image-16-300x223.png 300w, http://estatidados.com.br/wp-content/uploads/2022/02/image-16-768x571.png 768w, http://estatidados.com.br/wp-content/uploads/2022/02/image-16-200x149.png 200w, http://estatidados.com.br/wp-content/uploads/2022/02/image-16-336x250.png 336w, http://estatidados.com.br/wp-content/uploads/2022/02/image-16-400x298.png 400w, http://estatidados.com.br/wp-content/uploads/2022/02/image-16-1000x744.png 1000w, http://estatidados.com.br/wp-content/uploads/2022/02/image-16-638x475.png 638w, http://estatidados.com.br/wp-content/uploads/2022/02/image-16.png 1090w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="722" src="http://estatidados.com.br/wp-content/uploads/2022/02/image-17-1024x722.png" alt="" class="wp-image-685" srcset="http://estatidados.com.br/wp-content/uploads/2022/02/image-17-1024x722.png 1024w, http://estatidados.com.br/wp-content/uploads/2022/02/image-17-300x212.png 300w, http://estatidados.com.br/wp-content/uploads/2022/02/image-17-768x542.png 768w, http://estatidados.com.br/wp-content/uploads/2022/02/image-17-200x141.png 200w, http://estatidados.com.br/wp-content/uploads/2022/02/image-17-354x250.png 354w, http://estatidados.com.br/wp-content/uploads/2022/02/image-17-400x282.png 400w, http://estatidados.com.br/wp-content/uploads/2022/02/image-17-1000x706.png 1000w, http://estatidados.com.br/wp-content/uploads/2022/02/image-17-673x475.png 673w, http://estatidados.com.br/wp-content/uploads/2022/02/image-17.png 1090w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="198" src="http://estatidados.com.br/wp-content/uploads/2022/02/image-18-1024x198.png" alt="" class="wp-image-686" srcset="http://estatidados.com.br/wp-content/uploads/2022/02/image-18-1024x198.png 1024w, http://estatidados.com.br/wp-content/uploads/2022/02/image-18-300x58.png 300w, http://estatidados.com.br/wp-content/uploads/2022/02/image-18-768x149.png 768w, http://estatidados.com.br/wp-content/uploads/2022/02/image-18-200x39.png 200w, http://estatidados.com.br/wp-content/uploads/2022/02/image-18-400x77.png 400w, http://estatidados.com.br/wp-content/uploads/2022/02/image-18-1000x194.png 1000w, http://estatidados.com.br/wp-content/uploads/2022/02/image-18.png 1090w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Nesses gráficos, para cada Volatilidade (Risco) e CVaR, temos uma proporção de ativos diferentes. Por exemplo, para termos um CVaR de 65%, temos que investir 27% na ITUB4 28% na EMBR3 e 45% na B3SA3.</p>



<p>Concluindo, mostramos como fazer uma carteira eficiente e também verificamos que a Evolução Diferencial é um algoritmo de busca robusto que pode ser aplicado ao problema do minimização de uma carteira. Com relação ao tempo médio de execução do algoritmo, outras estratégias no processo de mutação poderiam ser úteis no processo de obtenção de um tempo mais rápido.<br><br>#cienciadedados #pesquisaoperacional #financas</p>
<p>O post <a href="http://estatidados.com.br/otimizando-carteiras-de-investimentos-com-data-science/">Otimizando carteiras de investimentos com Data Science</a> apareceu primeiro em <a href="http://estatidados.com.br">Estatidados</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>http://estatidados.com.br/otimizando-carteiras-de-investimentos-com-data-science/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Using RSelenium for task automation and web scraping</title>
		<link>http://estatidados.com.br/using-rselenium-for-task-automation-and-web-scraping/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=using-rselenium-for-task-automation-and-web-scraping</link>
					<comments>http://estatidados.com.br/using-rselenium-for-task-automation-and-web-scraping/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Mon, 12 Jul 2021 16:25:19 +0000</pubDate>
				<category><![CDATA[ciencia de dados]]></category>
		<category><![CDATA[Fabrício Barbacena]]></category>
		<category><![CDATA[Linguagens de programação]]></category>
		<guid isPermaLink="false">http://estatidados.com.br/?p=629</guid>

					<description><![CDATA[<p>1. Introduction This article aims to present the RSelenium package’s basic functionalities and show how it can help you to perform many useful daily tasks automatically in your internet browser. RSelenium also offers a great opportunity to observe object-oriented programming<a class="leiamais" href="http://estatidados.com.br/using-rselenium-for-task-automation-and-web-scraping/" title="Using RSelenium for task automation and web scraping">...[Continuar lendo]</a></p>
<p>O post <a href="http://estatidados.com.br/using-rselenium-for-task-automation-and-web-scraping/">Using RSelenium for task automation and web scraping</a> apareceu primeiro em <a href="http://estatidados.com.br">Estatidados</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image"><img decoding="async" src="https://miro.medium.com/max/1400/1*97R0jpJ07MFksAfwNXG4cw.png" alt=""/><figcaption>image by&nbsp;<a href="https://undraw.co/">unDraw</a></figcaption></figure>



<h2 class="wp-block-heading"><strong>1. Introduction</strong></h2>



<p>This article aims to present the RSelenium package’s basic functionalities and show how it can help you to perform many useful daily tasks automatically in your internet browser. RSelenium also offers a great opportunity to observe object-oriented programming (OOP) fully implemented in R.</p>



<p>In order to use RSelenium, first you need to install it&nbsp;with the&nbsp;<code>install.packages("RSelenium")</code>&nbsp;command. Be carefull to write the first two letter as capital ones. Besides, the Java software needs to be installed in your machine too, or later you will face the following error:&nbsp;<code>error in java_check () : PATH to JAVA not found</code>. A very few functions from the tidyverse will also appear in our code, so install it with&nbsp;<code>install.packages("tidyverse")</code>&nbsp;if you haven’t yet. Also, the package&nbsp;<code>getPass</code>&nbsp;might be useful if we want to send sensitive login information in our code.</p>



<p>In our examples of browser manipulation, we used the version 91.0.4472.77 of Google Chrome in a Windows environment and R version 4.0.5. However, RSelenium can be used with other combinations of internet browser and operational system. Check out the&nbsp;<a href="https://cran.r-project.org/package=RSelenium">RSelenium official documentation page</a>&nbsp;for more information about these topics.</p>



<p>The following images in this article are all mines, except the few times when the webpages&nbsp;<a href="https://quotes.toscrape.com/">https://quotes.toscrape.com/</a>&nbsp;and&nbsp;<a href="http://httpbin.org/forms/post">http://httpbin.org/forms/post</a>&nbsp;(two popular sites for webscraping exercises) or their HTML code are reproduced here. I used an R Jupyter Notebook during development but the code can be run in RStudio for sure too. You will find both a Jupyter Notebook and an R script with the complete code on&nbsp;<a href="https://github.com/fabricius1/SeleniumTutorials"><strong><em>my Github repository</em></strong></a>.</p>



<p>For people who might be interested in learning Selenium for Python, there is another notebook on the same Github repository with the code translated to this programming language.</p>



<h2 class="wp-block-heading"><strong>2. Importing packages and writing a helper function</strong></h2>



<p>Let’s start by importing the libraries to be used in our code.</p>



<div class="wp-block-group is-layout-flow wp-block-group-is-layout-flow"><div class="wp-block-group__inner-container"></div></div>



<pre class="wp-block-code"><code># Import libraries
library("RSelenium")
library("tidyverse")
library("getPass")

# This line makes R show messages in English.
# Use "pt" if you want them to be displayed in Portuguese
Sys.setenv("LANG" = "en")</code></pre>



<div class="wp-block-group is-layout-flow wp-block-group-is-layout-flow"><div class="wp-block-group__inner-container"></div></div>



<p>I also created a customized function called&nbsp;<code>check_object</code>&nbsp;that will print the&nbsp;<code>class</code>&nbsp;and&nbsp;<code>typeof</code>&nbsp;functions info, which will help us to analyze the new RSelenium objects we will find on our way.</p>



<pre class="wp-block-code"><code># Customized function to check class() and typeof() at once:
check_object &lt;- function(object) {
    cat("\nclass: ",
        class(object),
        "\ntypeof: ",
        typeof(object),
        "\n")
}</code></pre>



<h2 class="wp-block-heading"><strong>3. First RSelenium objects: rsClientServer and remoteDriver</strong></h2>



<p>The next step is to create an RSelenium rsClientServer, which we will save in the computational variable called&nbsp;<code>client_server</code>. The code below will automatically open a new Chrome window and give us more information about the object we have just created.</p>



<pre class="wp-block-code"><code># Create rsClientServer object with Google Chrome browser.
# Change the chromever argument for the Chrome version used in your machine
client_server &lt;- RSelenium::rsDriver(browser=c("chrome"), 
                                     chromever="91.0.4472.101", 
                                     port=4545L, 
                                     verbose=F)
check_object(client_server)</code></pre>



<figure class="wp-block-image"><img decoding="async" src="https://miro.medium.com/max/700/1*lWOeoedUXsN_wEqQLf_Pgw.png" alt=""/></figure>



<p>Note that I passed a specific Chrome version as a string in the&nbsp;<code>chromever</code>&nbsp;argument. So, you will need to adjust it according to your reality. Some arguments in&nbsp;<code>RSelenium::rsDriver()</code>&nbsp;use&nbsp;<code>"latest"</code>&nbsp;as default value, which can cause errors if an installed version from Selenium or the chosen browser is different from the latest available version, even if it is a beta one. I experienced that issue with Chrome while finishing this article and I want you to be prepared if you wind up facing a similar obstacle.</p>



<p>Now it is time to save the RSelenium remoteDriver into the computational variable called&nbsp;<code>driver</code>. This object is by far the most important one in our code. As we will discover later, we will spend most of the time calling methods from the remoteDriver object to manipulate the browser and get the information we need.</p>



<pre class="wp-block-code"><code># Save the remoteDriver object in the computational variable called "driver"
driver &lt;- client_server&#91;&#91;"client"]]
check_object(driver)</code></pre>



<figure class="wp-block-image"><img decoding="async" src="https://miro.medium.com/max/700/1*KmcTynX1BwnpB5oMvfAHTA.png" alt=""/></figure>



<h2 class="wp-block-heading"><strong>4. Navigate to a new webpage</strong></h2>



<p>We will start by telling the remote driver to open the site&nbsp;<a href="https://quotes.toscrape.com/">https://quotes.toscrape.com/</a>. One can do that by calling the&nbsp;<code>navigate()</code>&nbsp;method from the remoteDriver object and using the URL as the method argument:</p>



<pre class="wp-block-code"><code># Navigate to the page to be scraped
url &lt;- "https://quotes.toscrape.com/"
driver$navigate(url)</code></pre>



<p>After running this code, the Chrome window controlled by RSelenium will open the chosen site.</p>



<figure class="wp-block-image"><img decoding="async" src="https://miro.medium.com/max/700/1*DVTs5nupwUSmmSD4VbVFXA.png" alt=""/></figure>



<p>Whenever you need your code to return the current webpage URL, you can call&nbsp;<code>driver$getCurrentUrl()</code>. And if you want to work with a maximized browser window, just call&nbsp;<code>driver$maxWindowSize()</code>.</p>



<pre class="wp-block-code"><code># Get the current url
driver$getCurrentUrl()

# Maximize window
driver$maxWindowSize()</code></pre>



<p>Here I would like to make a very important observation: the browser window controlled by RSelenium will close automatically if there is no new activity for a while. If that happens, you will probably have to run the code below in order to free the port you last used in your RSelenium program. I found this line of code on StackOverflow after facing this problem for the first fime and now I use it whenever I run into such an issue.</p>



<pre class="wp-block-code"><code># This line is very important: run it if your Selenium 
# remoteDriver crashes and you can't open another one in the same port

system("taskkill /im java.exe /f", intern=FALSE, ignore.stdout=FALSE)</code></pre>



<h2 class="wp-block-heading"><strong>5. The&nbsp;</strong><code><strong>driver$findElement()</strong></code><strong>&nbsp;method</strong></h2>



<p>The first element to be manipulated will be the login link, located in the webpage upper right corner. We will do that later by calling the&nbsp;<code>driver$findElement()</code>&nbsp;method with its two arguments (<code>using</code>&nbsp;and&nbsp;<code>value</code>).</p>



<p>However, since this method is so important, let’s take a quick look at all options available to the&nbsp;<code>using</code>&nbsp;parameter. Running&nbsp;<code>driver$findElement</code>, without the parentheses, will return information about this method. Please note that only the first lines from the output are reproduced below.</p>



<pre class="wp-block-code"><code>driver$findElement</code></pre>



<figure class="wp-block-image"><img decoding="async" src="https://miro.medium.com/max/700/1*PfMp0shtO0xSKB_n-ppD7A.png" alt=""/></figure>



<p>As we can observe from the last reproduced output, the&nbsp;<code>using</code>&nbsp;parameter accepts one of the following strings:</p>



<ul class="wp-block-list"><li><code>"xpath"</code>&nbsp;=&gt; find the element in the page by using the Xpath query language;</li><li><code>"css selector"</code>&nbsp;=&gt; use a selector from the CSS style sheet language to find the element;</li><li><code>"id"</code>&nbsp;|&nbsp;<code>"name"</code>&nbsp;|&nbsp;<code>"class name"</code>&nbsp;=&gt; these three options use respectively the id attribute, the name attribute, and the class attribute from the HTML tags to find an element in the webpage;</li><li><code>"link text"</code>&nbsp;|&nbsp;<code>"partial link text"</code>&nbsp;=&gt; when you deal with an HTML anchor tag (example:&nbsp;<code>&lt;a&gt;this is the link text&lt;/a&gt;</code>), you can find them by searching for either the partial or the complete link text.</li></ul>



<h2 class="wp-block-heading"><strong>6. Working with an RSelenium webElement</strong></h2>



<p>So, let’s use the Xpath to find the login link element. One can do that on Chrome by right-clicking on the login link and then choosing the&nbsp;<em>inspect</em>&nbsp;option. This will open the DOM panel and show its HTML code.</p>



<figure class="wp-block-image"><img decoding="async" src="https://miro.medium.com/max/700/1*lS4jDoqwYWXcquaaWHV5Nw.png" alt=""/></figure>



<p>Now, in your browser, right-click on the HTML &lt;a&gt; login element (the line highlighted in blue in the image above) and then choose “<em>Copy”&nbsp;</em>and “<em>Copy full Xpath</em>” in the auxiliary menu. Paste the Xpath information into a string and use it inside&nbsp;<code>driver$findElement()</code>, as follow:</p>



<pre class="wp-block-code"><code># Get the login link element by using xpath
login_xpath &lt;- "/html/body/div/div&#91;1]/div&#91;2]/p/a"
login_link &lt;- driver$findElement(using = "xpath", value = login_xpath)
check_object(login_link)</code></pre>



<figure class="wp-block-image"><img decoding="async" src="https://miro.medium.com/max/700/1*fr34JyPy92scevqy7ln-HQ.png" alt=""/></figure>



<p>As one can observe, the method&nbsp;<code>driver$findElement()</code>&nbsp;returns an RSelenium webElement object. When saved in a computational variable like&nbsp;<code>login_link</code>, this webElement can be used to call other methods too, as shown below:</p>



<pre class="wp-block-code"><code># This method returns the element tag name
login_link$getElementTagName()

# This method returns the element inner text
login_link$getElementText()

# This method returns an element attribute (in this case, "href")
login_link$getElementAttribute("href")</code></pre>



<figure class="wp-block-image"><img decoding="async" src="https://miro.medium.com/max/700/1*nbIJaR6moSf01c6zqcsPqA.png" alt=""/></figure>



<p>You can also click on a webElement. In the current example, this will send us to the login page.</p>



<pre class="wp-block-code"><code># Click on the element
login_link$clickElement()</code></pre>



<figure class="wp-block-image"><img decoding="async" src="https://miro.medium.com/max/700/1*Ikr-T4mSRZC8DuC0F6SJEg.png" alt=""/></figure>



<h2 class="wp-block-heading"><strong>7. Make your code take a little break with&nbsp;</strong><code><strong>Sys.sleep()</strong></code></h2>



<p>We will manipulate this login page later. By now, let’s run the following code so that we can go back to the main page and wait for 2.5 seconds. Then we return to the login page and wait for another 2 seconds:</p>



<pre class="wp-block-code"><code># Go back to the last page and wait 2.5 seconds
driver$goBack()
Sys.sleep(2.5)
cat("ok")</code></pre>



<pre class="wp-block-code"><code># Go forward in the browser history and wait 2 seconds
driver$goForward()
Sys.sleep(2)
cat("ok")</code></pre>



<p>When we work with RSelenium, asking the program to wait a couple of seconds before moving to a new page is an excellent strategy. Actually, this additional time before moving on is almost a mandatory strategy in order to avoid errors that can crash the code.</p>



<p>For example, if we go to a new page and ask RSelenium to find an HTML element that has not been loaded yet, we will get a NoSuchElement Error. And if that happens during a long loop and a lot of data has already been scraped, all the effort done by then might get lost. Thus, waiting a few seconds is a more preferable approach. You could also use&nbsp;<code>try()</code>&nbsp;and&nbsp;<code>tryCatch()</code>&nbsp;statements so that your code can be prepared for some of the most common errors before they occur.</p>



<h2 class="wp-block-heading"><strong>8. Write a function to go back to the first page</strong></h2>



<p>If we were to click on the&nbsp;<em>Quotes to Scrape</em>&nbsp;link, the browser goes back to the first page. The image below shows this link HTML code:</p>



<figure class="wp-block-image"><img decoding="async" src="https://miro.medium.com/max/700/1*7tlxmkq377dCY4vSGW6oVQ.png" alt=""/></figure>



<p>Let’s find this link now with RSelenium by using the following CSS selector:</p>



<pre class="wp-block-code"><code>
# This code uses a css selector to get the link to the main page
css_selector &lt;- "div.header-box.row > div.col-md-8 > h1 > a"
main_page_link &lt;- driver$findElement("css selector", css_selector)
check_object(main_page_link)</code></pre>



<figure class="wp-block-image"><img decoding="async" src="https://miro.medium.com/max/700/1*fr34JyPy92scevqy7ln-HQ.png" alt=""/></figure>



<p>In CSS, class attributes are represented by a dot, and id attributes are represented by a hashtag symbol. The&nbsp;<code>css_selector</code>&nbsp;string we reproduced above can be read as follow: “find the first&nbsp;<code>div</code>&nbsp;HTML tag that has both the&nbsp;<code>header-box</code>&nbsp;and&nbsp;<code>row</code>&nbsp;classes, then find a&nbsp;<code>div</code>&nbsp;with the&nbsp;<code>col-md-8</code>&nbsp;class inside it. Next, find a&nbsp;<code>h1</code>&nbsp;heading, and then return the first link element inside it”.</p>



<p>We can get some info from this new element and click on it too so that the browser goes to the first page.</p>



<pre class="wp-block-code"><code># Get the element info
main_page_link$getElementTagName()
main_page_link$getElementText()
main_page_link$getElementAttribute("style")

# Click on the link
main_page_link$clickElement()</code></pre>



<figure class="wp-block-image"><img decoding="async" src="https://miro.medium.com/max/700/1*d9c1XKCiKrHG0RDnfuQgBg.png" alt=""/></figure>



<p>Now we are ready to write our first customized function using RSelenium code, which will be helpful whenever we want to go back to the first page in this website. Note here the phenomenon of method-chaining (a method called right after another method), which is a very common practice when working with OOP. This new function of ours will not return a webElement object, since the last action it performs is to click on the link. So, the function will return&nbsp;<code>NULL</code>&nbsp;because that is the value returned by the&nbsp;<code>clickElement()</code>&nbsp;method.</p>



<pre class="wp-block-code"><code># This function makes the browser return to the main page
return_to_main_page &lt;- function() {
    css_selector &lt;- "div.header-box.row > div.col-md-8 > h1 > a"
    driver$findElement("css selector", css_selector)$clickElement()
}</code></pre>



<h2 class="wp-block-heading"><strong>9. Gather all links in a webpage with&nbsp;</strong><code><strong>driver$findElements()</strong></code></h2>



<p>Our next action will be to scrape all links in the first page. This can be done by the&nbsp;<code>findElements()</code>&nbsp;method (note the additional letter&nbsp;<em>s&nbsp;</em>in the end). While&nbsp;<code>findElement()</code>&nbsp;(singular) returns the first webElement object in the DOM to match the search criteria,&nbsp;<code>findElements()</code>&nbsp;(plural) returns a list with ALL webElements objects with given criteria.&nbsp;<code>findElements()</code>&nbsp;will also demand the same&nbsp;<code>using</code>&nbsp;and&nbsp;<code>value</code>&nbsp;parameters we talked about earlier. If no webElement is found with the arguments passed to&nbsp;<code>findElements()</code>, an empty list will be returned by it.</p>



<p>If we perform a search using only the&nbsp;<code>&lt;a&gt;</code>&nbsp;tag name, we will find 55 links in the first page.</p>



<pre class="wp-block-code"><code># The method findElements() returns a list of Web Elements.
# This code finds all links in page 1 by using the tag name
return_to_main_page()

all_links_page_1 &lt;- driver$findElements("tag name", "a")

cat(paste("number of links in main page: ",
          length(all_links_page_1),
          "\n\n")
   )

cat("object", quote(all_links_page_1), "\n")
check_object(all_links_page_1)

cat("\n\nseventh object in", quote(all_links_page_1), "list:\n")
check_object(all_links_page_1&#91;&#91;7]])</code></pre>



<figure class="wp-block-image"><img decoding="async" src="https://miro.medium.com/max/700/1*d5zy_1sN85mSvyN7DrGxeg.png" alt=""/></figure>



<p>We can choose to print to the console the inner text and URL from all the link elements in the first page. In order to do that, let’s first create another function.</p>



<pre class="wp-block-code"><code># The function below, when used in a webElement with the "a" tag name,
# returns the link inner text and its url.
# Both info are also printed on the console if print_output = TRUE
show_links_info &lt;- function(link_element, print_output = TRUE) {
    text &lt;- as.character(link_element$getElementText())
    url &lt;- as.character(link_element$getElementAttribute("href"))
    if (print_output) {
        cat(paste0(text, ": "),
            url,
            "\n")
        # line below makes the info be displayed during iteration
        flush.console()
    }
        
    c(text, url)
}</code></pre>



<p>This new function must receive an RSelenium webElement with an HTML&nbsp;<code>&lt;a&gt;</code>&nbsp;tag, since we will look for its inner text and&nbsp;<code>href</code>&nbsp;attibute. So, if the&nbsp;<code>print_output</code>&nbsp;parameter is set to&nbsp;<code>TRUE</code>, the code inside the if statement is executed and the element inner text and URL will be printed to the console gradually, since&nbsp;<code>flush.console()</code>&nbsp;is called there. A vector with&nbsp;<code>text</code>&nbsp;and&nbsp;<code>url</code>is returned by the function.</p>



<p>The code below with&nbsp;<code>lapply</code>&nbsp;will print all the information from the&nbsp;<code>all_links_page_1</code>&nbsp;list. The computational variable&nbsp;<code>saved_list</code>&nbsp;allows to access this info in a list of lists too, if necessary. Only part of the output is reproduced below:</p>



<pre class="wp-block-code"><code># Use lapply to apply the show_links_info function to the list with
# all the links in the first page
saved_list &lt;- lapply(all_links_page_1, show_links_info)</code></pre>



<figure class="wp-block-image"><img decoding="async" src="https://miro.medium.com/max/700/1*3xQAhZBeftO1baB4Q2WeCw.png" alt=""/></figure>



<p>If we prefer to save the links information into a data frame, that can be done by a for loop, with each iteration calling&nbsp;<code>show_links_info()</code>&nbsp;and appending this info to a new computational variable called&nbsp;<code>links_dataframe</code>.</p>



<pre class="wp-block-code"><code># The code below saves all links from page 1 in a dataframe

links_dataframe &amp;lt;- data.frame()

for (i in 1:length(all_links_page_1)) {
    links_info &amp;lt;- show_links_info(all_links_page_1&#91;&#91;i]], print = FALSE)
    temp_data_frame &amp;lt;- data.frame(index = nrow(links_dataframe) + 1,
                                  text = stringr::str_trim(links_info&#91;1]),
                                  url = links_info&#91;2])
    links_dataframe &amp;lt;- rbind(links_dataframe, temp_data_frame)</code></pre>



<figure class="wp-block-image"><img decoding="async" src="https://miro.medium.com/max/700/1*vQWCR_K0zOLFU6C6IIJzRw.png" alt=""/></figure>



<h2 class="wp-block-heading"><strong>10. Go through all pages in a website</strong></h2>



<p>Another very common task we might need to perform is to visit all pages in a website by following a next link, for example. And in each page, we can perform an action, like scraping some information.</p>



<p>Since we cannot be sure of how many pages a site has beforehand, we need code that keeps repeating an action until a condition becomes true and the code stops executing. That is right, this is a perfect scenario to use a&nbsp;<code>repeat</code>&nbsp;loop with a&nbsp;<code>break</code>&nbsp;inside an if statement. At first, this loop of ours will only go through every page and then print the page number to the console.</p>



<pre class="wp-block-code"><code>
# This code clicks on the "next" link and moves along the pages.
# When the last page is reached and there is no next link, break the loop.
return_to_main_page()
i &lt;- 1

repeat {
    cat("\npage ", i)
    flush.console()
    i &lt;- i + 1
    
    next_link_as_list &lt;- driver$findElements(using="css selector", "li.next > a")

    if (length(next_link_as_list) == 0) {
        break
    }
    
    next_link_as_list&#91;&#91;1]]$clickElement()
    Sys.sleep(2)
    
    
}

cat("\nwe reached the last page")
return_to_main_page()
cat("\nback to page 1\n")</code></pre>



<p>Note that the next link is located by using&nbsp;<code>driver$findElements()</code>&nbsp;in line 11. So, this code will return either a list with one webElement or a list with no element at all. This is a nice way of avoiding the NoSuchElement Error that would have been raised in the last page if we had used the&nbsp;<code>driver$findElement()</code>&nbsp;method instead. So, when&nbsp;<code>next_link_as_list</code>&nbsp;has a length of zero, the code will enter the conditional and break the loop, and we will have accomplished our goal of going through all pages in the website.</p>



<h2 class="wp-block-heading"><strong>11. Writing code to open a specific page in the website</strong></h2>



<p>After the last code execution, we discovered that the site has only 10 pages with quotes. Besides, all pages from 2 to 10 share the following url pattern:&nbsp;<em>https://quotes.toscrape.com/page/</em>&nbsp;plus the page number added to its end. This kind of situation is a very desirable one because it allows you to move to new pages by just sending the specific url pattern directly to the&nbsp;<code>driver$navigate()</code>&nbsp;method. So, if you know all the pages range beforehand, this approach will be much easier than finding link elements and clicking on them to change pages.</p>



<p>Let’s now create a function that will send us directly to a chosen page in our website. We will add some boolean conditions in it so that the function can check the argument class and raise an exception if it is a character one. The function will also truncate decimal numbers and raise an error if the number passed to it is not between 1 to 10.</p>



<pre class="wp-block-code"><code># From the code above, we discovered that there are 10 pages in the website.
# The function below goes to a chosen page and it will raise an error
# if the argument passed is not an integer number between 1 and 10
go_to_page &lt;- function(page_number=1) {
    if (is.character(page_number)) {
        cat("Error: you passed a string as argument.")
    }
    
    if (!is.numeric(page_number) ||
        as.integer(page_number) &lt; 1 ||
        as.integer(page_number) > 10 ) {
        stop("Provide an integer number between 1 and 10 as argument")
    }
    
    if (page_number %% 1 != 0) {
        page_number &lt;- trunc(page_number)
        cat(quote(page_number), "truncated to", page_number)
    }
    
    if (page_number != 1) {
        base_url_page &lt;- "https://quotes.toscrape.com/page/"
        driver$navigate(paste(base_url_page, as.character(page_number), sep=""))    
    } else {
        return_to_main_page()
    }
}</code></pre>



<p>Now, we can go to page 3 and page 7 directly by running this code:</p>



<pre class="wp-block-code"><code># Go to page 3, wait 2.5 seconds and then go to page 7
go_to_page(3)
driver$getCurrentUrl()

Sys.sleep(2.5)

go_to_page(7)
driver$getCurrentUrl()</code></pre>



<figure class="wp-block-image"><img decoding="async" src="https://miro.medium.com/max/456/1*fZHDn2nyTn5vNABjdzIIbg.png" alt=""/></figure>



<p>If we ask to go to page&nbsp;<code>pi</code>&nbsp;by mistake instead of page 3, the function will let us know that it used a truncated version of&nbsp;<code>pi</code>, leading us then to page 3.</p>



<pre class="wp-block-code"><code># This code truncates 3.14 to 3 and then go to page 3
go_to_page(pi)
Sys.sleep(2.5)
driver$getCurrentUrl()</code></pre>



<figure class="wp-block-image"><img decoding="async" src="https://miro.medium.com/max/417/1*8KZ2Ovw9--Uw1DrsF-tMEQ.png" alt=""/></figure>



<p>And any of the following function calls will return an error:</p>



<pre class="wp-block-code"><code># The following function calls will return errors

go_to_page("page number 3")
go_to_page("3")
go_to_page("3.1415")
go_to_page(25)
go_to_page(97.75)</code></pre>



<figure class="wp-block-image"><img decoding="async" src="https://miro.medium.com/max/700/1*waCa3GUQRkT3fmRoo1Cqcg.png" alt=""/></figure>



<p>And what if we wanted to retrieve an information from the current URL and save it in a computational variable, like the current page number, for example? The following code will transform the current URL in a string, split it by the&nbsp;<code>/</code>&nbsp;characters and save this info in a list of strings. Then it will get the last element of this list, which will be the page number for any page but the first one.</p>



<pre class="wp-block-code"><code># The code below will extract the page number from the current url
go_to_page(10)

my_url &lt;- as.character(driver$getCurrentUrl())
cat(my_url, "\n")

split &lt;- base::strsplit(my_url, "/")
cat(unlist(split)&#91;length(unlist(split))])

return_to_main_page()</code></pre>



<figure class="wp-block-image"><img decoding="async" src="https://miro.medium.com/max/700/1*CEtdXWSd71rpd4cQBcxCew.png" alt=""/></figure>



<h2 class="wp-block-heading"><strong>12. Saving the quotes info as strings</strong></h2>



<p>Now, it is time for us to tackle the main information in the website: the quotes. Before we can save them all in a nice data frame (R programmers do like saving info in data frames, don’t they?), I will show you a way of accessing all the quotes text information at once. Below we reproduce the HTML structure from one of these quotes (the vertical blue line marks all children tags inside a quote box):</p>



<figure class="wp-block-image"><img decoding="async" src="https://miro.medium.com/max/700/1*IBAPrQ6nCA-05CQZeJDLOw.png" alt=""/></figure>



<p>When we use the&nbsp;<code>getElementText()</code>&nbsp;method from a webElement object, we not only access its own inner text but also the inner texts from all its children tags. So, if each quote info is inside a&nbsp;<code>div</code>&nbsp;tag with a&nbsp;<code>quote</code>&nbsp;class, represented in CSS selector by&nbsp;<code>div.quote</code>, we can print all quotes information from page 1 by running the following code (output is only parcially reproduced below):</p>



<pre class="wp-block-code"><code># This code reproduces all the first ten quotes as a long string.
# It shows how you can use the getElementText() method to access the
# inner text from all children elements at once.
string &lt;- ""
quotes_divs_list &lt;- driver$findElements("css selector", "div.quote")
string &lt;- unlist(lapply(quotes_divs_list, function(element) {
    string &lt;- paste(string, 
                    as.character(element$getElementText()),
                    "\n\n",
                    sep="")
    return(string)
}))

cat(string)</code></pre>



<figure class="wp-block-image"><img decoding="async" src="https://miro.medium.com/max/700/1*DrIl13preDQ1lP4s5BCIVg.png" alt=""/></figure>



<h2 class="wp-block-heading"><strong>13. Saving the quotes info as a data frame</strong></h2>



<p>In our effort to save the quotes information into a data frame, let’s first create the following auxiliary functions:</p>



<pre class="wp-block-code"><code># Customized functions to be used in the next sapply() and lapply() calls in this code:
get_element_text &lt;- function(element) {
    as.character(element$getElementText())
}

get_link_href &lt;- function(element) {
    as.character(element$getElementAttribute("href"))
}

click_element &lt;- function(element) {
    element$clickElement()
}</code></pre>



<p>If we run the code below, we can get all quotes info in the first page and save them to computational variables:</p>



<pre class="wp-block-code"><code># With this code one can get all the info for the quotes in the current page
return_to_main_page()
quotes_text &lt;- sapply(driver$findElements("css selector", "span.text"),
                      get_element_text)
authors_text &lt;- sapply(driver$findElements("css selector", "small.author"),
                       get_element_text)
authors_links &lt;- sapply(driver$findElements("partial link text", "(about)"),
                        get_link_href)
tags_text &lt;- sapply(driver$findElements("css selector", "div.tags"),
                    get_element_text)</code></pre>



<p>These three functions we created will be used to get the quotes information from each page (like we did for page 1) and save it in vectors that will eventually be appended to the&nbsp;<code>all_quotes</code>&nbsp;data frame. Notice that we will also loop over the pages using the&nbsp;<code>repeat</code>&nbsp;structure we built before, even though we use a&nbsp;<code>while (TRUE)</code>&nbsp;loop here instead.</p>



<pre class="wp-block-code"><code>
# Now, we only need to loop over all pages and save the quotes info into a dataframe
return_to_main_page()
all_quotes &lt;- data.frame()
i &lt;- 0

while (TRUE) {
    quotes_texts &lt;- sapply(driver$findElements("css selector", "span.text"),
                           get_element_text)
    authors_texts &lt;- sapply(driver$findElements("css selector", "small.author"),
                            get_element_text)
    authors_links &lt;- sapply(driver$findElements("partial link text", "(about)"),
                            get_link_href)
    tags_texts &lt;- sapply(driver$findElements("css selector", "div.tags"),
                         get_element_text)
    page_quotes &lt;- data.frame("sequence" = (i * 10 + 1):(i * 10 +10),
                              "quote" = quotes_texts,
                              "author" = authors_texts,
                              "author_biography_link" = authors_links,
                              "tags" = tags_texts)
    
    all_quotes &lt;- rbind(all_quotes, page_quotes)
    i &lt;- i + 1
    cat("\npage", i)
    flush.console()
    
    try(next_link_as_list &lt;- driver$findElements(using="css selector", "li.next > a"),
        silent = TRUE)
    
    if (length(next_link_as_list) == 0) {
        break
    }
    
    next_link_as_list&#91;&#91;1]]$clickElement()
    Sys.sleep(2)
    
}</code></pre>



<p>If we want, we can save the&nbsp;<code>all_quotes</code>&nbsp;data frame as a CSV file, check the data frame dimensions and look at its first rows.</p>



<pre class="wp-block-code"><code># save the all_quots dataframe as a CSV file
write.csv(all_quotes,
          file = "quotes.csv",
          quote = FALSE,
          row.names = FALSE,
          fileEncoding = "UTF-8")

cat(paste0("all_quote data frame dimensions: ", nrow(all_quotes), ", ", ncol(all_quotes)))

head(all_quotes, 3)</code></pre>



<figure class="wp-block-image"><img decoding="async" src="https://miro.medium.com/max/2000/1*BDWc0uEIGJxD4jnqk_igfg.png" alt=""/></figure>



<p>Pretty amazing, right?</p>



<h2 class="wp-block-heading"><strong>14. Saving the authors’ biographical info as a data frame</strong></h2>



<p>However, there are still some interesting information in this website waiting to be scraped by us. If you navigate to the first link in the statistical variable&nbsp;<code>all_quotes$author_biography_link</code>, you will find biographical information about Albert Einstein. Every author quoted in the website has a page like that. The good news is that we already gathered all these biographical links, we only need to loop over them and save the scraped information into another data frame called&nbsp;<code>authors_info</code>. The following code accomplishes that task.</p>



<pre class="wp-block-code"><code># Each author has a biography page. We can get that info too.
# This will get all the unique authors biography links
unique_links_biographies &lt;- unique(all_quotes$author_biography_link)
cat("total of biographical pages:", length(unique_links_biographies))

# Now we can loop over these biography links and save their info in a dataframe
authors_info &lt;- data.frame()

for (link in unique_links_biographies) {
    driver$navigate(link)
    Sys.sleep(3)
    index &lt;- nrow(authors_info) + 1
    name &lt;- driver$findElement("css selector", "h3.author-title")$getElementText()
    born_date &lt;- driver$findElement("css selector", "span.author-born-date")$getElementText()
    born_location &lt;- driver$findElement("css selector", "span.author-born-location")$getElementText()
    description &lt;- driver$findElement("css selector", "div.author-description")$getElementText()
    
    cat("\n", index, "of", length(unique_links_biographies))
    flush.console()
    
    new_row &lt;- data.frame("index" = index,
                          "name" = as.character(name),
                          "born_date" = as.character(born_date),
                          "born_location" = as.character(born_location),
                          "description" = as.character(description))
    
    authors_info &lt;- rbind(authors_info, new_row) 
}

head(authors_info)</code></pre>



<p>After we loop over all the 50 biographical pages, we will have a new nice data frame with all this information and we can saved it in a new CSV file, for example. Notice that this program logic can be reused and applied to many web scraping tasks. Find the data you need, make sure to follow the website robots.txt instructions and be happy!</p>



<h2 class="wp-block-heading"><strong>15. Manipulate text input boxes in the login page</strong></h2>



<p>Now it is time for us to start manipulating form elements, which is a very important skill to add to our task automation kit. Let’s go back to the login page and save the two text input boxes into computational variables.</p>



<pre class="wp-block-code"><code># Now we go to the login page and play a little with the text input boxes.

# Go to the login page
login_xpath &lt;- "/html/body/div/div&#91;1]/div&#91;2]/p/a"
driver$findElement(using = "xpath", value = login_xpath)$clickElement()

# Save the text input boxes elements in variables, using their id (two forms):
username_input &lt;- driver$findElement("id", "username") 
password_input &lt;- driver$findElement("css selector", "#password")</code></pre>



<p>When handling text input HTML elements, two methods are definitely very useful:&nbsp;<code>clearElement()</code>&nbsp;and&nbsp;<code>sendKeysToElement()</code>. It is a good idea to start by calling the former so that any previous content might get cleared before you start sending new information to the text box. As for the second method, it receives a list with a string as its sole element.</p>



<pre class="wp-block-code"><code>
# Username and password values
# (one can also use base::readline() or getPass::getPass() 
# to ask for user input)
username &lt;- "Fabrício"
password &lt;- "1234 is not a secure password!"

# When dealing with input boxes, it is good practice to clear their value first
username_input$clearElement()

# Send the username information (it needs to be passed as a list)
username_input$sendKeysToElement(list(username))

# Do the same with password
password_input$clearElement()
password_input$sendKeysToElement(list(password))

# Once you don't need the username and password variables anymore, delete them
rm(username, password)</code></pre>



<p>In order to submit the form and login in the site, we still need to press the login button. We can do that by using the&nbsp;<code>submitElement()</code>, available for some HTML elements that have the ability of submiting information to the website.</p>



<pre class="wp-block-code"><code># Find the submit button
submit_button &lt;- driver$findElement("css selector", "input.btn.btn-primary")

# Use the submitElement() method to submit the form information
submit_button$submitElement()</code></pre>



<p>After we do that, nothing extraordinary will happen: we will be redirected to the first page and the login text will be changed to&nbsp;<em>Logout</em>. But we did perform some fancy activity: we wrote code to login automatically in a website. If we desire, we could do the same operation in many other sites.</p>



<p>Just be careful about letting important information, like passwords, hard-coded in your program. Don’t make the life of bad people who can steal your personal info too easy, ok? A very good option to avoid such problems is to use the&nbsp;<code>getPass</code>&nbsp;package to send sensitive input data.</p>



<h2 class="wp-block-heading"><strong>16. Working with other types of HTML input tags</strong></h2>



<p>Even though they are found on the internet very often, textboxes are not the only HTML input we can manipulate with RSelenium code in our browser. We will move now to a new website (<a href="http://httpbin.org/forms/post">http://httpbin.org/forms/post</a>) and automate the boring task of ordering pizza online. Because eating pizza is a lot of fun but ordering it… well, not that much. We can let our R program to do the ordering for us so that we can focus only on the eating, fun part.</p>



<figure class="wp-block-image"><img decoding="async" src="https://miro.medium.com/max/700/1*Wwa08bQyHz8kCykNRiTJIQ.png" alt=""/></figure>



<p>As we can observe, besides three text boxes, this form uses radio buttons for the pizza size, checkboxes for the toppings, and a time input for the delivery time. These four elements are all input HTML tags, but they differ in their type attribute value. And depending on the chosen input type, they can have very specific HTML attributes that are not present in the others ones. We also have a textarea tag used in the delivery instructions, and a submit button to the form.</p>



<p>So, I want a large pizza with bacon, extra cheese and mushrooms to be delivered around 19:45 at my home. I just need to let my code to do the ordering for me.</p>



<p>Below you will find my answer to this challenge. However, before you check it out, see if you can imagine how this code would look like. And to make it more interesting, use a one liner to order the three toppings at once with the help of the&nbsp;<code>base::lapply()</code>&nbsp;and the&nbsp;<code>click_element()</code>&nbsp;functions (this last one was created by us earlier).</p>



<p>Another quick tip: radioboxes and checkboxes can be manipulated using the&nbsp;<code>$clickElement()</code>&nbsp;method.</p>



<p>My code to perform this task goes below:</p>



<pre class="wp-block-code"><code>
# This code choose the large option in the radio buttons
radio_buttons &lt;- driver$findElements("css selector", 'input&#91;type="radio"]')
radio_buttons&#91;&#91;3]]$clickElement()

# Choose the first, second and fourth toppings to your pizza
checkboxes &lt;- driver$findElements("css selector", 'input&#91;name="topping"]')
lapply(checkboxes&#91;-3], click_element)

# Set delivery time to 19h45
time &lt;- driver$findElement("css selector", 'input&#91;type="time"]')
time$sendKeysToElement(list("19:45"))

poetry &lt;- "
Two households, both alike in dignity\n
(In fair Verona, where we lay our scene),\n
From ancient grudge break to new mutiny,\n
Where civil blood makes civil hands unclean.\n
From forth the fatal loins of these two foes\n
A pair of star-crossed lovers take their life;\n
Whose misadventured piteous overthrows\n
Doth with their death bury their parents’ strife.\n
The fearful passage of their death-marked love\n
And the continuance of their parents’ rage,\n
Which, but their children’s end, naught could remove,\n
Is now the two hours’ traffic of our stage;\n
The which, if you with patient ears attend,\n
What here shall miss, our toil shall strive to mend.\n"

# Send aditional information to the textarea input
textarea &lt;- driver$findElement("tag name", "textarea")
textarea$sendKeysToElement(list(poetry))

# Submit form and go back
driver$findElement("css selector", "p > button")$submitElement()
Sys.sleep(5)
driver$goBack()

# Refresh the form page:
driver$refresh()</code></pre>



<h2 class="wp-block-heading"><strong>17. Finishing your work with RSelenium</strong></h2>



<p>Finally, we can ask RSelenium to close the browser window and shut down the server. We should also release the port we were using.</p>



<pre class="wp-block-code"><code># When you are done working with selenium, 
# Quit the browser and end the session
driver$quit()
driver$closeServer()
rm(driver, client_server)

# This releases the port.
system("taskkill /im java.exe /f", intern=FALSE, ignore.stdout=FALSE)</code></pre>



<h2 class="wp-block-heading"><strong>18. Last words</strong></h2>



<p>Now, we could create code to order 20 diferent pizzas, for example, if we desired to make a good surprise for our great work colleages. Then, whenever you want to ask another 20 pizzas (or 15, or 1000!), you just need to hit the run button, and RSelenium makes all the work for you.</p>



<p>That’s the beauty of task automation, and with this tutorial, we only scratched the surface of what RSelenium can do for us. However, the information published here is more than enough to allow you to continue your learning path in this area and create fantastic scripts that will save you and your team a lot of time.</p>



<p>And this saved time can be applied later in other important activities, like spending quality time with family or friends, reading, learning new skills, birdwatching, or simply relaxing. You definitely earned it after writing your automation script!</p>



<p><em>Good luck and happy automation!</em></p>



<p>P.S.: You will find more info about my work on LinkedIn, Medium, and Github:</p>



<p><a href="https://www.linkedin.com/in/fabriciobrasil">https://www.linkedin.com/in/fabriciobrasil</a></p>



<p><a href="https://fabriciusbr.medium.com/">https://fabriciusbr.medium.com/</a></p>



<p><a href="https://github.com/fabricius1">https://github.com/fabricius1</a></p>



<p>Link do post original: <a href="https://fabriciusbr.medium.com/using-rselenium-for-task-automation-and-web-scraping-250c4f2f5979">https://fabriciusbr.medium.com/using-rselenium-for-task-automation-and-web-scraping-250c4f2f5979</a></p>



<p>#coletadadedadosdaweb #linguagemR #automacao</p>
<p>O post <a href="http://estatidados.com.br/using-rselenium-for-task-automation-and-web-scraping/">Using RSelenium for task automation and web scraping</a> apareceu primeiro em <a href="http://estatidados.com.br">Estatidados</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>http://estatidados.com.br/using-rselenium-for-task-automation-and-web-scraping/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Análise da Violência no Rio de Janeiro</title>
		<link>http://estatidados.com.br/analise-da-violencia-no-rio-de-janeiro/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=analise-da-violencia-no-rio-de-janeiro</link>
					<comments>http://estatidados.com.br/analise-da-violencia-no-rio-de-janeiro/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 29 Jun 2021 15:56:18 +0000</pubDate>
				<category><![CDATA[André Marinho]]></category>
		<category><![CDATA[Estatística]]></category>
		<guid isPermaLink="false">http://estatidados.com.br/?p=624</guid>

					<description><![CDATA[<p>A criminalidade no Brasil tem crescido cada vez mais. Segundo o&#160;portal G1, após dois anos de queda, a violência voltou a crescer no país, registrando um aumento de 5% nos assassinatos em 2020, ano marcado pela pandemia da COVID-19. Este<a class="leiamais" href="http://estatidados.com.br/analise-da-violencia-no-rio-de-janeiro/" title="Análise da Violência no Rio de Janeiro">...[Continuar lendo]</a></p>
<p>O post <a href="http://estatidados.com.br/analise-da-violencia-no-rio-de-janeiro/">Análise da Violência no Rio de Janeiro</a> apareceu primeiro em <a href="http://estatidados.com.br">Estatidados</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image"><img decoding="async" src="https://miro.medium.com/max/1400/1*ciUy6qIA8v2PtFsMRjdZ_g.jpeg" alt=""/></figure>



<p>A criminalidade no Brasil tem crescido cada vez mais. Segundo o&nbsp;<a href="https://g1.globo.com/monitor-da-violencia/noticia/2021/02/12/brasil-tem-aumento-de-5percent-nos-assassinatos-em-2020-ano-marcado-pela-pandemia-do-novo-coronavirus-alta-e-puxada-pela-regiao-nordeste.ghtml">portal G1</a>, após dois anos de queda, a violência voltou a crescer no país, registrando um aumento de 5% nos assassinatos em 2020, ano marcado pela pandemia da COVID-19. Este crescimento atinge diversas cidades. Um estudo realizado pelo&nbsp;<a href="https://g1.globo.com/ba/bahia/noticia/2021/02/12/monitor-da-violencia-bahia-registra-maior-quantidade-de-mortes-violentas-pelo-segundo-ano-seguido.ghtml">Monitor da Violência</a>, relacionado ao ano de 2020, chegou a conclusão de que os estados com maior número de crimes violentos são Bahia (5.276), Ceará (4.039), Pernambuco (3.759) e Rio de Janeiro (3.653) respectivamente.</p>



<p>Com as leis atuais&nbsp;de acesso à informação e a consciêntização de orgãos públicos, é possível ter acesso aos dados, realizar estudos e entender mais a fundo diversos fenômenos da sociedade, inclusive a criminalidade. Um grande exemplo é o governo do Rio de Janeiro, que traz a iniciativa do&nbsp;<a href="http://www.ispdados.rj.gov.br/">portal ISPDados</a>.</p>



<p>Este artigo tem como objetivo realizar um estudo da criminalidade no Rio de Janeiro, por meio da extração e análise de informações estatísticas relevantes acerca da violência na cidade maravilhosa.</p>



<h2 class="wp-block-heading" id="7045">Obtenção dos Dados</h2>



<p>Os dados foram obtidos diretamente do portal ISPDados, página de Dados Abertos do Instituto de Segurança Pública. No portal, é possível acessar as fontes de dados que contém registros criminais e de atividade policial no Rio de Janeiro.</p>



<p>Segundo o portal, as estatísticas são construídas a partir dos Registros de Ocorrência (RO) lavrados nas delegacias da Secretaria do Estado de Polícia Civil do Rio de Janeiro (SEPOL), além de informações complementares que são fornecidas pela Secretaria do Estado de Polícia Militar do Rio de Janeiro (SEPM). Os registros de ocorrência são submetidos ao controle de qualidade realizado pela Corregedoria Geral da Polícia (CGPOL) da Secretaria de Estado de Polícia Civil e, posteriormente, consolidados pelo ISP. As estatísticas produzidas baseiam-se na data em que foi confeccionado o Registro de Ocorrência.</p>



<h2 class="wp-block-heading" id="ce38">Análise Inicial e Limpeza dos Dados</h2>



<p>Com o objetivo de entender o dataset em estudo, extraí algumas informações a respeito, como dimensões, colunas, tipos de variáveis, etc. Além disso, mostro o extenso dicionário de variáveis e verifico a qualidade dos dados, que já foram previamente pré-processados pelo professor Carlos Melo do&nbsp;<a href="https://sigmoidal.ai/">Sigmoidal</a>. Você pode conferir com detalhes&nbsp;<a href="https://github.com/andremarinho17/data_projects/blob/master/Analise_da_Viol%C3%AAncia_no_Rio_de_Janeiro.ipynb">aqui</a>.</p>



<h2 class="wp-block-heading" id="0e05">Informações Estatísticas da Violência no Rio de Janeiro</h2>



<figure class="wp-block-image"><img decoding="async" src="https://miro.medium.com/max/480/1*qvyCy5JDHJ4TTEO-CwDfbQ.gif" alt=""/></figure>



<p>Com o conhecimento do conjunto de dados e ciente de sua qualidade, se faz necessário extrair informações estatísticas da violência no Rio para ajudar no combate a criminalidade. A seguir, começarei as análises a respeito de crimes contra a vida e contra o patrimônio.</p>



<h2 class="wp-block-heading" id="0ae7">Crimes Contra o Patrimônio — Veículos</h2>



<p>Crimes contra o patrimônio, tais como estelionato, furto e roubo — principalmente de veículos — são bem frequentes em grandes cidades do Brasil. No conjunto de dados, há variáveis relacionadas há esses tipos de crimes, o que possibilita uma análise e extração de informação relevante para que esses tipos de crimes sejam combatidos.</p>



<p>Qual será a média dos roubos e furtos de veículos?</p>



<figure class="wp-block-image"><img decoding="async" src="https://miro.medium.com/max/700/1*ZVwOgOMEH_icPYv23Ke8Eg.png" alt=""/></figure>



<p>Observa-se que o Rio de Janeiro é fortemente afetado por furtos e roubos a veículos. Será que as pessoas conseguem recuperar seus veículos? É o que veremos a seguir.</p>



<figure class="wp-block-image"><img decoding="async" src="https://miro.medium.com/max/700/1*4-WWpeKmYU3DE4qoJIEF8Q.png" alt=""/></figure>



<p>O Rio de Janeiro possui uma média geral de veículos recuperados aproximada de 1772, o que equivale a mais de metade das médias de veículos roubados ou furtados, mas isso não nos diz muita coisa. A seguir, analisaremos o quanto as pessoas conseguem recuperar seus veículos através do cálculo percentual da média de recuperados em relação a soma dos perdidos (furtados + roubados).</p>



<figure class="wp-block-image"><img decoding="async" src="https://miro.medium.com/max/700/1*XPptyHj_QJqWpkm_Ehz_ig.png" alt=""/></figure>



<p>Observa-se que apenas 43% dos veículos perdidos são recuperados. Tal dado alerta para a elaboração de políticas públicas por parte dos Governos Estaduais que busquem incentivar as vítimas de crimes contra o patrimônio a buscar a recuperação, mas ao mesmo tempo, também é necessário políticas que ajudem estes cidadãos da melhor forma possível durante o processo de recuperação. Além disso, também é uma alerta para que a segurança pública nas ruas, vias e rodovias seja reforçada.</p>



<h2 class="wp-block-heading" id="0fbc">Crimes Contra a Vida</h2>



<p>Os crimes contra a vida (homicídios dolosos, latrocínios e lesões corporais seguidas de morte) são recorrentes no Rio de Janeiro e, como dito anteriormente, o Estado figura na 4ª posição daqueles com maior quantidade de mortes violentas, totalizando 3.653 Crimes Violentos Letais Intencionals (CVLI).</p>



<p>Diante do exposto, uma análise se faz necessária para ajudar no combate a esses tipos de crimes. Sendo assim, verificaremos quais foram os anos com menor e maior número de homicídios dolosos respectivamente.</p>



<figure class="wp-block-image"><img decoding="async" src="https://miro.medium.com/max/700/1*1BnMYKQN2tZX7qsiBqoupQ.png" alt=""/></figure>



<p>Pode-se observar que foi o ano de 1995 que teve o maior registro de homicídios dolosos (831) e o ano de 2015 teve o menor registro (272). É possível levantar uma hipótese de que a quantidade de homicídios dolosos caiu com o tempo, o que é um bom sinal. Para isso, vamos utilizar de técnicas de visualização de dados para explorar como essa e outras variáveis se comportam ao longo do tempo.</p>



<h2 class="wp-block-heading" id="46ea">Visualização de Dados</h2>



<p>Gráficos de linhas e histogramas são tipos de visualização poderosos que nos ajudam a entender como as variáveis se comportam. O histograma nos auxilia a entender como estão distribuídas as variáveis e o gráfico de linha no estudo em questão é importantíssimo, pois com ele podemos realizar o estudo do comportamento de diferentes crimes ao longo do tempo, como homicídio doloso, estupro e total de furtos.</p>



<p>Primeiramente, vamos buscar confirmar a hipótese que fizemos anteriormente: as ocorrências de homicídios dolosos caíram com o tempo?</p>



<figure class="wp-block-image"><img decoding="async" src="https://miro.medium.com/max/397/1*wAGyn-uRr7EAAjDB2wZcpg.png" alt=""/></figure>



<p>Observando o gráfico ao lado, concluímos que as ocorrências de homicídios dolosos caíram ao longo do tempo, o que é um bom sinal! Entre os anos 2000 e 2010, as ocorrências permaneceram em alta, mas caíram próximo do fim da década. A década seguinte foi marcada por altos e baixos.</p>



<h2 class="wp-block-heading" id="822b">Casos de Estupro</h2>



<p>A cultura do estupro é uma pauta importantíssima a ser debatida e combatida. Segundo o portal Super Interessante, uma pesquisa divulgada em 2016 mostrou que&nbsp;<strong>86% das brasileiras&nbsp;</strong>já receberam algum tipo de cantada, e 44% tiveram seus corpos tocados. Pode não parecer, mas esses dados alertam para o silenciamento da violência sexual e a construção desse tipo de comportamento na nossa sociedade. Confira&nbsp;<a href="https://super.abril.com.br/videos/2-minutos-para-entender/cultura-do-estupro/">aqui</a>&nbsp;a matéria completa.</p>



<figure class="wp-block-image"><img decoding="async" src="https://miro.medium.com/max/476/1*QqQiL3MfgYVaGKgdjnC88g.png" alt=""/><figcaption>Imagem: Super Interessante</figcaption></figure>



<p>A seguir, repetiremos o mesmo processo anterior para verificar as ocorrências de estupros no Rio de Janeiro ao longo dos anos.</p>



<figure class="wp-block-image"><img decoding="async" src="https://miro.medium.com/max/389/1*aKOQBUvkgN_Bs64E7cAFmA.png" alt=""/></figure>



<p>Conforme é possível observar, os casos de estupro apresentaram um recorde no ano de 2012, apresentaram queda nos anos posteriores e vieram em uma crescente desde o ano de 2016. É uma informação importante, pois é necessário que as autoridades repensem novas políticas públicas e reforcem campanhas de incentivo no combate ao estupro, para que a curva diminua nos próximos anos.</p>



<figure class="wp-block-image"><img decoding="async" src="https://miro.medium.com/max/680/1*kQNSmeeW6TNLHFUHq0TPSg.jpeg" alt=""/><figcaption>Imagem:&nbsp;<a href="https://www.brasildefato.com.br/2016/06/03/crime-no-rio-de-janeiro-reacende-debate-sobre-genero-e-a-cultura-do-estupro">Brasil de Fato</a></figcaption></figure>



<p>Não deixe de denunciar! Confira&nbsp;<a href="https://catracalivre.com.br/cidadania/veja-como-agir-caso-voce-seja-vitima-de-assedio-ou-estupro/">aqui</a>&nbsp;o que fazer nestes casos.</p>



<h2 class="wp-block-heading" id="7527">Como anda a segurança das pessoas no Rio?</h2>



<p>Com o objetivo de verificar como está a segurança da população no Rio de Janeiro, analisaremos como se comportam as ocorrências de furtos gerais nos anos em estudo. Para isso, existe a variável&nbsp;<em>total_furtos</em>, que representa uma soma de todos os tipos de furtos em estudo (de veículos, trausentes, de celular, coletivo, etc).</p>



<figure class="wp-block-image"><img decoding="async" src="https://miro.medium.com/max/409/1*3LB7pN-kRBhFRFcKeriYfQ.png" alt=""/></figure>



<p>Observa-se que os casos de furto no geral tiveram uma crescente desde 1995, apresentando altos valores entre 2010 e meados de 2015. Porém, na metade dos anos 2015–2020, as ocorrências voltaram a subir. É uma alerta de que a segurança pública no Rio de Janeiro não vai bem e é necessário que o Governo Estadual volte suas atenções para este fato.</p>



<h2 class="wp-block-heading" id="0327">Casos de Pessoas Desaparecidas</h2>



<p>Outro fenômeno a ser estudado é o desaparecimento de pessoas. Segundo o&nbsp;<a href="https://observatorio3setor.org.br/noticias/perigo-ignorado-todos-os-dias-217-pessoas-desaparecem-no-brasil/">Observatório do Terceiro Setor</a>, isto é um perigo ignorado, pois todos os dias, 217 pessoas desaparecem no Brasil. Dessa forma, faz-se necessário ficar atento as estatísticas relacionadas a este fato. Vejamos a quantidade de pessoas desaparecidas no Rio, por ano, desde a última década.</p>



<figure class="wp-block-image"><img decoding="async" src="https://miro.medium.com/max/700/1*YnrEsu_JFrkgUX03pvhs0A.png" alt=""/></figure>



<p>Será que este número aumentou ou diminuiu durante esta década? É o que verificaremos em seguida: quantas pessoas desapareceram ao longo dos anos.</p>



<figure class="wp-block-image"><img decoding="async" src="https://miro.medium.com/max/389/1*DYbO__noR_3hPP9kldJ2hw.png" alt=""/></figure>



<p>Observa-se que o número de pessoas desaparecidas cresceu bastante do início da década até 2015, ano em que teve o maior número de casos. Felizmente, este número diminuiu drasticamente na segunda metade da década. Todavia, é necessário se atentar para este fato e elaborar políticas eficientes para que a curva seja achatada de uma vez por todas.</p>



<h2 class="wp-block-heading" id="ced4">Crimes mais Frequentes</h2>



<p>Por fim, verificaremos quais são os tipos de crimes por categoria mais frequentes no Rio de Janeiro dos anos 2000 até os dias de hoje. São eles: crimes contra a vida, tipos de roubo mais frequentes.</p>



<p>Primeiramente, observemos os tipos de crimes contra a vida mais frequentes no Rio.</p>



<figure class="wp-block-image"><img decoding="async" src="https://miro.medium.com/max/697/1*i975eR0kX9VpsNE6Z9fGxg.png" alt=""/></figure>



<p>Lesão corporal dolosa e culposa são os tipos de crimes que mais contribuem para o aumento da criminalidade contra a vida na cidade do Rio de Janeiro, totalizando mais de 1 milhão do tipo doloso e aproximadamente 800 mil do tipo culposo. É necessário pensar urgentemente em soluções para este fato.</p>



<p>Por fim, vamos analisar os tipos de roubos e furtos mais frequentes na cidade do Rio de Janeiro.</p>



<figure class="wp-block-image"><img decoding="async" src="https://miro.medium.com/max/696/1*1hun0YqE9PMY1Ct1iMwknA.png" alt=""/></figure>



<p>Roubo transeunte é o tipo de roubo mais frequente no Rio de Janeiro desde o ano 2000, totalidando mais de um milhão de roubos.</p>



<figure class="wp-block-image"><img decoding="async" src="https://miro.medium.com/max/617/1*QaguT02OXoLBSC70NWPDZg.png" alt=""/></figure>



<p>Furto transeunte e furto de celulares são os tipos de furtos mais frequentes na cidade maravilhosa de 2000 pra cá. Os furtos transeuntes chegam a quase meio milhão, ao passo que os furtos de celulares chegam a aproximadamente 290 mil.</p>



<p>Dessa forma, vale reforçar que é necessário que as autoridades se atentem a este fato e trabalhem em políticas que reforcem a segurança dos indivíduos enquanto transitam pela cidade maravilhosa.</p>



<h2 class="wp-block-heading" id="3bc6">Finalmentes</h2>



<p>Portanto, pode-se concluir que a análise de dados é importantíssima para um estudo mais assertivo, importante e de relevância pública, que é o caso da criminalidade no Rio de Janeiro. Por meio dela, é possível obter muitas informações valiosas dos dados e auxiliar no combate à violência e criminalidade, alertando para casos preocupantes e propondo possíveis caminhos que levem uma solução para as autoridades e que traga segurança para a população do Rio de Janeiro.</p>



<p>Você pode conferir este projeto com mais detalhes no meu <a href="https://github.com/andremarinho17/data_projects/blob/master/Analise_da_Viol%C3%AAncia_no_Rio_de_Janeiro.ipynb">github</a>. Conecte-se comigo também no <a href="https://www.linkedin.com/in/andremaarinho/">LinkedIn</a>.</p>



<p>Link do post original: <a href="https://andremaarinho.medium.com/an%C3%A1lise-da-viol%C3%AAncia-no-rio-de-janeiro-bdccde3338b7">https://andremaarinho.medium.com/an%C3%A1lise-da-viol%C3%AAncia-no-rio-de-janeiro-bdccde3338b7</a></p>



<p>LinkedIn do André: <a href="https://www.linkedin.com/in/andremaarinho/">https://www.linkedin.com/in/andremaarinho/</a></p>



<p>#analisededados #dadosdeviolencia #violenciariodejaneiro</p>
<p>O post <a href="http://estatidados.com.br/analise-da-violencia-no-rio-de-janeiro/">Análise da Violência no Rio de Janeiro</a> apareceu primeiro em <a href="http://estatidados.com.br">Estatidados</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>http://estatidados.com.br/analise-da-violencia-no-rio-de-janeiro/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
