Quais habilidades são necessárias para realizar análises estatísticas em larga escala?

107

Muitos trabalhos estatísticos exigem experiência com dados em grande escala. Quais são os tipos de habilidades estatísticas e computacionais que seriam necessárias para trabalhar com grandes conjuntos de dados. Por exemplo, que tal construir modelos de regressão com um conjunto de dados com 10 milhões de amostras?

bit-question
fonte
1
Algumas boas dicas aqui .
Radek 03/03
Seria útil se você resumisse as que considera melhores.
rolando2
Também é interessante a discussão relacionada ao teste de hipóteses com grandes conjuntos de dados: stats.stackexchange.com/q/2516/919
whuber

Respostas:

115

Boas respostas já apareceram. Portanto, compartilharei apenas alguns pensamentos com base na experiência pessoal: adapte os relevantes à sua própria situação, conforme necessário.

Para antecedentes e contexto- para que você possa dar conta de quaisquer preconceitos pessoais que possam surgir nesta mensagem - grande parte do meu trabalho foi ajudar as pessoas a tomar decisões importantes com base em conjuntos de dados relativamente pequenos. Eles são pequenos porque os dados podem ser caros de coletar (US $ 10 mil para a primeira amostra de um poço de monitoramento de águas subterrâneas, por exemplo, ou vários milhares de dólares para análises de produtos químicos incomuns). Estou acostumado a obter o máximo possível de todos os dados disponíveis, explorá-los até a morte e inventar novos métodos para analisá-los, se necessário. No entanto, nos últimos anos, fui contratado para trabalhar em alguns bancos de dados razoavelmente grandes, como um dos dados socioeconômicos e de engenharia que cobrem todos os EUA no nível do bloco do Censo (8,5 milhões de registros,

Com conjuntos de dados muito grandes, toda a abordagem e a mentalidade mudam . Agora há muitos dados para analisar. Algumas das implicações imediatas (e, em retrospecto) óbvias (com ênfase na modelagem de regressão) incluem

  • Qualquer análise que você pensa em fazer pode levar muito tempo e computação. Você precisará desenvolver métodos de subamostragem e trabalhar em conjuntos de dados parciais para poder planejar seu fluxo de trabalho ao calcular com o conjunto de dados inteiro. (A subamostragem pode ser complicada, porque você precisa de um subconjunto representativo dos dados que é tão rico quanto o conjunto de dados inteiro. E não se esqueça de validar cruzadamente seus modelos com os dados retidos.)

    • Por isso, você passará mais tempo documentando o que faz e criando scripts para tudo (para que possa ser repetido).

    • Como o @dsimcha acabou de observar, boas habilidades de programação são úteis. Na verdade, você não precisa de muita experiência em ambientes de programação, mas precisa de uma vontade de programar, a capacidade de reconhecer quando a programação ajudará (em praticamente todas as etapas, na verdade) e um bom entendimento dos elementos básicos de programação. ciência da computação, como o design de estruturas de dados apropriadas e como analisar a complexidade computacional dos algoritmos. Isso é útil para saber com antecedência se o código que você planeja escrever será dimensionado para o conjunto de dados completo.

    • Alguns conjuntos de dados são grandes porque possuem muitas variáveis ​​(milhares ou dezenas de milhares, todas diferentes). Espere gastar muito tempo apenas resumindo e entendendo os dados . Um livro de códigos ou dicionário de dados e outras formas de metadados tornam-se essenciais.

  • Muito do seu tempo é gasto simplesmente movendo dados e reformatando-os. Você precisa de habilidades com o processamento de grandes bancos de dados e habilidades com resumo e representação gráfica de grandes quantidades de dados. ( O pequeno múltiplo do Tufte vem à tona aqui.)

  • Algumas de suas ferramentas de software favoritas falharão. Esqueça planilhas, por exemplo. Muitos softwares de código aberto e acadêmicos simplesmente não serão capazes de lidar com grandes conjuntos de dados: o processamento levará uma eternidade ou o software falhará. Espere isso e verifique se você tem várias maneiras de realizar suas tarefas principais.

  • Quase todo teste estatístico que você executa será tão poderoso que é quase certo identificar um efeito "significativo". Você precisa se concentrar muito mais na importância estatística , como tamanho do efeito, em vez de importância.

  • Da mesma forma, a seleção de modelos é problemática porque quase qualquer variável e qualquer interação que você possa contemplar parecerá significativa. Você precisa se concentrar mais na significância das variáveis que escolhe analisar.

  • Haverá informações mais que suficientes para identificar transformações não lineares apropriadas das variáveis. Saiba como fazer isso.

  • Você terá dados suficientes para detectar relações não lineares, mudanças nas tendências, não estacionariedade, heterocedasticidade etc.

  • Você nunca vai terminar . Há tantos dados que você pode estudá-los para sempre. É importante, portanto, estabelecer seus objetivos analíticos desde o início e mantê-los constantemente em mente.

Terminarei com uma pequena anedota que ilustra uma diferença inesperada entre a modelagem de regressão com um grande conjunto de dados em comparação com um menor. No final do projeto, com os dados do Censo, um modelo de regressão que eu desenvolvi precisava ser implementado no sistema de computação do cliente, o que significava escrever código SQL em um banco de dados relacional. Esta é uma etapa rotineira, mas o código gerado pelos programadores de banco de dados envolveu milhares de linhas de SQL. Isso tornou quase impossível garantir que estava livre de bugs - embora pudéssemos detectar os bugs (fornecia resultados diferentes nos dados de teste), encontrá-los era outra questão. (Tudo que você precisa é de um erro tipográfico em um coeficiente ...) Parte da solução foi escrever um programa que gerasse os comandos SQL diretamente das estimativas do modelo. Isso garantiu que o que saiu do pacote de estatísticas foi exatamente o que foi inserido no RDBMS. Como bônus, algumas horas gastas na escrita desse script substituíram possivelmente várias semanas de codificação e teste SQL. Essa é uma pequena parte do que significa para o estatístico ser capaz de comunicar seus resultados.

whuber
fonte
3
+1, vou compartilhar esta resposta maravilhosa (e imprimi-la para ter nas proximidades ^ _ ^) #
487 Dmitrij Celov
1
+1, é isso que certamente recontarei aos meus alunos por muitos anos.
precisa saber é o seguinte
2
a anedota me lembrou a época em que eu tive que transferir o modelo do Eviews para o R. O modelo original foi feito no Eviews, o resultado foi de cerca de 20 equações. Eu tive que apresentar os resultados na página com interface interativa. Como o modelo estava em andamento, escrevi um código traduzindo a saída do Eviews para o código R com o mesmo objetivo que o modelo exato foi usado tanto no Eviews quanto no R.R funcionou muito bem, e até acabei usando a diferença do código traduzido para cálculo do gradiente analítico.
precisa saber é o seguinte
2
Geralmente, é considerado mais construtivo (se não uma simples cortesia) quando votos negativos são justificados em um comentário, a menos que haja razões óbvias para não fazer isso (por exemplo, resposta vaga de uma linha, nenhuma resposta ao pedido de atualização de uma resposta errada, comportamento ofensivo). Isso contribui para melhorar a qualidade de uma resposta, quando argumentos válidos são feitos. Nesse caso em particular, não vejo razão para um voto negativo!
chl
2
+1 para automação reduz o erro: " escreva um programa que gerou os comandos SQL diretamente das estimativas do modelo ".
Orion
18

Sua pergunta deve dar boas respostas. Aqui estão alguns pontos de partida.

  1. Capacidade de trabalhar com as compensações entre precisão e as demandas impostas ao poder da computação.

  2. Facilidade com técnicas de mineração de dados que podem ser usadas como ferramentas preliminares de triagem antes de realizar a regressão. Por exemplo, redes chaid, carrinho ou neurais.

  3. Uma compreensão profunda da relação entre significância estatística e significância prática. Um amplo repertório de métodos para seleção de variáveis.

  4. O instinto de crossvalidate.

rolando2
fonte
Eu também combinaria os itens 4 e 1: é importante saber como validar cruzadamente sem sobrecarregar seus recursos de computação.
Zach
1
Você poderia explicar seu segundo ponto? Como você usaria redes neurais CHAID / CART / como ferramentas de triagem para regressão?
raegtin
2
@raegtin - Eu estou mais familiarizado com o CHAID, que vem com as chamadas "interações" que geralmente são efeitos principais que se disfarçam de interações, porque essa é a única maneira de o procedimento "deixá-las entrar". (No CHAID, pode haver apenas 1 efeito principal identificado como tal, portanto todos os outros efeitos principais são espremidos em células de "interação".) Mas o CHAID tem a vantagem de poder verificar muitas interações. Assim, uma vez identificados alguns promissores, eles podem ser incorporados a uma regressão ou anova, com todos os seus componentes de ordem inferior, e pode-se testar quais são realmente úteis.
Rolando2
1
+1 Estou intrigado com a possibilidade de usar a mineração de dados (especialmente o CHAID) para explorar possíveis efeitos. Seria interessante ver um aplicativo, como o conjunto de dados artificial (e pequeno) em stats.stackexchange.com/q/10363/919
whuber
12

Boas habilidades de programação são essenciais. Você precisa escrever código eficiente que possa lidar com grandes quantidades de dados sem sufocar, e talvez seja capaz de paralelizar o código para que ele seja executado em um período de tempo razoável.

dsimcha
fonte
4
A codificação é uma obrigação, mas também é importante saber como trabalhar com o sistema operacional. Você deve entender que, às vezes, a divisão do trabalho tem custos extras associados, pois o acesso a discos e redes acarreta custos adicionais. Você precisa entender diferentes maneiras de bloquear, aguardar e fazer a comunicação entre processos. Eu vi um ótimo código científico que passava a maior parte do tempo aguardando a conclusão de algumas chamadas do sistema. Amizade com o administrador do sistema do seu sistema, você pode obter um lote de ajuda com otimização de sistemas de teus, trazendo-os de café;)
Marcin
2
Às vezes, é melhor escrever "Código ineficiente" se isso ajudar na criação de estruturas de dados que antecipam perguntas adicionais futuras que provavelmente serão feitas.
Ralph Winters
1
@ Ralph: +1, concordo plenamente e aprendi isso da maneira mais difícil. Não pretendi aplicar que você sempre deve escrever código eficiente, independentemente das vantagens, apenas que você deve saber como.
dsimcha
5

Eu também acrescentaria que os dados em larga escala também introduzem o problema de possíveis "dados inválidos". Não apenas dados ausentes, mas erros de dados e definições inconsistentes introduzidas por todas as partes de um sistema que tocaram nos dados. Portanto, além das habilidades estatísticas, você precisa se tornar um limpador de dados especializado, a menos que outra pessoa esteja fazendo isso por você.

-Ralph Winters

Ralph Winters
fonte
3
Estes são bons pontos. Outliers e outros problemas de dados afetam qualquer conjunto de dados, não importa quão grande ou pequeno. Na minha experiência, eles são realmente mais fáceis de identificar e lidar com grandes conjuntos de dados, porque você tem o poder de discriminá-los da massa de dados e, especialmente se você usar métodos robustos, é menos provável que eles influenciem os resultados. BTW, você está sempre fazendo a "limpeza de dados" em qualquer análise. Isso não é algo que possa ser segregado e encaminhado a um especialista para ser tratado de uma vez por todas. Um outlier é apenas um outlier no contexto de um modelo específico.
whuber
2
Confira o google refine como um limpador de dados semi-automático que ajuda a evitar as armadilhas da edição manual.
Mindless.panda #
5
  1. Enquadrando o problema na estrutura Reduzir Mapa .
  2. O lado da engenharia do problema, por exemplo, quanto custa usar menor precisão para os parâmetros ou seleção de modelo com base não apenas na generalização, mas também nos custos de armazenamento e computação.
alta largura de banda
fonte
Você poderia fornecer um link relevante para a estrutura de redução de mapa mencionada?
mindless.panda
@ sugar.panda, link wiki adicionado!
highBandWidth
+1 por mencionar baixa precisão, embora esteja longe de ser uma prerrogativa enginnering. Quanto menor a precisão, maior a probabilidade de tomarmos más decisões. Isso está intimamente ligado ao erro Tipo I / II e abrange várias disciplinas, mas é principalmente relevante para estatística, ciência da decisão e economia. As funções de utilidade devem ser pensadas com antecedência e parte do processo de reflexão para identificar uma metodologia adequada.
Thomas Speidel