Membuat data "demo" dari data nyata: menyamarkan tanpa menodai


9

(Saya tidak tahu apa yang harus ditandai dengan ini karena saya bukan ahli statistik dan saya tidak tahu bidang apa ini. Jangan ragu untuk menambahkan tag yang lebih cocok.)

Saya bekerja untuk perusahaan yang memproduksi perangkat lunak analisis data, dan kami membutuhkan set data yang layak untuk menguji dan mendemonstrasikan produk terbaru kami. Kami tidak bisa hanya mengisi database dengan output dari generator angka acak karena output program akan menjadi tidak masuk akal. Salah satu cara paling sederhana untuk mendapatkan data tersebut adalah dari klien; kami memiliki banyak data dari uji coba yang kami jalankan. Sekarang, jelas kami tidak dapat mempublikasikan data aktual klien, jadi kami perlu mengubahnya sedikit, tetapi kami masih membutuhkannya untuk berperilaku seperti data nyata.

Tujuannya di sini adalah untuk mengambil set data mereka, dan menerapkan "fuzz" untuk itu sehingga tidak dapat dikenali sebagai milik mereka. Ingatan saya tentang teori statistik itu sendiri sedikit kabur, jadi saya ingin menjalankan ini oleh kalian:

Intinya, data yang kita miliki (dari klien) itu sendiri merupakan sampel dari semua data yang ada (di negara, atau dunia). Yang ingin saya ketahui adalah jenis operasi apa yang dapat diterapkan untuk membuat sampel tidak lagi mewakili populasi sampel klien, sementara tetap mempertahankannya mewakili populasi dunia secara kasar.

Sebagai referensi, sejauh yang kami ketahui data yang kami miliki umumnya mengikuti distribusi kasar normal (Gaussian).

Dataset asli tidak tersedia secara luas, tetapi secara teoritis dapat dikenali dari beberapa karakteristik khusus kawasan (kami tidak tahu apa karakteristik itu, dan diragukan apakah ada yang sampai pada tingkat yang memadai, tetapi kami tahu bahwa variasi ada dari satu tempat). meletakkan). Ngomong-ngomong, saya lebih tertarik pada teori ini daripada praktiknya - saya ingin tahu apakah suatu operasi membuatnya tidak mungkin (atau paling tidak sulit) untuk mengidentifikasi sumber dataset dengan parameter X, apakah ada yang memiliki atau tidak dapat bekerja. parameter X di tempat pertama.

Pendekatan yang saya buat adalah dengan memisahkan bacaan menjadi berbagai jenis, (tanpa memberikan banyak, katakanlah kelompok mungkin "panjang" atau "waktu yang diperlukan untuk melakukan X".) Untuk masing-masing, hitung standar deviasi. Kemudian, untuk setiap nilai, tambahkan nilai acak antara nilai positif dan negatif dari (n * stddev) di mana n adalah sebagian kecil yang dapat saya gunakan untuk menyetel hasil sampai data cukup "fuzzed". Saya tidak ingin hanya menerapkan rentang statis (katakanlah, acak antara 90% dan 110% dari nilai asli) karena beberapa nilai bervariasi jauh lebih atau kurang dari yang lain - dalam beberapa pengukuran, menjadi 10% dari rata-rata hampir tidak terlihat. , tetapi pada orang lain itu membuat Anda menjadi pencilan yang serius.

Apakah ini cukup untuk menutupi sumber data asli? Jika tidak, dengan ukuran statistik mana data masih dapat diidentifikasi, dan bagaimana saya akan menutupi itu sambil tetap menjaga data yang dihasilkan tetap realistis?


3
Dalam komentar terakhir untuk pertanyaan terkait , saya memberikan tautan ke beberapa makalah survei tentang hal ini yang tersedia secara online. Tautan fokus pada penyamaran data Sensus, tetapi banyak dari mereka membahas pertanyaan penyamaran data secara umum.
whuber

Mungkin bijaksana untuk menunjukkan bahwa saya sama sekali bukan ahli statistik atau bahkan ahli matematika. Saya seorang programmer dengan perdagangan, jadi saya bisa menangani penjelasan algoritmik tapi aljabar aneh mengubah otak saya menjadi dempul. Juga, ini tidak perlu terlalu keras; demonstrasi di mana data ini akan digunakan umumnya presentasi - sepuluh atau dua puluh menit dari salah satu perwakilan kami mencari-cari dalam perangkat lunak. Jika ada orang yang diizinkan untuk menguji perangkat lunak untuk periode yang lama, mereka akan mulai dengan memasukkan data mereka sendiri ke dalamnya - mereka tidak akan benar-benar memeriksa data demo.
anaximander

2
Saya sarankan mempekerjakan ahli statistik yang telah melakukan ini sebelumnya. Jangan jadikan ini rodeo pertama Anda. Anda tidak ingin terlibat dalam melakukan pekerjaan yang mengerikan dalam hal ini, bukan? Lihat arstechnica.com/tech-policy/2009/09/...
David J.

Jawaban:


2

Ada beberapa saran:

  1. Konversikan ke bentuk tanpa dimensi. Jika bergerak dari 0 ke 1 dan tidak memiliki unit seperti furlong per dua minggu atau ton batubara terpasang maka lebih sulit untuk dikenali.
  2. Tambahkan nomor acak kecil ke sana. Ketika Anda membelit seorang Gauss dengan seorang Gauss, Anda hanya mendapatkan Gauss yang lain. Itu tidak mengubah esensi itu, tetapi bergerak dari nilai yang tepat membuat seseorang mencari angka untuk mencoba dan mencari tahu apa itu.
  3. Saya suka ide memutarnya. Anda bisa mengambil jeda beberapa langkah waktu untuk membuat set data 2d dari set data 1d. Anda kemudian dapat menggunakan PCA, atau SVD (setelah pemusatan dan penskalaan) untuk menentukan rotasi. Setelah data diputar dengan benar, Anda telah mengubah varians dan mengacaukan informasi itu sendiri. Anda dapat melaporkan salah satu sumbu koordinat yang diputar sebagai "data sampel".
  4. Anda bisa mencampurnya dengan data yang terbentuk sangat kuat dari beberapa sumber lain. Jadi, jika data sampel Anda adalah data pasar saham, Anda dapat menambahkan gangguan berdasarkan cuaca, atau pada variasi dari rata-rata nada dari soundtrack favorit Anda dari The Beatles. Apakah orang dapat memahami Nasdaq atau tidak, mereka akan kesulitan memahami Nasdaq + Beatles.

1

Saya akan menyarankan pendekatan dua langkah. Langkah pertama adalah pengambilan sampel dengan penggantian - mirip dengan metode yang digunakan dalam bootstrap. Di R, Anda bisa menggunakan

 newdata = sample(olddata, replace = TRUE)

Anda sekarang memiliki kumpulan data yang berbeda dengan properti yang sama seperti aslinya. Langkah kedua adalah menambahkan variabel acak yang berpusat di sekitar nol:

 newdata = newdata + runif(1, min = -10, max = 10)

Variabel acak apa pun yang simetris di sekitar nol akan berfungsi dan batas-batas distribusi tidak penting.

Pada akhirnya, Anda harus memiliki kumpulan data yang sama sekali berbeda dengan properti yang sama dengan kumpulan data lama.


1
Apa maksudmu "dengan properti yang sama"? Paling tidak, varian dan kovarian akan berbeda. Jika Anda tertarik pada hubungan antar variabel, itu sangat penting.
Charlie
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.