;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL
Topo

Brasil tem pico de mortes e pior índice de isolamento social da pandemia

Movimentação na rua General Carneiro, em São Paulo, após reabertura do comércio - FERNANDA LUZ/ESTADÃO CONTEÚDO
Movimentação na rua General Carneiro, em São Paulo, após reabertura do comércio Imagem: FERNANDA LUZ/ESTADÃO CONTEÚDO

Carlos Madeiro

Colaboração para o UOL, em Maceió

26/02/2021 04h00

Justamente na fase com a maior média de mortes pela covid-19, os brasileiros resolveram ficar cada vez menos em casa. O índice de isolamento social, medido pela startup In Loco, aponta que os últimos dias úteis no país tiveram as menores marcas registradas desde a segunda semana de março, ou seja, antes de os estados publicarem decretos para fechamento ou redução de serviços não essenciais para conter o novo coronavírus.

Ontem, o país registrou o maior número de mortes em 24 horas: 1.582 óbitos. Foi o dia mais letal da pandemia.

Segundo os dados da startup —que usa a localização por GPS de 60 milhões de celulares—, na terça e quarta-feira desta semana, a média ficou em 32%, menor que qualquer índice medido em um mesmo dia desde o meio de março.

Na sexta-feira ada, esse índice chegou a 31,8%, o mais baixo desde o dia 13 de março de 2020, quando o percentual ficou em 30,1%. Àquela altura, o país ainda não tinha registrado nenhuma morte pela covid-19 (a primeira foi no dia 16 de março).

Até aqui, o maior índice de isolamento registrado ocorreu no primeiro fim de semana de medidas restritivas adotadas por estados: em 22 de março, um domingo, 62,2% dos brasileiros não saíram de casa. Em regra, os sábados e domingos têm taxas de isolamento bem maiores do que os dias da semana.

Os estados com melhores índices de isolamento social são os do Norte e Nordeste, onde muitos governos tomaram medidas mais rígidas para conter a explosão de casos —a exemplo de Acre, Ceará, Bahia, Amazonas e Rondônia, que enfrentam redes de saúde lotadas.

O líder em isolamento ontem era o Acre, com 42,3% da população fazendo isolamento social. Amazonas, Ceará, Roraima e Rondônia vêm em seguida.

No lado oposto, o Tocantins teve o menor índice de isolamento do país (28,5%), seguido por Goiás, São Paulo, Rio Grande do Sul e Santa Catarina.

Aulas e fim de auxílio

As menores taxas desde o início da pandemia podem ser explicadas, em parte, por dois movimentos de massa: a volta às aulas presenciais em muitos estados e o fim do auxílio emergencial, o que fez com que muitas pessoas precisassem voltar ao trabalho nas ruas. Além disso, há poucas cidades em fechamento total, o chamado lockdown.

"É baixíssimo esse índice. Mostra que 70% das pessoas estão se locomovendo de alguma forma —o que amplia a quantidade do que chamamos de população exposta. Esse isolamento, para ter algum efeito, teria de ser de 60% no mínimo", explica José Dias do Nascimento Júnior, professor do Departamento de Física da UFRN (Universidade Federal do Rio Grande do Norte) e que trabalha com projeções e análise de dados da covid-19.

Ele afirma que, para barrar a alta transmissibilidade do coronavírus e suas novas variantes, essa taxa precisa cair de forma significativa imediatamente —mesmo nos estados onde ela tem os maiores índices.

Na nossa situação atual era para termos um isolamento de pelo menos 70%. Claro, são números difíceis de alcançar, mas é urgente para estancar esse crescimento. Infelizmente esse padrão de comportamento só conseguimos no início da pandemia, e nunca mais.
José Dias do Nascimento Júnior, professor do Departamento de Física da UFRN

Segundo Dias, são justamente em momentos seguidos a grandes aglomerações e saída de pessoas de casa que os dados de hospitalizações crescem. "Um tipo de liberação ou movimentos bruscos de circulação, como abertura de setores do comércio, início das campanhas políticas ou Réveillon ampliam sempre esses números", diz.

Entenda os dados

Os dados da In Loco usam uma tecnologia que puxa, de forma automatizada, dados públicos gerados pelos celulares.

Essas informações são usadas para direcionar publicidade: é o chamado Advertising ID, um número único que constantemente identifica os interesses dos usuários que navegam pelos serviços de plataformas como Google e Facebook. Ele serve para mostrar anúncios segmentados ou personalizados (os "anúncios com base em interesses"), que geram receita para os apps.

Segundo a startup, esse identificador também serve para detectar se um celular fica por períodos prolongados em determinado local.

Ele envia para os servidores da empresa o endereço e o identificador de publicidade do smartphone, com isso dá para estabelecer a razão entre quem está "estacionado" e quem se desloca. Por isso, a empresa conseguiu montar um sistema de monitoramento diário, com o ao identificador de 60 milhões de celulares brasileiros.

Todos os dados do estudo são agregados, o que quer dizer que não se coletam informações de identificação, como nome, email ou número do telefone.