(No tengo una idea real de con qué etiquetar esto porque no soy estadístico y no sé en qué campo se encuentra esto. Siéntase libre de agregar etiquetas más adecuadas).
Trabajo para una empresa que produce software de análisis de datos, y necesitamos un conjunto de datos decente para probar y demostrar nuestro último producto. No podemos simplemente llenar la base de datos con la salida de un generador de números aleatorios porque las salidas del programa se volverían absurdas. Una de las formas más simples de obtener dichos datos es de un cliente; Tenemos una gran cantidad de datos de una prueba que ejecutamos. Ahora, obviamente, no podemos publicar los datos reales de un cliente, por lo que debemos modificarlos un poco, pero aún necesitamos que se comporten como datos reales.
El objetivo aquí es tomar su conjunto de datos y aplicarle un "fuzz" para que no pueda reconocerse específicamente como suyo. Mi memoria de la teoría estadística es en sí un poco confusa, así que me gustaría explicar esto por ustedes:
Esencialmente, los datos que tenemos (del cliente) son en sí mismos una muestra de todos los datos que existen (en el país o en el mundo). Lo que me gustaría saber es qué tipo de operaciones se pueden aplicar para hacer que la muestra ya no sea fuertemente representativa de la población de muestra del cliente, mientras que la mantenga más o menos representativa de la población mundial.
Como referencia, hasta donde sabemos, los datos que tenemos generalmente siguen distribuciones aproximadas normales (gaussianas).
El conjunto de datos original no está ampliamente disponible, pero en teoría podría reconocerse a partir de algunas características específicas de la región (no sabemos cuáles son esas características, y es dudoso que alguien lo haga a un nivel suficiente, pero sabemos que existen variaciones de un lugar a otro). poner). De todos modos, estoy más interesado en la teoría de esto que en la práctica: quiero saber si una operación hace que sea imposible (o al menos difícil) identificar el conjunto de datos de origen mediante el parámetro X, si alguien tiene o no puede funcionar parámetro X en primer lugar.
El enfoque que se me ocurrió es separar las lecturas en varios tipos (sin revelar mucho, digamos que un grupo podría ser "largo" o "tiempo dedicado a hacer X"). Para cada uno de ellos, calcule Desviación Estándar. Luego, a cada valor, agregue un valor aleatorio entre los valores positivo y negativo de (n * stddev) donde n es alguna fracción que puedo usar para ajustar el resultado hasta que los datos estén lo suficientemente "confusos". No quería simplemente aplicar un rango estático (por ejemplo, aleatorio entre 90% y 110% del valor original) porque algunos valores varían mucho más o menos que otros; en algunas mediciones, apenas se nota un 10% por encima de la media , pero en otros te hace un valor atípico serio.
¿Es esto suficiente para enmascarar la fuente de los datos originales? Si no es así, ¿por qué medidas estadísticas los datos seguirían siendo identificables y cómo los enmascararía mientras mantengo los datos resultantes vagamente realistas?
fuente
Respuestas:
Hay algunas sugerencias:
fuente
Sugeriría un enfoque de dos pasos. El primer paso sería el muestreo con reemplazo, similar al método utilizado en bootstrapping. En
R
, podrías usarAhora tiene un conjunto de datos diferente con las mismas propiedades que el original. El segundo paso sería agregar una variable aleatoria centrada alrededor de cero:
Cualquier variable aleatoria que sea simétrica alrededor de cero funcionará y los límites de la distribución no son importantes.
Al final, debe tener un conjunto de datos completamente diferente con las mismas propiedades que el conjunto de datos anterior.
fuente