(Não tenho a menor idéia de como marcar isso porque não sou estatístico e não sei em que campo esse campo se enquadra. Sinta-se à vontade para adicionar tags mais adequadas.)
Eu trabalho para uma empresa que produz software de análise de dados e precisamos de um conjunto decente de dados para testar e demonstrar nosso produto mais recente. Não podemos simplesmente preencher o banco de dados com a saída de um gerador de números aleatórios, porque as saídas do programa se tornariam sem sentido. Uma das maneiras mais simples de obter esses dados é de um cliente; temos um grande corpo de dados de um teste que executamos. Agora, obviamente, não podemos publicar os dados reais de um cliente, portanto, precisamos alterá-lo um pouco, mas ainda precisamos que ele se comporte como dados reais.
O objetivo aqui é pegar o conjunto de dados e aplicar um "fuzz" a ele, para que não possa ser reconhecido como especificamente o deles. Minha memória da teoria estatística é um pouco confusa, então eu gostaria de executar isso por vocês:
Essencialmente, os dados que temos (do cliente) são uma amostra de todos os dados que existem (no país ou no mundo). O que eu gostaria de saber é que tipo de operações pode ser aplicada para tornar a amostra não mais fortemente representativa da população da amostra do cliente, mantendo-a aproximadamente representativa da população mundial.
Para referência, até onde sabemos, os dados que temos geralmente seguem distribuições normais aproximadas (gaussianas).
O conjunto de dados original não está amplamente disponível, mas poderia, teoricamente, ser reconhecido a partir de algumas características específicas da região (não sabemos quais são essas características e é duvidoso que alguém o faça a um nível suficiente, mas sabemos que existem variações a partir do local). colocar). De qualquer forma, estou mais interessado na teoria disso do que na prática - quero saber se uma operação torna impossível (ou pelo menos difícil) identificar o conjunto de dados de origem pelo parâmetro X, se alguém tem ou poderia trabalhar parâmetro X em primeiro lugar.
A abordagem que eu propus é separar as leituras nos vários tipos (sem revelar muito, digamos que um grupo possa ter "duração" ou "tempo necessário para executar o X"). Para cada um deles, calcule o desvio padrão. Em seguida, para cada valor, adicione um valor aleatório entre os valores positivos e negativos de (n * stddev), em que n é uma fração que posso usar para ajustar o resultado até que os dados sejam suficientemente "distorcidos". Eu não queria simplesmente aplicar um intervalo estático (digamos, aleatório entre 90% e 110% do valor original) porque alguns valores variam muito mais ou menos que outros - em algumas medições, 10% acima da média é quase imperceptível , mas em outros, faz de você um sério discrepante.
Isso é suficiente para mascarar a fonte dos dados originais? Caso contrário, por quais medidas estatísticas os dados ainda seriam identificáveis e como eu os mascararia, mantendo os dados resultantes vagamente realistas?
fonte
Respostas:
Existem algumas sugestões:
fonte
Eu sugeriria uma abordagem em duas etapas. O primeiro passo seria a amostragem com substituição - semelhante ao método usado no bootstrap. Em
R
, você poderia usarAgora você tem um conjunto de dados diferente com as mesmas propriedades que o original. O segundo passo seria adicionar uma variável aleatória centralizada em torno de zero:
Qualquer variável aleatória simétrica em torno de zero funcionará e os limites da distribuição não são importantes.
No final, você deve ter um conjunto de dados completamente diferente com as mesmas propriedades que o conjunto de dados antigo.
fonte