• (31) 99973-2709
  • hugomoraismendes@gmail.com

Arquivos por mês 26/08/2020

Simian Army (Exército Símio)

Simian Army (Exército Símio) é um conjunto de ferramentas e técnicas criadas pela Netflix analisar/testar a disponibilidade de um serviço/ferramenta mesmo em situações caóticas assim descobrindo se o sistema tem tolerância a falhas. Uma vez que nenhum componente pode garantir 100% de tempo de atividade. Logo a netflix projetou uma arquitetura em nuvem onde componentes individuais podem falhar sem afetar a disponibilidade de todo o sistema.

O nome dado a essa técnica é bem interessante, imagine um macaco selvagem com uma arma solto em um datacenter. Pense no potencial destrutivo.

Veja abaixo os integrantes do Simian Army:

Chaos Monkey, uma ferramenta que desativa aleatoriamente as instâncias de produção para garantir que o serviço continue a funcionar sem qualquer impacto no cliente.

Latency Monkey, propositalmente aumenta a latência em respostas dos serviços REST possibilitando testar a recuperação à indisponibilidade dos serviços, assim acaba simulando a degradação dos serviços e mede se os serviços upstream respondem adequadamente.

Conformity Monkey, encontra instâncias que não seguem as práticas recomendadas e as desliga. Por exemplo, se encontrar instâncias que não pertencem a um grupo de escalonamento automático, é um problema esperando para acontecer, logo essa máquina é desligada para ser feito a correção.

Doctor Monkey, utiliza verificações de integridade que são executadas em cada instância, bem como monitora outros sinais externos de integridade (carga de memoria, CPU) para detectar instâncias não íntegras. Depois que as instâncias não íntegras são detectadas, elas são removidas do serviço para serem adequadas.

Janitor Monkey, garante que nosso ambiente de nuvem esteja funcionando sem bagunça e desperdício. Ele procura recursos não utilizados e os desliga.

Security Monkey, é uma extensão do Conformity Monkey. Ele encontra falhas de segurança ou vulnerabilidades, como grupos de segurança configurados incorretamente e encerra as instâncias. Ele também garante que todos os nossos certificados SSL e DRM estejam válidos e não estejam próximos do vencimento.

10–18 Monkey, detecta problemas de configuração e tempo de execução em instâncias atendendo clientes em várias regiões geográficas, usando diferentes idiomas e conjuntos de caracteres.

Chaos Gorilla, é uma evolução do Chaos Monkey que, pois dentro de uma região, desabilita zonas para verificar se o sistema continua funcionando sem impacto para o usuário.

Chaos Gorilla, é semelhante ao Chaos Monkey, mas simula uma interrupção região inteira da AWS. Para verificar se os serviços se reequilibram automaticamente para as zonas de disponibilidade funcionais, sem impacto visível ao usuário ou intervenção manual.

Retrospectiva Ágil

A reunião de retrospectiva tem como forma inspecionar e adaptar, seja realizada em projetos ágeis ou cascata, sendo o seu principal objetivo levantar o que funcionou e o que deu erro durante a etapa de entrega, assim juntos estudando uma melhor forma de melhorar a execução na próxima entrega.

A reunião de retrospectiva deve ser realizada sempre que houver necessidade, é interessante que ocorra também a cada entrega que pode ser semanal, quinzenal ou mensal. Levante todos os fatos que aconteceram e tirem ações de melhoria para o próximo ciclo. Com o passar dos meses, os integrantes do time vão se conhecendo e trabalhando de forma mais integrada e menos reativa

As reuniões de retrospectivas podem ser conduzidas de uma forma simples, seguindo a perguntas da imagem abaixo, podendo utilizar post its, quadros, flips charts, canetas. A reunião deve ser realizada em locais que as pessoas se sentem a vontade para debater.

Fonte: https://annelisegripp.com.br/retrospectivas-ageis/

Abaixo segue algumas dicas de técnicas que podem ser utilizadas.

Técnica do M&M

Cada pessoa pega um confeite do pacote. Cada cor de um confete deve ser relacionado a uma parte processo de trabalho, como: sprint (amarelo), daily (vermelho), review (marrom), etc… A cor que a pessoa sortear vai ser o assunto que ela vai falar, o que foi legal e o que precisa melhorar.

TÉCNICA PDCA

  • O que precisamos começar?
  • O que podemos continuar?
  • O que precisamos melhorar?
  • O que temos que parar?

TÉCNICA STARFISH

  • O que precisamos manter (keep doing)?
  • O que precisamos parar de fazer (stop doing)?
  • O que precisamos começar a fazer (start doing)?

TÉCNICA LEARNNING MATRIX

  • O que foi bom?
  • O que devemos parar de fazer?
  • Novas ideias, formas de trabalhar
  • Boas ações durante o ciclo

TÉCNICA HOT AIR BALLON

Olhando para trás – o fogo e o ar quente: O que nos ajuda a ir mais alto – Quais são as coisas que nos empurram para a frente?

Olhando para trás – forças puxando para baixo: Quais são as forças que nos puxam para baixo?

Olhando para o futuro – tempestade: Qual é a tempestade pela frente? O que terá o nosso turbulenta viagem?

Olhando para o futuro – sol: O que poderíamos fazer para evitar a tempestade e virar-se para dias de sol? O que vamos fazer para superar os possíveis desafios à nossa frente?

TÉCNICA DO PAPEL PICADO

Pegue uma folha em branco e escreva as palavras, dando espaço entre elas para depois cortar a folha, que falam sobre o processo. Tipo: PLANNING, REVIEW, RETROSPECTIVA, DAILY, GROOMING, USER STORY, SCRUM MASTER, PRODUCT OWNER, ENTREGA, QUALIDADE DE CÓDIGO… entre outros que você achar importante. Corte cada palavra dessa, dobre e embaralhe. Cada membro do time vai sortear um papel, vai ler e falar um ponto positivo e um ponto a melhorar daquela palavra. Depois se tiver mais alguém que queira complementar, pode abrir para discussão. Isso vai sendo feito até o último papel para sorteio.

TÉCNICA “VAMOS TRANSFORMAR”

Essa técnica utilizamos para refletir sobre como podemos melhorar a nossa atuação dentro da empresa com intuito de transformar o ambiente que trabalhamos. As perguntas são simples, mas muito importantes para sabermos onde e quando agir. Basta fazer as perguntas e pra cada pergunta, pedir o pessoal para colocar respostas nos post its e debatermos sobre as soluções propostas. Seguem as perguntas : “O que está fora do nosso alcance?”, ou seja, não vale focar nesse momento, pois não teremos força e nem braço para agir. “O que podemos fazer para influenciar?”, ações que podem ser feitas para influenciar pessoas, ambientes, cenários. “O que depende de nós?”, é nossa área, nos dividimos para agir, podemos e devemos fazer para promover mudanças.

JQuery e selectors

Com o JQuery é possível criar referencias de elemento e assim atribuir valores ou aplicar ações a eles. O mais interessante é que usamos as mesmas chamadas que usamos para referenciar elementos quando trabalhamos com CSS. Veja o modelo abaixo:

$('p') // Chama todos os paragrafos 
$('.menu') // Chama os elementos que contenham a classe menu 
$('#caixas .chamada') // Chama os elementos .chamada que estão dentro de #caixas 
$('.menu, .box') // Chama a classe menu e a classe box 
$('#lista *') // Chama todos os elementos que estão dentro de #lista 
A jQuery ainda implementa algumas chamadas especiais, baseadas no CSS3.
$('#menu > li') // chama os li's filhos direto de #menu, exclui #menu li li
$('label + input') // chama apenas os inputs que tiveram um label antes 
$('.galeria ~ .fotos') // chama todas as .fotos que estão no mesmo nivel e após .galeria
$('#menu li:fist') // Chama apenas o primeiro li dentro de #menu
$('table tr:even') // Chama apenas os tr's impares
$('tr[colspan=2]') // Chama os tr's que contenham o atributo colspan definido como 2
$('form :text')  // Chama os inputs com type definido como text, caixas de texto

A lista completa pode ser encontrada no site oficial da jQuery bem documentada e com exemplos para cada caso. Com a seleção na cabeça, podemos aplicar efeitos (hide, show, fadeIn, fadeOut, slideUp, slideDown por exemplo) nos elementos que selecionarmos, colocar atributos para estes elementos como css ou mesmo colocar eventos neles, ou seja, funções que rodam quando você faz alguma coisa com eles, como por exemplo clicar, passar o mouse em cima, dar dois cliques, colocar o cursor na caixa de texto e assim por diante.

Em um exemplo prático, vamos fazer um menu com submenus onde não precisamos nos preocupar em adicionar classes e tudo mais. Primeiro vamos implantar o HTML, assim podemos fazer um belo menu semântico. Se quiser, aplique também um belo CSS, mas não se esqueça: não suma com os submenus neste momento, afinal, se o browser do usuário não possuir javascript ele não poderá mostrá-los. Então deixe os submenus à mostra porque depois vamos escondê-los via javascript.


Note que não há qualquer referência a quem é pai ou filho de sebmenu. Vamos usar as chamadas da própria jQuery para encontrar quem tiver submenu.

Agora, vamos desaparecer com os submenus de forma dinâmica. Lembre-se que não podemos aplicar a jQuery em qualquer lugar, afinal o html pode ainda não ter sido gerado quando o script rodar, então colocamos o “desaparecimento” dentro da função de carregamento da própria jQuery. Isto fará com que nosso script só seja executado quando todo o HTML for carregado.

Com uma simples linha, sumimos com os submenus com a função hide(), note que usamos os próprios atributos para os quais chamamos esses submenus com CSS.

Agora, a dinâmica! Vamos usar a chamada aos submenus usando como referencia os links que tenham como href o valor de # (tralha, sustenido ou jogo-da-velha,). Fica assim:

$('#menu a[href=#]')

Assim, filtramos todos os nossos links pegando somente os links dentro de #menu que tenham o href como #.

Neles vamos implantar os comandos de click para mostrar o menu e o submenu, mas primeiro precisamos navegar entre os elementos. Para isso, usamos next ou prev, funções próprias da jQuery que navega entre o elemento que estiver após ou antes (respectivamente) do elemento em questão. Levando em conta que as funções de ação da jQuery (click/hover/toogle/etc) recebem como parâmetro this o elemento que recebeu a ação temos:

$('a[href=#]').click(function(){
this // é o elemento "a" (link) que foi clicado naquele momento
})

Então vamos navegar até o submenu, que é o elemento que está após o link:

$('a[href=#]').click(function(){
$(this).next() // Agora sim, com base no link (dinamicamente) temos o submenu
}

Perceba que apesar de recebermos em this o elemento, precisamos usar mais uma vez a jQuery pois se trata do elemento em si e não uma chamada à ele via jQuery.

Agora sim, podemos sumir ou aparecer com os submenus, usando o slideToggle da jQuery vemos como isso é implantado de forma simples e prática. Precisamos aplicar também um return false para cancelar a navegação do link, afinal ele não deixou de ser um link.

$('a[href=#]').click(function(){
$(this).next().slideToggle() // Some, aparece, some, aparece, incrivelmente simples com a jQuery
return false
}

Com apenas seis linhas de código (real) concluímos um menu com submenu dinâmico, navegando entre os elementos com a jQuery. Ainda aplicamos uma animação para esse submenu.

MySQL – Apagando registro duplicados

Registro duplicados em base de dados é um problema que pode te dar uma dor de cabeça, abaixo segue uma proposta de solução para resolver esse problema.

Assumindo que você use o banco de dados MySql e tenha uma tabela chamada “nomes”, e que essa tabela tenha os campos id e nome. Essa sintaxe pode ser usada em outros bancos, utilizaremos o seguinte comando:

DELETE a FROM nomes AS a, nomes AS b WHERE a.nome=b.nome AND a.id < b.id

Perceba que no comando SQL após o FROM eu chamo duas vezes a tabela “nomes”, mas as diferencio pelas letras a e b. Você poderia dar o nome que quisesse. Note também que depois do WHERE eu faço a comparação entre as colunas, verificando a duplicidade e depois digo que o id de “a” deve ser menor que o de “b”. Dessa forma o MySql vai comparar todos os registros com o mesmo nome e apagar aqueles que contenham o menor id.

nomes: É a tabela com os registros duplicados.

nome: É o campo para comparação dos registros.

id: É a chave primária da tabela.

Veja na prática como acontece:

Tabelas com os registros duplicados

Aplicando o script descrito acima:

Caso queira apagar todos os registros duplicados, deixando apenas os registros únicos é só trocar o “<” por “!=” veja um exemplo:

Quando usar o TypeScript

Com TypeScript você pode criar funções tipadas e bem modeladas. Exemplo:

// Passa dois parâmetros (a e b) como números, e retorna um número
function soma(a: number, b: number): number { 
	return a + b;
}

Agora vamos errar propositalmente. Caso você tente fazer algo do tipo:

// ERRADO: Passa dois parâmetros (a e b) como números, e retorna uma string
function soma(a: number, b: number): string {
  return a + b;
}

Seu código não rodará porque você declarou o retorno da sua função como string, logo, nenhum outro tipo será aceito. Com isso, você garante a exatidão da tipagem nos dados que estão trafegando no seu software.

Desse modo, você deve ter percebido que para aplicações onde o erro NÃO PODE acontecer em hipótese alguma, o TypeScript é uma ótima opção. Isso é, aplicações grandes e complexas como: – sistema de saúde – sistema bancário – sistema de pagamento – entre outros

Por padrão, o Angular (framework web da Google para criação de SPAs) utiliza o TypeScript no desenvolvimento das aplicações, fazendo com que a comunidade impulsionasse mais ainda a linguagem.

Quando NÃO usar TypeScript

Em alguns casos, é inevitável, não tem como aplicar determinada tecnologia. Se você, seu time ou sua empresa preza por alguns dos tópicos abaixo, não faz tanto sentido você desenvolver com TypeScript: – agilidade no desenvolvimento – documentação de frameworks e módulos do JavaScript para TypeScript – dinamicidade

5 formas de aumentar o compartilhamento de conhecimento

O compartilhamento de conhecimento aumenta a interação social no local de trabalho, leva a um aumento na resolução criativa de problemas, preserva o conhecimento pré-existente para que não se perca à medida que os funcionários se aposentam ou seguem em frente, e permite que todos os departamentos acessem as informações de que precisam, quando precisam, acelerando, portanto, o tempo de resposta.

1. Desenhe o espaço do seu escritório para ser propício à conversa.

Isso não é algo que muitos consideram ao fazer esforços para aumentar o compartilhamento de conhecimento dentro de uma organização, mas o impacto do espaço físico não deve ser negligenciado.

Pense em restaurantes de fast food; eles pretendem mover os clientes através de seu estabelecimento o mais rápido possível (daí o nome fast food). Restaurantes de fast food criam intencionalmente um ambiente destinado a desencorajar a discussão. Coisas como assentos intimamente lotados, desconfortáveis e divisórias altas entre os espaços devem funcionar como um modelo do que NÃO fazer no seu escritório.

Construir um espaço que incentive a colaboração não precisa ser uma reforma completa. Aqui estão alguns exemplos de correções fáceis para tornar o seu espaço de escritório socialmente:

  • Estações de caféConfigure várias estações de café em todo o escritório, e não apenas nas cozinhas. Nada tem o poder de reunir as pessoas como o café faz, e ter várias estações de café em todo o escritório incentivará as pessoas a falar com colegas de trabalho com quem eles geralmente não interagem enquanto esperam por sua plantação para se preparar em um ritmo glacial.
  • Salas de conferência: Quem diz que as salas de conferência têm que consistir em uma grande mesa que exige que todos se sentem em um retângulo agradável, limpo? Claro, essa configuração às vezes é necessária, mas se você tem várias salas de conferência, tente definir uma ou duas de forma menos formal. Tenha várias mesas menores com grupos de cadeiras ao redor, e talvez alguns sofás. Nem toda conferência é uma discussão abafada, de mesa redonda, então forneça um espaço que permita algo menos formal.
  • Assentos casuais em espaços comuns: Quantas vezes você passou por um colega de trabalho no corredor sem dizer: “Como está indo?” Ao colocar mesas de café e assentos casuais em espaços comuns de alto tráfego, os colegas de trabalho terão mais chances de sentar e ter uma conversa rápida com colegas de trabalho de passagem.

2. Incentivar várias formas de compartilhamento de conhecimento.

Prepare-se, porque está prestes a dar as mãos na fogueira aqui. As pessoas têm dons diferentes. Nem todos são um palestrante público especialista ou um debatedor profissional de mesa redonda, e nem todos se sentem confiantes compartilhando seu trabalho escrito, documentos, gráficos, tutoriais, etc. com toda a empresa. Embora o objetivo final de sua iniciativa de compartilhamento de conhecimento seja que todos se sintam confortáveis em espalhar a riqueza de várias maneiras, permitam que as pessoas comecem onde estão confortáveis. Aqui estão algumas sugestões para garantir que a voz de todos seja ouvida:

  • Reserve tempo para colaboração presencialPara aqueles funcionários que florescem em situações presenciais, reserve um tempo de reunião para tirar ideias uns dos outros semanalmente ou bimestmente. Os membros da equipe que já se sentem confortáveis com isso terão a oportunidade de expressar suas ideias, e os membros da equipe que são um pouco mais tímidos terão uma ótima prática.
  • Reserve tempo para compartilhar e contribuir com conteúdoSe você reserva uma hora por semana para que todos se sentem e escrevam algo ou estabeleçam uma cota mensal de contribuição de conteúdo, essa estratégia garantirá que conhecimentos valiosos estejam sendo compartilhados e documentados, para que possam ser revisitados repetidamente.
  • Agende eventos e reuniões fora do localIsso pode ser qualquer coisa, desde um happy hour em toda a empresa até uma reunião de equipe no novo cat café. A questão é mudar a cena. Às vezes, basta um novo espaço refrescante para colocar a colaboração em movimento.

Enfatize que cada membro da equipe tem algo valioso para compartilhar, e que pode ser realizado de muitas maneiras diferentes.

3. Incentivar o compartilhamento de conhecimento.

Todo mundo adora ser recompensado, e não estamos acima de suborno. Existem muitas maneiras diferentes de recompensar os membros da equipe que incorporam o movimento de compartilhamento de conhecimento. Para começar, forneça um grito na forma de um e-mail, post ou anúncio quando você notar um membro da equipe contribuindo com algo valioso que beneficiará a empresa. Especifique exatamente qual era o conteúdo e algumas maneiras tangíveis de que todos se beneficiarão da contribuição. Dê pequenos prêmios como camisetas, garrafas de água e outros swag para os membros da equipe que estão demonstrando excelentes habilidades de colaboração. Considere dar um bônus ao funcionário que compartilha o conteúdo mais utilizado a cada trimestre, ou todos os anos.

Seja qual for a maneira que você decidir recompensar os funcionários pelo compartilhamento de conhecimento, ter um incentivo com certeza vai iniciar alguma colaboração de próximo nível e fazer os sucos criativos fluírem.

4. Renove seus métodos de treinamento e onboarding.

À primeira vista, o treinamento e o onboarding e o compartilhamento de conhecimento parecem não relacionados. No entanto, os novos contratados muitas vezes passam semanas, ou até meses, sentindo-se muito nervosos para contribuir com suas ideias em um ambiente de grupo. Como resultado, você perde o valioso conjunto de habilidades e conhecimentos para os seus contratados! Aqui estão algumas sugestões para que seus novos contratados contribuam e colaborem no primeiro dia:

  • Dê a cada novo contratado um mentorCultivar um relacionamento de sucesso entre mentor e mentee tem um grande impacto positivo em novas contratações. Saber que há alguém que eles podem ir com suas perguntas, livre de julgamento, é um grande reforço de confiança e capacita novos contratados a falar quando eles não estão seguindo.
  • Sombra de trabalho: Escolha outro membro da equipe (que não seja superior do novo contratado) que exemplifique o compartilhamento de conhecimento e a colaboração e permita que o novo contratado os espalhe por um ou dois dias enquanto trabalha. Observar um membro da equipe que não tem medo de expressar suas opiniões definirá o tom de um espaço de trabalho colaborativo que respeite a opinião de todos.
  • Peça a novas contratações para sua entrada: Uma ótima maneira de fazer uma pessoa sentir que sua entrada não é valorizada é nunca pedir por ela. Não assuma que eles não querem contribuir só porque são novos! Faça questão de buscar a opinião dos novos contratados e, como resultado, eles se sentirão mais confortáveis oferecendo suas opiniões livremente.

5. Encontre um software de compartilhamento de conhecimento que seja adequado para sua organização.

Por último, mas não menos importante, é selecionar uma plataforma de compartilhamento de conhecimento. Já se vê respondendo repetidamente a mesma pergunta? Você gasta uma quantidade excessiva de tempo pesquisando através do Dropbox ou uma bagunça do Google Docs por um pedaço de conteúdo?

O software certo de compartilhamento de conhecimento permitirá que você pesquise de forma fácil e rápida conteúdo, faça perguntas, localize especialistas, armazene documentos e vídeos, agilize seu processo de treinamento e onboarding e incentive todos, de estagiários a CEOs, a contribuir com ideias. Uma plataforma de compartilhamento de conhecimento baseada em nuvem também permite que os membros da equipe colaborem, compartilhem ideias e permaneçam alinhados em torno das mesmas informações, mesmo quando não estão trabalhando no mesmo escritório.

Regressão linear

Sobre regressão linear

A regressão linear é um método estatístico comum, que foi adotado no aprendizado de máquina e aprimorado com muitos novos métodos para ajustar a linha e medir o erro. No sentido mais básico, a regressão se refere à previsão de um alvo numérico. A regressão linear ainda é uma boa escolha quando você deseja um modelo muito simples para uma tarefa preditiva básica. A regressão linear também tende a funcionar bem em conjuntos de dados esparsos e de alta dimensão, sem complexidade.

A relação entre as alturas das crianças e de seus pais foi representada por um modelo matemático, que associa a variável dependente com a variável independente, conhecido como modelo de regressão linear simples.

Essa relação entre as variáveis pode ocorrer de duas maneiras:

  1. Utilizando a análise de regressão
  2. Calculando o coeficiente de correlação de Pearson

análise de regressão avalia a amplitude da variação em uma variável, decorrente da variação em outra variável. Confuso, né? Deixa-me dar alguns exemplos: a variação dos gastos familiares com alimentação em decorrência do quanto de renda a família ganha; a variação da concessão de limite no cartão de crédito em decorrência do salário; o crescimento na taxa de criminalidade, relacionado com o crescimento na taxa de desemprego.

Já o coeficiente de correlação de Pearson informa o quão fortemente duas variáveis estão relacionadas. Essa relação pode variar de -1 a 1 e quanto mais próximo dos extremos, mais forte é a correlação, podendo ser positiva ou negativa. Aquela variável que possui a maior correlação é ideal para usar no modelo.

Por que regressão simples?

Um modelo de regressão simples inclui somente duas variáveis: uma independente e uma dependente. A variável dependente é aquela que está sendo explicada, enquanto a variável independente é aquela que é utilizada para explicar a variação na variável dependente.

Chega mais e confere esses exemplos:

  • Nota de uma prova pode ser explicada pelo tempo de estudo do aluno.
  • Venda de bolos pode ser explicada pelo número de clientes.
  • Consumo de energia do ar-condicionado pela sensação térmica da cidade.
  • Quantidade de metrôs em relação ao número esperado de pessoas no carnaval do Rio de Janeiro.
  • Frequência de compras e-commerce pelo valor do frete cobrado.

Todos os exemplos citado envolvem apenas duas variáveis. Poderiam envolver mais variáveis que explicassem melhor o modelo de regressão simples? Poderia, mas aí não seria regressão simples e sim regressão múltipla.

Por que regressão linear?

Um modelo de regressão linear é uma equação matemática que fornece uma relação linear, ou seja, de linha reta entre duas variáveis, comumente chamada de y. Pelo menos foi assim que aprendemos no ensino médio:

regressão

No entanto, alguns livros ensinam dessa forma aqui:

regressão

Os estatísticos resolveram complicar mais um pouquinho e trocaram as letrinhas. Passaram a usar o alfabeto grego que eles tanto amam.

regressão

Cada um dos conjuntos de valores do estimador de beta zero e estimador de beta 1 fornece uma linha reta diferente. O intercepto é fornecido com base no termo constante na equação e corresponde ao valor do estimador de y quando é zero.

O coeficiente de ou inclinação da linha fornece a quantidade de variação em y estimado, que é decorrente da variação correspondente a uma unidade de x. Esse é o modelo de regressão linear simples.

O modelo de regressão linear simples pode ser determinístico ou probabilístico. Um modelo determinístico fornece uma relação exata entre y. Esse modelo afirma, simplesmente, que é determinado exatamente por x, e que para determinado valor de existe um, e exclusivamente um (único) valor para y.

O modelo pode ser representado por essa equação:

Os betas 0 e 1 são os parâmetros da população. Como os dados da população são difíceis de obter, trabalhamos com os valores estimados, que são calculados utilizando-se de dados gerados pela amostra. Os valores são estimados pela equação:

Entretanto, em muitos casos, a relação entre duas variáveis não é exata. Por causa disso, precisamos levar em consideração a ausência de outras variáveis no modelo e adicionamos o erro aleatório, representado pela letra épsilon. Mais uma letrinha grega para o seu mais novo dicionário.

Quando adicionamos o erro aleatório passamos a ter um modelo probabilístico ou de relação estatística, que representa dois fenômenos:

  1. Variáveis omitidas ou ausentes: o erro aleatório captura os efeitos decorrentes de todas as variáveis que possam não ter sido incluídas no modelo.
  2. Variação aleatória: basicamente causada pelo comportamento humano.

Considerando os dois fenômenos chegamos à uma representação de modelo mais realista.

regressão

O que é regressão linear simples?

Agora que você já sabe o que é regressão linear e regressão simples, juntamos os conceitos e chegamos a essa conclusão: o modelo de regressão linear simples é uma equação matemática que inclui somente duas variáveis e apresenta uma relação em linha reta entre elas. Sacou?

Para que serve?

modelo de regressão serve para prever comportamentos com base na associação entre duas variáveis que geralmente possuem uma boa correlação.

Se você quisesse apenas saber qual o grau de relação entre as variáveis, calcular o coeficiente de Pearson seria suficiente.

Como funciona?

Você precisa conhecer a essência do dado e quanto mais informação você tiver, maior será a sua capacidade de entender a variabilidade de y em função de x.

Com os dados em mãos, faça um gráfico de dispersão (scatter plot) para cada uma das variáveis independentes, calcule o coeficiente de Pearson para as variáveis disponíveis, selecione a mais importante e calcule o intercepto e a inclinação da reta da sua amostra.

Quando tiver feito essas etapas, seu modelo de regressão estará pronto.

No entanto é preciso validar esse modelo. Como você pode fazer isso? Realizando a análise de resíduos.

Eu não vou entrar nesse assunto agora porque o texto já está bem longo. Mas para testar os resíduos (erro aleatório), você precisa validar as premissas do modelo: o erro precisa ter média zero; ter uma distribuição normal; ser independente e ter variância constante. Ok?

Aplicações

As aplicações são infinitas. Eu já citei algumas no início do texto e você pode voltar lá, se quiser. Mas pense assim: tudo que você quiser prever como resultado e puder ser explicado ao máximo com apenas uma variável, poderá aplicar o modelo de regressão simples.

Então segue mais exemplos para reforçar o conhecimento:

  • Produtividade estimada de sacas de café e altitude de plantio (espera-se que quanto mais alto, maior será a produção de café)
  • Número de mortes por doenças isquêmicas do coração em pessoas acima de 60 anos e vacinas contra o vírus da gripe na mesma população (existe uma relação de que quanto maior o número de vacinas, menor o número de mortes)
  • Venda de pipoca e pessoas que vão ao cinema (quanto mais cinéfilos, mais pipoca).

Podemos ficar aqui pensando em várias aplicações e conseguir gerar muitos insights, mas esse não é o propósito do texto.

Agora que você já sabe um pouco mais sobre modelos de regressão linear simples, compartilha com a gente onde e como você aplicaria esta técnica.

E lembre-se, a estatística é a ciência que estuda a incerteza e os modelos sempre apresentarão erros associados. Isso acontece porque existe variabilidade.

No final das contas, a estatística não foi feita para você acertar; o papel dela é direcionar.

MySQL – Função GREATEST()

No MySQL tem a função GREATEST () que retorna o maior valor dos argumentos.

Sintaxe:

GREATEST(value1,value2,...)

Exemplo

Código:

SELECT GREATEST(15,10,25);

Resultado:

mysql> SELECT GREATEST(15,10,25);
+--------------------+
| GREATEST(15,10,25) |
+--------------------+
|                 25 | 
+--------------------+
1 row in set (0.01 sec)

FUNÇÃO GREATEST() com cláusula WHERE

A seguinte instrução MySQL buscará esses livros (juntamente com sua data de publicação e número de páginas) a partir de book_mast tabela que tem mais páginas do que o valor de retorno de GREATEST (200,300,395), ou seja o maior valor é 395, veja abaixo o código do exemplo.

Tabela de amostra: book_mast

Resultado:

mysql> SELECT book_name,dt_of_pub,no_page
    -> FROM book_mast
    -> WHERE no_page>GREATEST(200,300,395);
+--------------------------------+------------+---------+
| book_name                      | dt_of_pub  | no_page |
+--------------------------------+------------+---------+
| Guide to Networking            | 2002-09-10 |     510 | 
| Transfer  of Heat and Mass     | 2004-02-16 |     600 | 
| Fundamentals of Thermodynamics | 2002-10-14 |     400 | 
+--------------------------------+------------+---------+
3 rows in set (0.00 sec)

MySQL – Função SIGN()

No MySQL, a função SIGN() retorna o sinal de um número. Ou seja, indica se o valor é positivo, negativo ou zero.

Você fornece o valor como argumento ao chamar a função.

A função retorna o resultado a seguir, dependendo se o argumento é positivo, negativo ou zero.

  • 1 se o número for positivo
  • -1 se o número for negativo
  • 0 se o número é zero

Sintaxe

Esta sintaxe é assim:

SIGN(X)

O X é o valor que deseja saber o resultado

Exemplo 1 – Uso Básico

Aqui está uma demonstração de passar um valor positivo para esta função.

SELECT SIGN(5);

Resultado:

+---------+
| SIGN(5) |
+---------+
|       1 |
+---------+

Exemplo 2 – Todos os Sinais

Aqui está um exemplo usando três valores diferentes – um valor negativo, um valor positivo e zero.

SELECT 
  SIGN(-5),
  SIGN(5),
  SIGN(0);

Resultado:

+----------+---------+---------+
| SIGN(-5) | SIGN(5) | SIGN(0) |
+----------+---------+---------+
|       -1 |       1 |       0 |
+----------+---------+---------+

Exemplo 3 – Expressões

Você também pode usar expressões como esta.

SELECT SIGN(50 - 60);

Resultado:

+---------------+
| SIGN(50 - 60) |
+---------------+
|            -1 |
+---------------+

Exemplo 4 – Valores NULL

Para um valor NULL a função resultará NULL.

SELECT SIGN(NULL);

Resultado:

+------------+
| SIGN(NULL) |
+------------+
|       NULL |
+------------+

Redirecionamento de URLs no htaccess

Existem várias formas de fazer o redirecionamento de páginas Web. Através do arquivo htaccess é possível  aproveitar o bom ranqueamento das páginas no Google com SEO.

É bem simples fazer esse procedimento.

Primeiro abra o arquivo .htaccess no servidor do seu site.

Agora coloque o código abaixo no final do arquivo e altere o /pagina1 para a url que está no Google e o /pagina2 que é a nova url de página, como resultado, o redirecionamento ocorrerá automaticamente.

<IfModule mod_rewrite.c>
    redirect 301 /pagina1 /pagina2
</IfModule>

Você pode também fazer o redirecionamento de um domínio para outro:

RewriteEngine on
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-SSL} !on
RewriteCond %{HTTP_HOST} ^seudominio.com.br$ [OR]
RewriteCond %{HTTP_HOST} ^www.seudominio.com.br$
RewriteRule ^/?$ "https\:\/\/www.seudominio.com.br\/" [R=301,L]

Também pode-se fazer o redirecionamento coringa, onde se vai carregar todas as URL do site atual na nova URL.
Esse redirecionamento é usado para se aproveitar a indexação das URLs atuais:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^seudominio.com.br.br$ [OR]
RewriteCond %{HTTP_HOST} ^seudominio.com.br$
RewriteRule ^(.*)$ "https\:\/\/www.seudominio.com.br\/$1" [R=301,L]