Marcin Bronicki

Marcin Bronicki kierownik, własna

Temat: problem z replikacją danych

Witam,
miałem problem, rozwiązałem go dzięki Waszym poradom w wątku "problem z replikacją danych" bo nie do końca jestem zadowolony, nie tyle z odpowiedzi bo wszystko śmiga ile ze względów wydajnościowych.
W skrócie chodzi o to że mam już gotowe agregaty z Oracle, dużo danych, inne środowiska, dane muszą być przenoszone w pliku, która schemat wygląda tak
plec_____kod_pocztowy_ilość
Kobieta____80-201_____122
Mężczyzna__02-545_____283
Kobieta____02_545_____343
...
...

Danych detalicznych kilkanaście milionów, po zrobieniu takiego agregatu to przez wzgląd w ilość kodów pocztowych to i tak jest kilkanaście tysięcy.
Po skorzystaniu z Waszych porad odtwarzam dane jednostkowe. Ale czy jest jednak zostawić w tej postaci np. do regresji liniowej lub logitowej np. przy założeniu że zamiast kodu jest jakiś czas?
Bo jak robię inaczej to te 4 giga które obsługuje R szybko się wyczerpują, muszę pamiętać by usuwać wyniki itp.

Temat: problem z replikacją danych

Nie wiem, jakiego typu analizy chcesz przeprowadzać, ale do danych zagregowanych w ten sposób stosuje się często modele logarytmiczno-liniowe. Nie wiem też, jak robić to w R, ale jest malutki darmowy programik o nazwie LemWin, który radzi sobie z tym zadaniem doskonale i jest stosunkowo prosty w obsłudze, a ściągnąć możesz go stąd:

http://www.uvt.nl/faculteiten/fsw/organisatie/departem...

Napisz może dokładniej, jakiego typu analizy chcesz przeprowadzać.
Marcin Bronicki

Marcin Bronicki kierownik, własna

Temat: problem z replikacją danych

Ok, dzięki ściągnę i posprawdzam.
A jeśli chodzi o wskazanie jakie analizy to jest to raczej pytanie ogólne,dotyczące wszystkich funkcji dostępnych w R. A więc czy jak mam takie dane to mogę je wykorzystać w tej postaci czy by były czytelne to muszę je rozgrupowywać.

Temat: problem z replikacją danych

Jeśli masz same zmienne nominalne i operujesz tylko na częstościach, to możesz po prostu zważyć każdy wiersz przez częstość - dostaniesz próbę o wielkości równej tym kilkunastu milionom i z zachowanymi proporcjami. Ale co do szczegółów, to niech może wypowie się ktoś nieco bardziej kompetentny, bo ja szczerze mówiąc nawet nie wiem, jak ważyć w R :)
Michał Bojanowski

Michał Bojanowski socjolog, analityk

Temat: problem z replikacją danych

Analizy z różnymi wagami poszczególnych case'ów można robić funkcjami w pakiecie 'survey'. Kiedyś napisałem sobie małą notatkę tutaj: http://bojan.3e.pl/ja/r/wazenie.html

Co do pracy z dużymi zbiorami danych, to bardzo zależy co takiego chce się liczyć. Na pewno pierwszy krok to zadbanie by w workspace nie było żadnych "śmieci" z poprzednich analiz.

Przy liczeniu (uogólnionych) modeli liniowych (lm/glm) można np. użyć argumentu model=FALSE aby wynikowy obiekt nie zawierał "model frame", który, w skrócie, jest kopią oryginalnych danych. Gdy to nie wystarcza polecam pakiet 'biglm', w którym modele regresji można obliczać dzieląc dane na kilka podzbiorów i ładując je do pamięci jeden po drugim (algorytm trochę podobny jak ten w SPSS, o ile dobrze pamiętam). Wadą jest niestety to, że cześć z funkcji które działają na klasycznych modelach (klasy lm i glm) nie mają metod dla obiektów biglm, na przykład 'predict'.

~michal

PS. W R hierarchiczne modele log-liniowe (metoda IPF) można liczyć min. 'loglin' w base lub 'loglm' w pakiecie MASS. Lem, który zasugerował Paweł to super program. Ma bardzo duże możliwości. Nie wiem jak wygląda obecnie, ale kiedyś trzeba było "z palca" wpisywać strasznie dużo zer i jedynek w skrypt żeby uzyskać kontrasty dokładnie takie, jakie się chce ;DMichał Bojanowski edytował(a) ten post dnia 19.03.10 o godzinie 00:24
Wojciech Sobala

Wojciech Sobala Redaktor
statystyczny,
biostatystyk,
Instytut Medycyny
Pr...

Temat: problem z replikacją danych

W funkcji glm jest parametr weigths który domyślnie ma wartość 1
dla każdej obserwacji. Jeżeli wskażesz zmienną z liczbą kopii identycznych rekordów to masz model dla danych ważonych (tak naprawdę powtórzonych, bo to jest jedna z form ważenia danych).
W pakiecie survey metody ważenia są odpowiednie dla różnych schematów losowania (warstwowe, grupowe itd.).
Pozornie te dwa podejścia dają takie same wyniki ale dotyczy to
tylko estymatorów parametrów a nie ich błędów standardowych.
Najprostszy model logliniowy dla zmiennych A i B z częstością
w zmiennej N (czyli dla danych zagregowanych) można dopasować komendą:
glm(N~A*B,family=Poisson)

Test niezależności dla A i B jest testem interakcji w tym modelu.
PS.
W Lem(Win) aby uzyskać kontrasty niestandardowe wystarczy użyć komendy dum ... (... numery zmiennych). Zera i jedynki są czasem konieczne dla modeli z ograniczeniami na parametry.Wojciech Sobala edytował(a) ten post dnia 19.03.10 o godzinie 09:49

Następna dyskusja:

problem z replikacją danych




Wyślij zaproszenie do