Uma aplicação interativa em Shiny, R e Radarchart para visualização de Diagramas Kiviat

March 28, 2017 no comments Posted in Análise de Dados, R, RStudio, Shiny

Na publicação anterior (Diagramas Kiviat (Spider Charts) em R!)  vimos como é simples produzir  um diagrama de Kiviat ou Radar Chart no R com o pacote radarchart.

Aqui a versão do exemplo para o Shiny.

O visitante tem apenas a opção de escolher o nome de uma ou mais pessoas o grafico se atualiza automaticamente.

Uma aplicação Shiny é composta por 2 seções, a interface e o servidor, que podem ser definidos em um mesmo arquivo ou em dois (ui.R, server.R). O RStudio oferece facilidades para o desenviolvimento de aplicações Shiny. Saiba mais em “Aplicações “Shiny”, um primeiro contato usando o RStudio.

O código a seguir é capaz de produzir a aplicação cuja interface podemos ver abaixo. O gráfico é redesenhado em função das seleções no checkbox e dados são exibidos sobre os pontos no gráfico.

 

A interface:

 

 

 

O Servidor:

Diagramas Kiviat (Spider Charts) em R!

March 28, 2017 no comments Posted in Análise de Dados

Aqui um exemplo rápido de uma opção interessante para a representação e comparação de entidades descritas por múltiplos atributos, os diagramas de Kiviat fazem menção ao seu criador  na década de 70, Phil Kiviat, também conhecidos como ‘Radar Charts’ ou ‘Spider Charts’.

A blibiografia sobre seus usos, prós e contras está ao final.

Um Diagrama de Kiviat representa em 3 ou mais fatores em um gráfico plano onde podem estar sobrepostos 1 ou mais objetos/entidades que foram mensurados em alguma escala de valores para cada fator.  No exemplo abaixo, 3 entidades (1, 2, e  3) foram avaliadas em segundo 3 fatores.

Do ponto de vista de interessados em R a boa notícia é a existência de um pacote de uso extremamente conciso e direto. O ‘Radarchart’ cria diagramas de Kiviat interativos usando a biblioteca JavaScript ‘Chart.js’ e o pacote ‘htmlwidgets’ e pode ser usado em conjunção do ‘Shiny’.

O exemplo contido no manual do pacote é auto-explicativo, dispensa maiores comentários. Três pessoas, “Rich”, “Andy” e “Aimee”receberam notas segundo as suas habilidades como “Communicator”, “Data Wangler”, “Programmer”, “Technologist”, “Modeller”, “Visualizer”. O diagrama procura oferecer uma comparação dessas habilidades.

O resultado aqui.

 

Na próxima pubicação um exemplo com o Shiny.

[1] J. M. Calcagni, “Shape in Ranking Kiviat Graphs,” SIGMETRICS Perform. Eval. Rev., vol. 5, no. 1, pp. 35–37, Jan. 1976.
[2] K. W. Kolence and P. J. Kiviat, “Software Unit Profiles & Kiviat Figures,” SIGMETRICS Perform. Eval. Rev., vol. 2, no. 3, pp. 2–12, Sep. 1973.
[3] M. F. Morris, “Kiviat Graphs: Conventions and ‘Figures of Merit,’” SIGMETRICS Perform. Eval. Rev., vol. 3, no. 3, pp. 2–8, Oct. 1974.
[4] B. A. Stevens, “A Note on Figure of Merit,” SIGMETRICS Perform. Eval. Rev., vol. 4, no. 1, pp. 11–19, Jan. 1975.
[5]  D. Ashton et all., “Radar Chart from ‘Chart.js’ [R package radarchart version 0.3.1].” [Online]. Available: https://CRAN.R-project.org/package=radarchart. [Accessed: 28-Mar-2017].

Vigilância Solidária – Um primeiro contato para Leigos como Eu

March 18, 2017 no comments Posted in Análise de Dados

Sempre tive interesse sobre questões de monitoramento, talvez eu seja um “control freak” mas prefiro pensar que sou “measurement freak”, ou seja quero saber o estado das coisas para então poder falar sobre com mais propriedade.

Com o aumento da violência em várias cidades do país aumenta a procura por sistemas de vigilância. Em geral se busca monitorar o que se passa procurando tornar os locais menos atraentes para os eventos ou para identificar culpados em caso de eventos terem acontecido. Um processo custoso e sobre o qual temos limitado alcance, em geral apenas a nossa propriedade ou arredores próximos.

Uma solução interessante no campo da vigilância por câmeras seria compartilhar com os vizinhos um sistema que atendesse a todos.

Assunto complicado no Brasil, dada a nossa aversão a ações comunitários.

A Adriana Calcanhoto disse uma vez que cariocas detestam sinais vermelhos, eu adicionaria que brasileiros detestam atuar de forma solidária e coordenada. Há sempre uma esperança que o Tio Estado vá resolver tudo.

Uma pena, mas vamos supor que você tem um grupo de vizinhos, moram relativamente perto e querem ter um sistema comum, quais são as suas opções?

Ai começa o problema.  Temos opções demais.

Aqui no meu bairro surgiu essa discussão e a primeira solução apresentada foi instalar um sistema de câmeras analógicas ligadas a um DVR que ficaria na casa de alguém, um ou mais monitores de tv e até um no-break em caso de falta de energia.

Epa, epa epa ..  Muitos termos novos para mim.

Antes de navegar por opções é bom frisar que esse problema tem várias facetas:

1) seleção, aquisição e instalação das câmeras,
2) acesso as imagens,
3) a vigilância em si e
4) medidas defensivas ou de retaliação.

Veja que se você pensar em pelo menos 3 opções para cada item estaremos falando de 3 x 3 x 3 x 3 = 81 alternativas para comparar, logo vamos devagar com andor e tentar simplificar as coisas.

Câmera Analógica versus Câmeras IPs.   DVRs, monitores e no-break.  Bem, no-break é fácil, monitor é uma TV, sem problema, tipos de câmeras analógicas e DVRs?

Veja eu não quero saber como instalar (necessáriamente) quero informações enquanto cliente que sejam suficientes claras para que eu possa tomar a melhor decisão possível quanto as opções apresentadas, entre os critérios vai estar o custo da solução.

O que fiz então, sai pesquisando via Google o que tinha por aí.  Não sou um especialista, aviso novamente, apenas um cliente em potencial.

Vamos lá.

O que é um sistema câmeras + dvr?

  • É um conjunto de câmeras conectados por cabos ou não que se ligam a um aparelho central o DVR que armazena as imagens e que eventualmente pode estar conectado a uma rede privada ou a internet.
  • As câmeras podem ser analógicas, digitais ou híbridas e são os sistemas mais comumente usadas em condomínios, edifícios ou estabelecimentos comerciais, em parte por que custam cada vez menos. Já podemos encontram kits de 4 câmaras + DVR por algo em torno de R$ 500,00. Está tão comum que já podemos encontrar até em redes de supermercados.

Se você está um condomínio, tem um porteiro ou vigilante, ou sistema de vigilância a distância esse sistema é o mais indicado, pois existem pessoas em um ponto central a olhar todas as câmeras. Entretanto eu questiono a capacidade de uma pessoa perceber o que está acontecendo se o número de câmeras aumentar acima de um certo número. Talvez o limite humano deva ser 4, 8 câmeras, sem contar o cansaço, a rotina, as distrações.

Mas e se você não é condomínio?  Não é uma associação, nem pretende formar uma com CNPJ?  Como conciliar interesses de pessoas tão diferentes?  Na casa de quem vai ficar a central?  Quem vai olhar as câmeras (acesso e vigilância)? Como fica a questão da partilha das coisas em desfazimento da consórcio de vizinhos?

Ok, uma pausa, sim, podemos compartilhar as imagens capturadas pelo DVR via internet e vigilância passa a ser coletiva. Moradores olhando peridicamente para as câmeras podem de forma aleatória serem mais atentos a situações anormais de que apenas um vigilante.

Aqui temos a opção baseada em DVR melhorada.

 

Melhorou bastante. Existem variantes, no lugar da internet podemos ter um rede privada, ou rede privada sob internet (vpn), onde apenas as casas conectadas por cabos diretamente recebem as imagens. Outra possibilidade são as areas disponibilizadas pelos fabricantes dos equipamentos para visualização via internet, a Foscam, Intelbrás e a DLINK são exemplos de empresas que oferecem esses serviços.

O problema desssa solução para moradores de várias ruas distantes entre si ainda continua o mesmo, o local central onde o DVR deve ficar e toda a complexidade de puxar cabos até as câmeras, alimentar a energia do sistema, no-break etc e tal.

Câmeras Individuais + Armazenamento na Nuvem e Compartilhamento

 

Essa solução é o que chamo de Uber ou Airbnb da vigilância, distribuída e compartilhada. 🙂

  • Cada casa tem pelo menos 1 câmera conectada a internet e a um serviço de armazenamento de imagens. Existem soluções grátis para pequenos volumes e a partir de R$ 9,90/mês para armazenar por 3 dias.
  • Cabos de energia e internet apenas dentro dos limites de cada residência
  • Não existe o problema de propriedade comum sem a existência de uma associação e cnpj
  • Não existe central e o problema de quem vai gerenciar a central
  • Todos tem acesso as imagens assim como a opção DVR Melhorada
  • As câmeras podem ser Analógicas ou IP.
  • Câmeras IP podem ser programadas para detectar movimentos e tem imagens melhores.

Porque as câmeras IP são melhores? http://www.mknod.com.br/?q=ipcam-dezrazoes

Materia Olhar Digital sobre as vantagens das câmeras IP.

Câmeras POE?  Power Over Ethernet.   Outro detalhe a levar em consideração. Câmeras POE dispensam a necessidade de alimentação de energia independente. A alimentação é feita pelo próprio cabo de rede. Exige adaptadores, mas torna todo o processo menos custoso e trabalhoso. 

Ok, você aceitou a minha sugestão. Convenceu os vizinhos, contratram a instalação das câmeras e cada um tem a sua câmera ligada a internet apontada para vários pontos da rua, mas como fazer para que todos vejam as imagens?

Aí um ponto fraco que ainda estou trabalhando. Até o momento soluções como B-CAM, MONUV ou MAGNOCAM  vão exigir que um usuário seja o dono da conta geral, faça ele o cadastro das câmeras nos sistemas como se fossem dele e tenha o trabalho de coletar os pagamentos. O que é realmente chato, mas MUITO menos chato de que passar por todo esse processo de compra coletiva, cabos pelas ruas, achar uma central, manutenção etc.

Aqui um exemplo de um sistema de vigilância solidária. http://cameras.conseg.org.br/

 

A parte mais que afasta as pessoas de soluções desse tipo é o desconhecimento. O sistemas melhoraram muito em facilidade de instalação, principalmente nos grandes fabricantes das câmeras mais modernas, mas se você não é um aficionado de tecnologia e computadores vai ter dificuldades com certeza e terá que depender ou de um colega mais safo, ou mais apropriado para casos coletivos que é chamar profissionais cadastrados pelos fabricantes e solicitar avaliações e cotações das soluções propostas.

Outro trabalho coletivo a ser feito em conjunto com os instaladores é a seleção dos pontos, alcance visual, tipos de câmeras que dão melhor visão noturna. O grupo pode compartilhar informações via Whatsapp entre outros.

Quanto a vigilantes locais esses podem ficar com um tablet e ter acesso as câmeras também.

Quanto a Sistemas de Vigilância que disparam alarmes e chamam a Polícia o grupo de moradores pode ganhar força em conseguir melhores condições de preços a negociar um plano que abranja todo o conjunto de câmeras.

É isso. Espero ter ajudado a melhorar o nível de informação sobre o tema e motivado ao surgimento de vários de vigilância solidária.

Se tiverem novidades que melhorem as informações aqui colocadas por um “Leigo” não se acanhem.

A partir daqui o texto vai perder um pouco de coerência e consistência, pois é coleção de anotações ( enquanto leigo ) que fui fazendo ao longo do processo, foi interativo, ao final ja sabia de várias novidades, mas é didático anyway.

Anexos – Notas (algumas vezes erráticas :)) sobre o processo de vigilância solidária.

O nosso problema pode ser estudado/atacado em 3 dimensões:

1) seleção, aquisição e instalação das câmeras,
2) conexão a internet e acesso as imagens e
3) a vigilância em si.

Quanto as câmeras

  • Encontrei 3 tipos de sistemas de monitoramento: Câmeras Analógicas conectadas a DVR e Câmeras Digitais IP internet ou híbridos.
  • O mais comum são as Analógicas + DVR, são em geral + baratas, tem sistemas a partir de R$500,00 com 4 cameras.
  • Até o Extra vende (http://www.extra.com.br/construcao/SegurancaFerramentas/CamerasMonitores/KIT-CFTV-4-Cameras—DVR-4-Canais—4-Cabo-Coaxial-5189224.html)
    As câmeras usam um cabo específico e se conectam ao DVR. São mais limitadas e mais baratas. Em geral não gravam audio, e podem, exigem um HD extra para armazenar as imagens e
    dependendo do DVR serem conectados a internet. O que é um DVR ?
    (https://camerasviainternet.com.br/blog/o-que-e-dvr-ou-stand-alone-e-para-que-serve/).
  • As câmeras IP, são digitais, pode ser com ou sem fio (wireless) ou ambos, e dispensam a necessidade do DVR.
    Em geral se conectam a algum servidor na nuvem do fabricante da câmera e permitem acesso via computador ou do celular.
  • Podem ser ligadas por WIFI ou diretamente ao modem da NET (http://www.speedguide.net/routers/motorola-sbv5121-voip-cable-modem-349)
    ou roteador (http://produto.mercadolivre.com.br/MLB-805887415-roteador-d-link-dir-615-wireless-n-300mbps-_JM)
    ou hub (http://produto.mercadolivre.com.br/MLB-717028575-switch-hub-5-portas-10100mbps-rj45-rede-fast-ethernet-mymax-_JM).
  • WIFI simplifica tudo pois retira a necessidade do cabo de rede, mas perde em performance a medida que a câmera esta distante
    do roteador wifi. Entretanto é possível reforçar o sinal com repetidores.
    Se alguém quiser mesmo esticar cabos, os repetidores podem ser a melhor saída.
    (http://informatica.mercadolivre.com.br/redes-wireless-roteadores-access-points/repetidor-de-wifi)
  • Câmeras IP em sua grande maioria gravam audio, algumas tem até auto falante,
    podemos falar por meio delas para quem estiver perto da câmera. 🙂
  • Câmeras IP em geral oferecem recursos de detecção de movimento ou de ruídos.
    Desse modo os sistemas de captura só gravam imagens quando algo se move ou um ruído é escutado,
    economizando internet e espaço em disco na hora de armazenar o vídeo.
    Podemos inclusive determinar qual região da imagem deve ser detectado o movimento.
  • Nesse link aqui http://www.mknod.com.br/?q=ipcam-dezrazoes o autor lista 10 razões
    para se preferir as câmeras IP sobre as analógicas.
  • Quanto as câmeras IP, fiz uma pesquisa preliminar de alguns modelos para a hipótese de compra
    de câmeras fora do serviço de instalação e 2 me pareceram muito interessantes com reviews muito bons e exemplos de vídeos da qualidade da imagen no youtube. Esses reviews são feitos por especialistas ou curiosos que analisam produtos de n fabricantes, logo os testes me parecem confiáveis.
  • Uma é FOSCAM FI9900p com resolução de 1080, mais cara, em torno de R$ 1200 no Brasil http://www.buscape.com.br/camera-de-seguranca/fi-9900-p e a outra de 720p FI9803p http://www.buscape.com.br/camera-de-seguranca/fi-9803-p entre 680 a 800.
  • Alguns youtubers fizeram reviews e mostram a qualidade da imagem

  • Os videos estão em Ingles, mas é possivel ligar as legendas automaticas traduzidas.
  • De qualquer forma, caso o fornecedor tenha outras opções compatíveis devemos ficar abertos a sugestões. Não sou revendedor da FOSCAM :).
  • Aqui testes de outra câmera muito usada no Brasil a INTELBRAS.

  • O que é de matar é pensar no impacto dos impostos, a FI 9803p custa apenas $55 dólares na Amazon,
    https://www.amazon.com/FI9803P-Megapixel-1280x720p-Outdoor-Wireless/dp/B00M6TD4HO/ref=sr_1_1?ie=UTF8&qid=1489489430&sr=8-1&keywords=foscam+fi9803
    ou seja mesmo que peçamos via internet e a receita venha a cobrar todos impostos cabíveis, algo em torno de 100%
    considerando o custo do frete o custo seria de algo em torno de $110, bem menos que os 700,00.
  • É claro que comprando aqui, supostamente de empresas inidôneas teremos a questão da garantia etc. e tal o que não pode ser desprezado, ainda mais no Brasil.
  • Os links do buscapé indicam empresas de grande porte como ponto-frio, extra etc., mas ai deve ser difícil tirar partido de desconto de quantidades.

Claro que vão existir outros custos como postes de fixação, suportes, cabos de energia e internet eventuais domo para câmeras que ficariam ao tempo.

  • Tem sistemas que misturam câmeras fakes com reais para dar uma sensação maior de cobertura do que a real. Algumas tem até Leds e piscam para dar impressão de estarem ligadas (http://www.extra.com.br/construcao/SegurancaFerramentas/CamerasMonitores/Kit-5-Cameras-de-Seguranca-falsas-com-Led—CF5-6633589.html?utm_source=buscape&utm_medium=comparadorpreco&utm_content=6633589&cm_mmc=buscape_XML-_-MCNS-_-Comparador-_-6633589)

 

Quanto ao armazenamento e acesso as imagens

O Mangocam é uma solução australiana com boas referências e se diferencia da concorrência por ter detecção de movimento. Assim você grava aquilo que realmente interessa.

A lista de câmeras suportadas é enorme (https://www.mangocam.com/help/supported-cameras/)

Quanto a instalação e configuração das câmeras na internet

Aqui tem haver um consenso entre as opiniões dos técnicos que vão instalar os equipamentos e as dos moradores com sua experência podem sugerir os locais e visadas ideias para dar a melhor cobertura possível.

Intelbras e Foscam tem em seus sites a figura do parceiro cadastrado. Empresas e prestadores de serviço que conhecem bem os equipamentos de cada marca mais próximos dos moradores.

http://www.intelbras.com.br/onde-comprar

http://www.foscam.com.br/

 

 

O modelo de armazenamento na nuvem não descarta a contratação de empresa de vigilância que poderia ser feita de modo independente, pois bastaria fornecer a empresa o acesso as câmeras e estes por sua vez agiriam como vigilantes, dando alarmes, enviando carros ou chamando a policia.

Também não ficaria descartada a hipótese de que o posto de vigia da rua tenha acesso a internet e as câmeras via um tablet
barato que carregaria consigo. Serviria como “estação” de monitoramento móvel e contato entre o grupo de moradores. Assim ao caminhar pelas ruas ele pode ainda olhar as imagens de outras e consultar os moradores sobre situações duvidosas ou suspeitas via o Whatsapp.

Teríamos que ratear a conta de dados de um chip exclusivo de dados (algo em torno de 70/mes) e um tablet simples (ching ling)
e o vigia local.

 

 

 

Aplicações “Shiny”, um primeiro contato usando o RStudio

March 5, 2017 no comments Posted in Análise de Dados

Um tema que me empolga bastante e que venho falando há tempo com amigos é sobre o quão interessante é o pacote/framework Shiny para a publicação de aplicações interativas na web com código R.
 
O Shiny, desenvolvido pelo time do RStudio, traz um novo alcance para o compartilhamento de aplicações interativas em R para quem não necessariamente queira se envolver com a curva de aprendizado para dominar a publicação para a web. O custo obviamente não é zero, teremos que aprender a linguagem do Shiny, mas se você não tem pretensões de desenvolvedor web, ele é para você e para ‘mim’. 🙂

Após alguma prática com o Shiny você talvez conclua junto comigo que algumas das comparações com o Python nem sempre são muito objetivas, não por um viés proposital ou maldoso, mas por desconhecer o que pode ser produzido com R+RStudio+Shiny.

Desconsiderar o trio (R+RStudio+Shiny) como um todo faz a comparação ser bem enviesada contra o ‘R’, o que não implica que eu não entenda as vantagens e desvantagens das 2 abordagens dependendo da formação e interesse do usuário. Por sinal tambem sou usuário de Pyhton, mas me incomoda um pouco algumas comparações que vejo por ai.
 
A minha empolgação com ele é tal que tenho a ousadia de dividir mundo R em 2 grandes eras: antes e depois dos avanços introduzidos pelo RStudio.
 
Pretensões de grandeza à parte, vamos dar uma olhada no que podemos fazer com o Shiny?

 

Vamos começar?

Se você já tem a versão mais recente do RStudio, acima da 1.0, pode testar o que é uma aplicação Shiny de forma muito direta.  File > New File > Shiny Web App

 

Na próxima tela você deve selecionar o nome da aplicação, o tipo e o diretório. O tipo é se toda aplicação ficará definida em um único arquivo ou dois arquivos.

E aqui o conceito chave do Shiny, uma aplicação é composta por 2 componentes, a Interface que será definida no seção UI (User Interface) e o Server responsável pela lógica da aplicação.

No módulo UI teremos os controles entrada como botões, campos de entrada de texto, caixas de seleção

 

(figura extraída do tutorial de Shiny ‘Add control widgets‘)

 E controles de exibição, ou output como áreas para gráficos, tabelas ou textos.

Na aplicação padrão gerada pelo RStudio teremos uma aplicação semelhante a da figura abaixo que exibe um histograma com dados dos tempos de espera entre erupções de geiser ‘Old Faithfull’ do parque Yellowstone nos EUA.

Temos 3 controles, um para exibir o título do “painel”, ‘Old Faithful Geyser Data’, um controle deslizante onde o usuário pode selecionar a quantidade de classes que deseja particionar o histograma e uma área de exibição do histograma. Basta deslizar o controle e o histograma é refeito.

O código padrão gerado pelo Rstudio é o que vai a seguir.

A interface. ui.R

 

e aqui o lado servidor, server.R

Veja que se removermos os comentários o que sobra de linhas de código é realmente muito pouco para o resultado que obtemos.

Bem vamos executar o nosso app Shiny. Observe na aba de scripts do RStudio que quando estamos em um script Shiny ele se altera para Run App. Basta um clique e …

e o seu navegador padrão é chamado com um servidor shiny localhost executando em uma porta específica, aqui no meu 4493.

Experimente deslizar a barra em ‘Number of bins’.

Agora visualize o cenário:  você estar em um empresa/instituição onde cada máquina tenha um IP fixo ou nome e não haja firewalls bloqueando essa porta, você poderia nesse caso apenas passar o endereço para outros colegas do seu grupo de trabalho e compartilhar a sua aplicação na intranet. Em tempo a página é responsiva, ou seja se adapta a outos dispositivos como tablets e ‘espertofones’.

Outra curiosidade é o código que gerado pelo Shiny para que tivessemos uma página web?  Veja opção ‘código fonte’ do seu navegador. No meu Chrome basta clicar com o botão direito do mouse na página e selecionar a opção VIEW PAGE SOURCE.

e voi lá, a página web gerada automáticamente sem qualquer conhecimento prévio de HTML, CSS etc e tal.

 

Ok, mas como publicar na intranet/internet?

2 opções principais:  Usar a hospedagem gratuita/paga http://www.shinyapps.io/

Ou instalar em um servidor Linux hospedado e conectado a internet, o que vai exigir o suporte ou o conhecimento de Linux para que instalar e configurar o servidor Shiny, só disponível como executável para algums distribuições como o Ubuntu e o CentoOS, mas o sensacional é que é gratuito.

Entretanto para empresas é pago, mas existem descontos para pequena empresas e instituições de ensino e pesquisa.

Em um próximo post irei experimentar o SHINYAPPS.IO e relatar a experiência.

E para finalizar aqui uma versão levemente modificada da aplicação padrão shiny criada pelo RStudio com textos e alguns comentários em português.

Antes algumas explicações sobre os dados e a lógica do programinha.

Interface

A interface é definida no arquivo ui.R e aplicação deve ficar definida na função

A interface define uma página web e é composta a partir por ‘layouts’ pré-definidos. Um deles é FluidPage que irá criar um layout composto por linhas e colunas e o mais interessante, responsivo, ou seja se adapta ao dispositivo.

Você pode controlar a quantidade de linhas e colunas e os elementos que irão ser exibidos em cada célula, mas é muito mais fácil ao começar, usar um sub-layout já pronto, um deles é o sidebarLayout. Basicamente uma página com um menu do lado esquerdo e um painel principal do lado direito.

A seguir removi os controles e deixei apenas os componentes de layout para facilitar a visualização.

Apesar dos vários parentesis que as vezes são um problema, a estrutura da página que estamos construindo fica mais óbvia.

Nessa caso temos uma interface que adota o ‘fluidPage’ como estrutura básica, dentro dela uma painel para o Título da Página (titlePage). Depois um sublayout chamado sidebarLayout, ou seja um layout com uma barra lateral e um painel principal. Por fim, dentro dessa área, as áreas para os componentes que vão na barra lateral e no painel principal.

Na versão em português que vem completa ao final temos esse trecho de código onde especificamos o controle de barra deslizando ( sliderInput ). O sliderInput tem um ID ou nome e este é “intervalos”,  o parâmetro seguinte é o label ou texto que será exibido ao lado do controle (“Quantidade de Intervalos:”), a seguir o valor mínimo em min=1, o máximo em max=50 e o valor default ou padrão em value=30).

Já o painel principal é super simples. Apenas um componente do tipo ‘plotOutput’ cujo id ou nome é “distPlot”. Os nomes podem ser alterados a gosto pelo usuário, o tipo de componente são pois são os próprios controles, mas uma vez alterado o nome ou id de um componente você terá que alterar o código do seu server.R de modo correspondente.

Agora podemos nos voltar para a lógica no script server.R, onde a mágica acontece.

Novamente vou despir o código para captarmos a estrutura como um todo.

No lado lógica estamos definindo funções que irá afetar a interface definida em ui.R. Observe o uso das chaves { e } .

O que estamos especificando aqui é a lógica da função que irá gerar uma saída para o componente da interface de nome ‘distPlot’

A tradução literal do que o renderPlot faz seria “Renderiza um gráfico reativo que é adequado para atribuição a um slot de saída.” . Traduzindo, essa função irá processar os comandos em sequência mas que devem culminar com a geração de um gráfico como a função ‘plot’, ‘hist’ ou ‘ggplot’ e essa saída gráfica é direcionada para o componente da interface de nome correspondente. É óbvio que se dentro de renderPlot não houver um objeto gráfico como retorno de alguma função nada será plotado.

No caso o que temos é

Os comentários estão bem detalhados para ajudar a compreensão, mas quero enfatizar que temos uma chamada a função ‘hist’ que irá produzir o histograma e esse por sua vez exibido na ‘div’ da interface de nome ‘distPlot’.

Por fim a parte mais importante e mágica do Shiny que é a lógica reativa. Veja que não existem loops e ifs verificando o que o usuário faz na interface. O que temos é tratador de eventos ( event handler ) mascarado, ou embutido que detecta alterações no controle de nome “intervalos” via

De forma automática, toda e qualquer modificação na barra deslizante pelo usuário é detectada, o valor reavaliado e o método ‘renderPlot’ chamado para reconstruir o gráfico. É realmente mágico. 🙂  Principalmente se você programa nas camadas mais próximas da máquina e entende todas camadas de código que estão sendo ocultas nesse processo para que o usuário de R não tenha que se preocupar que esse lado da lógica. Infelizmente,  um problema gera outro. 🙂 temos que aprender a lógica do Shiny, mas acredite, é bem mais simples.

Um detalhe.

O data frame faithfull tem 2 colunas, ‘eruptions’ e ‘waiting’. A primeira a duração da erupção e a segunda o tempo de espera entre erupções.

O código final é esse aqui.

ui.R

server.R

 

 

 

 

 

 

 

 

 

Machine Learning for Society?

February 20, 2017 no comments Posted in Análise de Dados

Machine Learning 95 (2014)

Special Issue: Computational social science and social computing

http://link.springer.com/journal/10994/95/3/page/1
“In the era of “big data,” there is a need for machine learning to address important large-scale applied problems, yet it is difficult to find top venues in machine learning where such work is encouraged. 

We discuss the ramifications of this contradictory situation and encourage further discussion on the best strategy that we as a field may adopt.

 We also summarize key lessons learned from individual papers in the special issue so that the community as a whole can benefit.”

Machine learning for science and society – Cynthia Rudin · Kiri L. Wagstaff

Ranking de Periódicos CAPES segundo quantidade de referências por Área em R (Qualis)

February 10, 2017 no comments Posted in Análise de Dados

Uma das atividades centrais do processo de pesquisa acadêmica é a publicação dos resultados de pesquisas e revisões do estado da arte em algum tema relacionado a pesquisa.

Entre as várias questões que nos surgem uma delas é relativa aonde publicar? Quais são os periódicos mais ‘interessantes’.

O indicador de quão interessante (interestingness) uma publicação é um processo de decisão multicritério e com vários fatores objetivos e subjetivos.

Entre as métricas objetivas, se você está no Brasil, a mais importante com certeza é a classificação Qualis da lista de Periódicos da Capes.

No Qualis podemos identificar Áreas de Conhecimento onde especialistas da área observando uma séries de fatores entre eles o impacto que ela produz na área atribui uma classificação de qualidade da publicação. Esses critérios são motivo de intenso debate sobre a necessidade, suas vantagens e desvantagens, riscos e viéses. Como já escutei por aí, ‘dê-me um indicador que te darei um comportamento’.

Para saber mais sobre o QUALIS veja aqui!

Interessante notar que a mesma publicação pode ser avaliada e considerada importante por áreas diferentes e com classificações diferenciadas.

Saber quais publicações tem interesses transversais aos do seu campo de estudos  pode ser de valia por mais de um razão.

Primeiro pela própria transversalidade que faz com o que seu esforço de pesquisa seja útil fora do campo estrito da sua ára principal de atuação. Aprendemos muito nesse processo.

Segundo porque o que pode não ser digno de enorme crédito em sua área especializada pode ter um grande impacto em outra.

E por fim, conhecer essas regiões de interseção amplia o universo de possiblidades onde o seu artigo pode ser avaliado por pares, eventualmente aceito e publicado.

Acontece que o sistema que dá suporte a divulgação do indicador QUALIS, o SUCUPIRA, até a presente data, 02/2017, apenas permite buscas por área e não oferece um recurso que nos ajude a identificar essas regiões de interseção.

Diante desse obstáculo resolvi desenvolver uma pequenina aplicação em R que no meu caso sempre tem 2 objetivos, resolver um problema e segundo motivar a mais pessoas a se envolverem com programação.

Esse caso é um típico e serve de exemplo de como um pouco de programação é capaz de resolver problemas que exigiriam tempo e paciência.

Primeiro uma rápida ambientação.

O endereço é qualis.capes.gov.br

Abaixo a tela de busca da lista de periódicos que retorna um arquivo Excel.

A planilha é simples com apenas 3 colunas.

O que desejo é uma planilha onde as publicações sejam linhas e as colunas as classificações dadas a cada publicação em cada área. Assim podemos ter uma visão rápida das interseções e da classificação recebida por cada publicação por área.

Algo assim

Ah sim e as legendas das áreas.

Abaixo o código em R que é auto explicativo dado a sua simplicidade.

Requisitos?

Não deixe de instalar as bibliotecas exigidas.

Recomendo usar o RStudio. Foi testado com o R versão 3.32.

Primeiro os arquivos. Salve os arquivos .xls que baixou na pasta dados/   abaixo da pasta onde irá rodar o scritp.

O fluxo é simples.

  1. Lê o conjunto de arquivos .xls em um diretório e combina todos em um único data frame,
  2. Depois faz uma transposição linha colunas e conta as conta as colunas não vazias de cada linha, e
  3. Ordena e salva o resultado.

ATENÇÃO:  Verifique antes de usar se a planilha de cada área para que a mesma não contenha registros duplicados quanto ao ISSN e Nome do Periódico. Em caso de registros duplicados os resultados não são os previstos aqui.

Uma funcionalidade que poderia ser incorporada ao SUCIPIRA da CAPES e agradecemos muito.

Script e dados disponíveis na seção de downloads em breve. http://metrico.statanything.com/downloads/

Precisando de ajuda, estou no Twitter em https://twitter.com/metrico_

Até a próxima.

História da Mensuração do Comprimento: ‘Perca’ ou ‘Haste’ @National Physical Laboratory

February 5, 2017 no comments Posted in Análise de Dados

A perca ou haste, como também era conhecida, era uma medida tradicional na Inglaterra e que sobreviveu ao século XX.

Foi originalmente definida como o comprimento total dos pés esquerdos dos primeiros dezesseis homens que saíssem da igreja na manhã de domingo.

No site do NPL, no link abaixo,  é possível baixar um belo poster sobre a evolução de medidas de comprimento ao longo da história.

[1]
“History of Length Measurement : Factsheets : Educate + Explore : National Physical Laboratory.” [Online]. Available: http://www.npl.co.uk/educate-explore/factsheets/history-of-length-measurement/. [Accessed: 05-Feb-2017].