(Nie mam pojęcia, jak to otagować, ponieważ nie jestem statystykiem i nie wiem, do czego to pole. Możesz dodać więcej odpowiednich tagów).
Pracuję dla firmy produkującej oprogramowanie do analizy danych i potrzebujemy przyzwoitego zestawu danych do testowania i demonstrowania naszego najnowszego produktu. Nie możemy po prostu wypełnić bazy danych danymi wyjściowymi generatora liczb losowych, ponieważ wyniki programu stałyby się nonsensowne. Jednym z najprostszych sposobów na uzyskanie takich danych jest klient; mamy duży zbiór danych z przeprowadzonego przez nas procesu. Oczywiście nie możemy opublikować rzeczywistych danych klienta, więc musimy je nieco zmienić, ale nadal musimy zachowywać się jak prawdziwe dane.
Tutaj celem jest pobranie ich zestawu danych i zastosowanie „kłębka”, aby nie można było go rozpoznać jako specjalnie do nich. Moja pamięć teorii statystycznej jest trochę niewyraźna, więc chciałbym to zrobić przez was:
Zasadniczo dane, które mamy (od klienta) same w sobie są próbką wszystkich danych, które istnieją (w kraju lub na świecie). Chciałbym wiedzieć, jaki rodzaj operacji można zastosować, aby próba nie była już silnie reprezentatywna dla populacji próby klienta, przy jednoczesnym zachowaniu jej przybliżonej reprezentatywności dla populacji na świecie.
Dla porównania, o ile wiemy, dane, które mamy na ogół, są zgodne z przybliżonymi rozkładami normalnymi (gaussowskimi).
Oryginalny zestaw danych nie jest powszechnie dostępny, ale teoretycznie można go rozpoznać po niektórych cechach specyficznych dla regionu (nie wiemy, jakie są te cechy, i wątpliwe jest, czy ktoś robi to na wystarczającym poziomie, ale wiemy, że różnice istnieją od miejsca do miejsca). W każdym razie bardziej interesuje mnie teoria niż praktyka - chcę wiedzieć, czy operacja uniemożliwia (lub przynajmniej utrudnia) identyfikację źródłowego zestawu danych za pomocą parametru X, niezależnie od tego, czy ktoś ma, czy nie może, wypracować parametr X w pierwszej kolejności.
Podejście, które wymyśliłem, polega na rozdzieleniu odczytów na różne typy (bez zdradzania, powiedzmy, że grupa może mieć „długość” lub „czas potrzebny na wykonanie X”.) Dla każdego z nich oblicz odchylenie standardowe. Następnie do każdej wartości dodaj losową wartość między dodatnimi i ujemnymi wartościami (n * stddev), gdzie n jest ułamkiem, którego mogę użyć, aby dostroić wynik, aż dane będą wystarczająco „zamglone”. Nie chciałem po prostu stosować zakresu statycznego (powiedzmy, losowy między 90% a 110% pierwotnej wartości), ponieważ niektóre wartości różnią się znacznie bardziej lub mniej niż inne - w niektórych pomiarach 10% powyżej średniej jest ledwo zauważalne , ale w innych sprawia, że jesteś poważnym odstającym.
Czy to wystarczy, aby zamaskować źródło oryginalnych danych? Jeśli nie, to przy pomocy jakich miar statystycznych dane byłyby nadal możliwe do zidentyfikowania i w jaki sposób miałbym je maskować, jednocześnie utrzymując otrzymane dane niejasno realistyczne?
źródło
Odpowiedzi:
Istnieje kilka sugestii:
źródło
Sugerowałbym podejście dwuetapowe. Pierwszym krokiem byłoby próbkowanie z zamianą - podobnie jak w metodzie używanej podczas ładowania. W
R
, możesz użyćMasz teraz inny zestaw danych o takich samych właściwościach jak oryginał. Drugim krokiem byłoby dodanie losowej zmiennej wyśrodkowanej wokół zera:
Każda zmienna losowa, która jest symetryczna wokół zera, będzie działać, a granice rozkładu nie są ważne.
Na koniec powinieneś mieć zupełnie inny zestaw danych o takich samych właściwościach jak stary zestaw danych.
źródło