Wypowiedzi

  • Mariusz Trejtowicz
    Wpis na grupie SPSS w temacie Odpowiednik funkcji NVL w SPSS
    29.12.2014, 13:36

    Ponieważ NVL lub analogiczne funkcje przydają się często tymczasowo, można np. tak:
    TEMPORARY.
    IF SYSMIS(zmienna1) zmienna1=0.
    * tu dowolna procedura, np. FRE zmienna1.

    Na potrzeby obliczeń DO IF można sprowadzić do COMPUTE z warunkami logicznymi:
    * zastępuje sysmisy zerem .
    COMPUTE zmienna1 = (1-SYSMIS(zmienna1))*zmienna1.
    * zastępuje sysmisy wartością zmienna2 .
    COMPUTE zmienna1 = (1-SYSMIS(zmienna1))*zmienna1 + SYSMIS(zmienna1)*zmienna2.

  • Mariusz Trejtowicz
    Wpis na grupie R w temacie ggplot2 - "10 reasons to switch to ggplot2" :)
    30.05.2014, 11:20

    No pewnie, że wszystko zależy od potrzeb.

    W moim przypadku te potrzeby mogą być bardzo różne:
    - w najprostszej sytuacji, jeśli potrzebuję czegoś na szybko do prezentacji lub dokumentu i akurat pracuję w SPSS, pewnie w SPSS zostanę; grafika z defualtu nie nadaje się do publikacji, ale przystosowanie jej to względnie niewiele pracy; do PPT/DOC wystarcza mi eksport do PNG i ten SPSS dobrze obsługuje; całkiem możliwe jednak, że w takich zastosowaniach użyję wykresu Excela (też po modyfikacjach), w szczególności, co się zdarza, jeśli prezentacja wyników jest do Excela; jeśli potrzebuję zautomatyzować budowanie wizualizacji, pewnie będzie to SPSS lub Excel i VBA lub SPSS+VBA lub SPSS+Python lub inna podobna konfiguracja (potencjalnie również z R, choć R produkcyjnie chętniej wykorzystuję w innych zastosowaniach), w zależności od potrzeb, z zastrzeżeniem, że i tak możliwie jak najwięcej rzeczywistej pracy obliczeniowej będę chciał przerzucić na bazę danych;
    - jeśli potrzebuję grafiki statycznej w wysokim standardzie publikacyjnym (czyli np. artykuł, grafika do książki, rzadziej: materiały biznesowe) i eksportu do grafiki wektorowej - ggplot2 w wielu zastosowaniach będzie świetnym rozwiązaniem i będzie to dla mnie prawdopodobnie w tym momencie pierwszy wybór (choć długo radziłem sobie z SPSS);
    - do eksploracji graficznej wolałbym pewnie coś pokroju latticist pracujące na dużych danych + scatter3d {car}, a najlepiej, jakby wyglądało to i obiecywało coś podobnego do: http://superconductor.github.io/superconductor/; po prawdzie jednak, jeśli to eksploracja na moje potrzeby, nie potrzebuję ładnych grafik i najszybciej pracuję na produktach SPSS lub w ogóle nie wychodząc poza SQL - grafikę trzeba sobie samemu wyobrazić :);
    - zabawa zaczyna się przy implementacjach analiz w środowiskach produkcyjnych i tutaj moja rola to raczej tylko baza danych, algorytmy i generowanie danych wejściowych dla wizualizacji; osobiście dla aplikacji webowych / thin client wybierałbym vega/d3.js - lubię, kiedy z wynikami mojej pracy można później w ten sposób dalej pracować; implementacji do narzędzi standalone nigdy nie robiłem ani nie uczestniczyłem w takim projekcie; na potrzeby jednorazowej prezentacji wyników dla klienta teoretycznie też fajnie byłoby wykorzystać dynamiczną prezentację, ale gdyby mieć już zautomatyzowane rozwiązania; na chwilę obecną - to z mojej perspektywy za dużo pracy i przerost formy (a dynamiczną prezentację, jeśli chcieć, można zrobić na Excelu).

    Tak to wygląda w (mojej) praktyce. W moim poprzednim poście bardziej jednak próbowałem bawić się w wizjonerstwo, niż opisywać swoją pracę. Myśląc nad tym, jak powinna wyglądać idealna (dostosowana do różnych potrzeb różnych użytkowników) implementacja Grammar of Graphics, widziałbym to następująco:
    - język opisu grafiki i możliwości zastosowania przekształceń danych w definicji wykresu: ggplot2 jest czytelny, zwięzły a wsparty bazowymi funkcjonalnościami R daje taką elastyczność, że trudno wyobrazić mi sobie lepsze rozwiązanie, ale dla implementacji dodatkowych funkcjonalności mógłby okazać się zbyt ograniczony;
    - zarządzanie wynikami w jednej strukturze projektowej pozwalającej na eksplorację historii projektu oraz dostęp do zapisanych obiektów: wykresy z możliwością przełączania się pomiędzy kodem źródłowym (z możliwością modyfikacji i podglądu oraz zapisu jej wyniku), strukturą obiektu wynikowego (XML/JSON: również z możliwością modyfikacji) i wynikiem renderowania; podgląd całości zapisanych wyników w różnych formatach (lista, szczegóły, kafelki, statyczne wykresy...);
    - renderowanie wykresów do obiektów interaktywnych (2D, 3D, 4D - czyli z animacją pokazującą np. oś czasu jak w googleVis; identyfikacją punktów, ale też selekcją danych z możliwością zwrócenia wyniku np. jako filtru do zbioru źródłowego), tu myślę również o możliwości definiowania z poziomu języka kontrolek i późniejszej interakcji z nimi;
    - żeby zapewnić skalowalność: elastyczność w zakresie zarządzania danymi podstawowymi dla wykresu (np. zapis kopii całości danych do struktury obiektu wynikowego, co pozwalałoby na interakcje np. na poziomie dodania do wykresu dodatkowych zmiennych; lub: zapis całości zmiennych wykorzystywanych dla budowy wykresu; lub: zapis tylko agregatów / próbek danych; lub: zapis definicji dostępu do danych źródłowych rzeczywiście przechowywanych w zewnętrznych strukturach - to dawałoby możliwość aktualizacji);
    - eksport zarówno do obiektów statycznych (grafika, grafika wektorowa) jak i dynamicznych skryptów do publikacji na WWW (opartych na SVG lub Canvas); jako opcja również: do dynamicznych obiektów w środowisku publikacyjnym takim jak np. Shiny.
    Lista nie jest kompletna...

    Wiesz, taki ggplot2, tylko na sterydach i z napędem warp :)
    I co sądziłbyś o takim rozwiązaniu?

  • Mariusz Trejtowicz
    Wpis na grupie R w temacie ggplot2 - "10 reasons to switch to ggplot2" :)
    24.05.2014, 02:58

    Adrian, popieram w całej rozciągłości. Nawet, jeśli może za chwilę wydać się, że wdaję się w polemikę :)

    Chyba rzeczywiście base/trellis (dodałbym jeszcze lattice) mają swoich zwolenników, ale dla mnie to akurat ggplot2 był jednym z ważnych powodów, dla których zawędrowałem do R. Z implementacji Grammar of Graphics dobrze znam tylko ggplot2 i GPL/nVIZn w SPSS (swoją drogą tymi projektami w SPSS kierował przez kilka lat nie kto inny, jak Leland Wilkinson). nVIZn to trochę inna bajka, GPL (Graphics Programming Language) jest generalnie porównywalny do ggplot2. W takim porównaniu ggplot2 wypada znacznie lepiej: dużo bardziej ekonomiczny kod, pełne możliwości transformacji danych R, lepsza kontrola elementów składowych wykresu, rezultaty pracy z facets, wykorzystanie niepełnej deklaracji jako podstawy do modyfikacji wykresu / eksploracji danych. Usprawiedliwieniem dla Wilkinsona jest to, że w SPSS możliwości języka musiały stawać równocześnie dostępne w przyjemny sposób na poziomie GUI; ograniczenie, które nie limituje rozwoju ggplot2, a Deducer pokazuje, że zupełnie nie przeszkadza to w rozwoju sympatycznego GUI.

    Oprócz tych implementacji bardzo ciekawy jeszcze wydaje się Bokeh (prezentacja: youtube.com/watch?v=6_aE0kAedL0 ): projekt bardzo obiecujący, którego celem jest przeniesienie 1:1 możliwości ggplot2 (odtworzenie pełnej składni!) do Pythona. Mocną stroną jest osadzenie Bokeh na Pandas. Dzięki Pandas rezultatem jest grafika z dużymi możliwościami pracy interaktywnej i bezpośrednią możliwością osadzenia w HTML. Czyli to, czego brakuje ggplot2.

    The Grammar of Graphics było też inspiracją dla Tableau: widać to w sposobie tworzenia wizualizacji w GUI, ale po stronie kodu (chyba, że z czegoś nie zdaję sobie sprawy) jest to już niskopoziomowa definicja. Możnaby więc Tableau potraktować jako implementację Grammar of Graphics w której, tak się składa, darowano sobie implementację języka opartego na tej gramatyce.

    Tutaj dochodzę do momentu, gdy - choć ggplot2 uwielbiam - czasami miewam jednak (choć naprawdę bardzo bardzo rzadko) poczucie straconego czasu zainwestowanego w naukę tego pakietu. Bo ggplot2 jest rozwiązaniem dojrzałym, ale nie rozwojowym. Kontrola, jaką daje nad statyczną wizualizacją danych, jest nieporównywalna do żadnego innego znanego mi rozwiązania. Ale kierunkiem rozwoju wizualizacji danych jest raczej interaktywna eksploracja i zachowanie tej interaktywności po publikacji w HTML. Ideałem byłoby dla mnie, gdyby funkcjonalność i elegancję języka i wykresów z ggplot2 polączyć z urodą i interaktywnością d3.js.

    Takiego idealnego rozwiązania nie ma, ale trwają prace dające nadzieję na jego powstanie. Chciałbym zwrócić uwagę na pakiet ggvis (niedostępny na CRAN, instalacja bezpośrednio z GitHub): http://ggvis.rstudio.com/.
    W mojej ocenie na plus:
    - wykorzystanie vega https://github.com/trifacta/vega/wiki/Vega-and-D3, czyli bardziej wysokopoziomowy dostęp do d3.js i renderowanie grafiki do SVG lub HTML5 Canvas;
    - inspiracja ggplot2 i aspiracje, by odtworzyć jego pełną funkcjonalność; zachowanie nazw funkcji ggplot2;
    - funkcje pozwalające łatwo definiować elementy interakcji;
    - komunikacja zwrotna z WWW do R poprzez shiny (Shiny Server).
    Minusy w mojej ocenie:
    - zalezność od Shiny Server (http://www.rstudio.com/shiny/server/); w pewnych sytuacjach daje to większe możliwości, ale wolałbym, żeby publikacja do HTML była również możliwa z podarowaniem sobie możliwości komunikacji zwrotnej do R, po prostu poprzez SVG lub Canvas - tak jest np. w rCharts (również dostęp do d3.js, ale przy tradycyjnej filozofii definiowania wykresów przez typ wykresu i parametry);
    - zmiany składni w stosunku do ggplot2: można się przyzwyczaić, ale nie bardzo potrafię dostrzec korzyści.

    Z ciekawostek, Hadley Wickham rozpoczął kiedyś pracę nad pakietem o fantastycznie dobranej nazwie r2d3, który miał jednym poleceniem przenosić wykresy ggplot2 do d3. Nieaktualizowany od 2012 i chyba nie bardzo działający projekt jest na GitHub w wersji 0.0.1. A szkoda.

  • Mariusz Trejtowicz
    Wpis na grupie SPSS w temacie Conjoint SPSS - subject - zagadnienie szczegółowe
    22.05.2014, 15:14

    To nie jest kwestia poprawności lub nie - analiza czy to z tym poleceniem czy bez jest substancjalnie taka sama. Wprowadzenie lub nie tej opcji ma wpływ na wyliczenia użyteczności cząstkowych. Bez opcji SUBJECT liczone są one tylko dla całości danych. Dzięki określeniu zmiennej SUBJECT można pokazać różnice pomiędzy użytecznościami cząstkowymi pomiędzy grupami danych (np. między już wyodrębnionymi segmentami) lub wyliczyć je osobno dla każdego badanego w celu dalszej analizy (np. segmentacji). To, czy SUBJECT jest potrzebna, czy nie, zależy więc od celów analizy. Po użyciu opcji SUBJECT użyteczności dla całości danych są również liczone: w tabeli Overall Statistics | Utilities. I to jest ten sam wynik, który dostaniemy (w jedynej wówczas tabeli Utilities), jeśli opcja SUBJECT jest pominięta. Użycie opcji SUBJECT determinuje wyniki zapisywane przez opcję UTILITY.Ten post został edytowany przez Autora dnia 22.05.14 o godzinie 15:16

  • Mariusz Trejtowicz
    Wpis na grupie SPSS w temacie Warunek mniejsze/większe datach
    29.04.2014, 14:59

    * Najszybciej: .
    compute zmienna = (data1>date.dmy(20,3,2012) and data1<date.dmy(20,5,2012)).
    execute.

  • Mariusz Trejtowicz
    Wpis na grupie Statystyka i jej okolice ;-) w temacie Analiza równań strukturalnych
    29.04.2014, 00:05

    Podejrzewam, że - o ile logicznie to ma sens - sugestia, aby wykorzystać modele strukturalne oznacza, że recenzent oczekuje kompletnego modelu. Czyli: na pewno równocześnie w modelu są wprowadzone wszystkie mediatory, ale również i wszystkie zmienne niezależne. Taki model to jest na pewno coś, o co ja bym się pokusił w przypadku takich danych.

    Tutaj jednak pojawia się kilka wyzwań.

    1.
    Czy zmienne niezależne oraz czy mediatory stanowią unikalne źródła informacji o analizowanym procesie? Czyli, prościej, czy można je potraktować jako odrębne zmienne, czy też raczej należałoby myśleć o niektórych z nich jako wskaźnikach tego samego konstruktu teoretycznego? W pierwszym przypadku wystarczyłby tzw. model analizy ścieżkowej (czyli mamy w modelu tylko zmienne obserwowalne). Wciąż należałoby sprawdzić, czy redukcja danych nie jest potrzebna ze względu na współliniowość, ale współliniowość nie byłaby oczekiwana i prawdopodobnie należałoby sobie poradzić z nią poprzez usunięcie problematycznych zmiennej lub zmiennych. W drugim przypadku: w modelu pojawiłyby się zmienne latentne.

    2.
    Czy na pewno z teoretycznego punktu widzenia struktura relacji przyczynowych jest tylko dwupoziomowa: 11 zmiennych niezależnych -> 6 mediatorów -> 1 zmienna zależna? Czy jest zasadne, aby postulować relacje przyczynowe również pomiędzy zmiennymi niezależnymi lub w grupie mediatorów? Jeśli analizowany jest np. proces rekrutacji i zmienne niezależne opisują kandydata (płeć, wiek, doświadczenie zawodowe, wykształcenie, zainteresowania, wyniki testów kompetencyjnych, psychologicznych) a mediatory to zmienne z rozmów rekrutacyjnych (np. oceny grupy rekruterów na 6 wymiarach), nie ma relacji przyczynowych pomiędzy obserwowanymi mediatorami (choć wyniki mogą być skorelowane lub mogą być pochodną tylko dwóch ocen na latentnych konstruktach teoretycznych, np. oceny kompetencji oraz oceny umiejętności społecznych). Ale są relacje przyczynowe w grupie zmiennych niezależnych: płeć i wiek są przyczynowymi poprzednikami wykształcenia, wiek: doświadczenia zawodowego, wykształcenie: zainteresowań, wyników testów kompetencyjnych). Te relacje mogą być zignorowane, jeśli nie ma to znaczenia z perspektywy celów analizy, ale decyzja o braku uwzględnienia relacji przyczynowych pomiędzy zmiennymi niezależnymi i o wprowadzeniu ich do modelu równocześnie powinna być decyzją świadomą. Jeśli specyficznie interesowałby nas, na przykład, wpływ wieku na prawdopodobieństwo zatrudnienia (ageism), nie można zignorować w modelu determinacji doświadczenia zawodowego i poziomu wykształcenia przez wiek.

    3.
    O ile do tej pory wyzwania dotyczyły poziomu analizy teoretycznej i były wspólne dla każdego przypadku zastosowania modelu strukturalnego do opisu danych wielowymiarowych, kolejne wyzwanie jest związane z poziomem pomiaru zmiennej zależnej. Otóż model strukturalny dla dychotomicznej zmiennej zależnej to wcale nie taka prosta sprawa. Brakuje dobrej i przyjaznej implementacji dla tego podejścia. Co do zasady, np. Amos pozwala pracować tylko na zmiennych ilościowych (i nawet jeśli w specyfikacji jest napisane, że może pracować również na zmiennych jakościowych, to należy dokładnie przeczytać jak to robi, zrozumieć i zapomnieć o całej tej sprawie; tylko ilościowe).

    Możliwości są następujące (być może istnieją inne, których nie jestem świadomy):
    a) Metodologicznie najbardziej "czyste" jest z kilku względów wykorzystanie estymacji bayesowskiej (implementacja: BUGS; najwygodniej do wykorzystania z oprogramowania WinBUGS lub pakietu R: R2WinBUGS). Dobra informacja: WinBUGS jest za darmo. Niestety, to podejście mogę polecić tylko, jeśli już wiesz co to jest non-informative prior, mniej więcej wiesz jak działa Gibbs sampler i pisałaś już choćby proste modele w BUGS. W innym wypadku krzywa uczenia się może być długa. Umieszczam takie rozwiązanie na pierwszym miejscu dla porządku. Rzeczywiście istnieją przesłanki metodologiczne, żeby to zrobić w ten właśnie sposób. Dodatkowa zaleta: recenzenci przestaliby mieć jakiekolwiek uwagi metodologiczne i ze szczęką podwiązaną na sznurowadle skupili się już tylko na teorii. Ale zdaję sobie sprawę, że to mało praktyczna rekomendacja.

    b) Dobrym wyborem oprogramowania (bez tych wszystkich niewygodnych symulacji i statystyki bayesowskiej) jest MPLUS. Nie jest łatwy (jak w WinBUGS trzeba napisać kod modelu), ale pozostaniemy na przyjaznym gruncie estymacji ML. MPLUS jest jednak komercyjny i raczej rzadko dostępny na polskich uczelniach.

    c) Kolejna możliwość to Stata (powiedzmy, na 95%; nie używałem, ale słyszałem, że można). To ponownie oprogramowanie komercyjne. Jest nieco bardziej prawdopodobne, że uczelnia ma jakiś dostęp do Staty, ale (zupełnie niezasłużenie) Stata w Polsce również nie jest popularna.

    d) Rozwiązaniem, którego nie testowałem i do dzisiaj w ogóle nie wiedziałem, że daje taką możliwość, jest pakiet lavaan do R. Trochę mnie zdziwiło, że nie udało mi się znaleźć żadnego innego pakietu R, który realizowałby modele strukturalne z funkcjami wiążącymi. Zmienna zależna w lavaan może być dychotomiczna, ale lavaan ma zaimplementowany tylko model z funkcją wiążącą probit a nie logit. Jeśli przejście z logit do probit nie stanowi problemu, to lavaan powinien się nadać. Tym razem: wymagane jest nieco obycia z R.

    e) Ostatnim rozwiązaniem jest wykorzystanie ... SPSS oraz Amosa. Jest to rozwiązanie praktyczne, choć pozostawia pewien niesmak metodologiczny. Amos nie może zbudować modelu dla zmiennej zależnej dychotomicznej? No i co z tego? Należy: 1) zbudować model w Amos bez tej zmiennej i upewnić się, że jest dobrze dopasowany do danych; 2) zbudować model regresji logistycznej w SPSS i upewnić się, że jest dobrze dopasowany do danych (test Hosmera-Lameshowa); 3) zapisać do danych wartości przewidywane z regresji logistycznej [nie prawdopodobieństwa przewidywane ale wartości przewidywane, czyli logarytm szansy spełniający założenia poziomu pomiaru i rozkładu]; 4) wstawić do Amosa wartość przewidywaną z SPSS jako zmienną zależną; 5) dodać wszelkie potrzebne do osiągnięcia dopasowania ścieżki bezpośrednie pomiędzy zmiennymi niezależnymi a zmienną zależną, wypracować dopasowanie modelu do danych, ale lepiej nie wgłębiać się w próby interpretacji statystyk dopasowania na tym kroku [nie są poprawne]; 6) zinterpretować parametry modelu [powinny być niemal takie same, jak w MPLUS lub Stata]. Z perspektywy uzyskanej wiedzy o danych: nic więcej nam nie trzeba. Z perspektywy opisu takiej procedury na potrzeby dysertacji, może być trudnawo.

    f) No i zawsze na koniec pozostaje to najwygodniejsze rozwiązanie: nie robić nic. Model strukturalny dałby całościowy obraz sytuacji. Tak samo, jak model regresji wnosi nową wiedzę w stosunku do tabeli korelacji. Ta analogia jest tu akurat 100% trafna. Przejście do modelu strukturalnego z analiz cząstkowych, jakie robiłaś, jest jak przejście z poziomu korelacji zerowych do modelu wielowymiarowego. Ale jeśli nie bardzo wiadomo jak zrobić model regresji, to przecież nie jest tak, że korelacje kłamią (statystyki nie kłamią; statystycy - to już inna historia).

    Mam nadzieję, że więcej wyjaśniłem i pomogłem, niż pogmatwałem :)

  • Mariusz Trejtowicz
    Wpis na grupie SPSS w temacie Problem z wynikami analizy kanonicznej.
    21.03.2014, 09:50

    Są co najmniej dwa powody, dla których nie warto.

    1 (zarzut techniczny)
    Przy tej liczebności próby wyniki analizy korelacji kanonicznych można traktować w zasadzie jako przypadkowe. Próba musiałaby być dużo większa, aby uzyskać wyniki stabilne. W szczególności, że nie wygląda na to, aby istniały jednoznaczne i silne zależności pomiędzy zbiorami zmiennych.

    2 (zarzut esencjonalny).
    Analiza korelacji kanonicznych być może ma pewne walory eksploracyjne, ale w mojej opinii są one jednak mniejsze, niż to, co pokazuje zwykła macierz korelacji, macierz wykresów rozrzutu lub macierz wykresów rozrzutu między kilkoma pierwszymi dwoma-trzema składowymi głównymi dla zbiorów zmiennych.

    Gdy mamy już jakąkolwiek wiedzę, która teoretycznie może ukierunkować analizę (a tylko wtedy warto się za analizę w ogóle zabierać), technika ta przestaje być użyteczna. Widzę pewne możliwości dla zastosowania jej w celu zautomatyzowanej redukcji danych, ale - po prawdzie - dobrego praktycznego zastosowania ani nie znam ani nawet nie bardzo jestem w stanie wymyślić takie zastosowanie, dla którego nie byłoby lepszej alternatywy.

    Ateoretyczny charakter analizy łatwo może prowadzić do wyników sprawiających problemy interpretacyjne. Lecz nawet wtedy, gdy interpretacja jest oczywista, wynik analizy nie może być porównywany pomiędzy próbami. Aby możliwość porównań czy replikowalności wyniku zapewnić, i tak potrzebna jest zmiana podejścia (i wykorzystanie analizy korelacji kanonicznych wyłącznie eksploracyjnie).

    W rezultacie lepszą alternatywą, która będzie mogła mieć teoretyczne podstawy i może być teoretycznie ukierunkowana, jest redukcja danych (tworzenie skal, wskaźników) dla obu zbiorów zmiennych a następnie analiza korelacji lub budowa modeli statystycznych na wskaźnikach. Prostota idzie tu w parze z użytecznością. Drugą alternatywą jest budowa modelu równań strukturalnych. W obu przypadkach łatwiej poradzić sobie można z niewielką liczebnością próby.

    HTH. Być może jest tutaj ktoś, kto ma lepszą opinię o korelacjach kanonicznych.

  • Mariusz Trejtowicz
    Wpis na grupie SPSS w temacie Korelacja Pearsona czy Spearmana? + regresja
    30.01.2014, 01:49

    Popieram, Spearman. Chyba, że wiesz, co robisz, no to pewnie, smiało, może być Pearson :)

    Yay, drugi post w tym samym tygodniu wspominający kodowanie inne, niż dychotomiczne!

    Adrian, wszystkie kody zmiennych pomocniczych (dummy regressors - estetycznie regressor niezbyt mi się podoba, wolę auxiliary variables), z tego artykułu, który linkujesz, podzieliłbym przez pół. Wtedy będzie różnica 1 pomiędzy kodami, czyli parametr niestandaryzowany modelu będzie miał ładną interpretację ('przy zmianie o jedną jednostkę ..."). I jeszcze wycentrowałbym wszystkie zmienne pomocnicze (i w ogóle wszystkie zmienne niezależne, o ile 0 nie jest już wartością oczekiwaną albo ma naturalną interpretację, którą chcemy zachować). Wtedy dodatkowo wyraz wolny modelu zyska ładną interpretację: przy nieznanych wartościach zmiennych niezależnych. I - co jest tutaj najbardziej ekscytujące - będzie to się odnosiło również do jakościowych zmiennych niezależnych. Dodatkowy benefit: po tej procedurze gwarantuję ortogonalność zmiennych pomocniczych.

  • Mariusz Trejtowicz
    Wpis na grupie SPSS w temacie Problem z modelem regresji
    30.01.2014, 01:30

    @Robert: dziękuję za nie ograniczanie się do dummy coding!

    Rozszerzając temat:
    Każda macierz kontrastu (zapis hipotez badawczych wywodząca się z tradycji analiz danych eksperymentalnych) może znaleźć odzwierciedlenie w kodowaniu zmiennych pomocniczych (auxiliary variables) w modelu statystycznym (dowolnym, nie tylko modelu regresji). Kodowanie dychotomiczne (dummy coding) odpowiada kontrastowi wskaźnikowemu (indicator contrast).

    Polecam:
    http://www.ats.ucla.edu/stat/spss/webbooks/reg/chapter...
    - są też wersje tego artykułu dla użytkowników R, SASa i Staty.

    Swoją drogą, dla effect/experimental coding (schemat kodowania odpowiadający kontrastowi prostemu) z perspektywy interpretacji parametrów modelu naturalnym kodowaniem jest raczej -0.5 i 0.5 a nie -1 i 1: niestandaryzowany parametr modelu ma wtedy interpretację jako różnica między średnią dla danego poziomu zmiennej niezależnej a średnią globalną próby. Z perspektywy testu statystycznego - wartości kodów nie mają zupełnie znaczenia.

    Ciekawy - dla użytkowników SPSS - może też być mocno już dziś archiwalny tekst Davida Nicholsa (oryginalnie chyba z SPSS--X):
    http://www.ats.ucla.edu/stat/spss/library/contrast.htm
    - pomijając małe zamieszanie z zapisem macierzy (jeśliby chcieć np. w Matlabie, Octave czy R zastosować wzór przekształcający macierz podstawową na macierz kontrastu, trzeba najpierw transponować macierz podstawową), ten tekst dość fajnie przybliża moim zdaniem niesłusznie słabo spopularyzowany i często kiepsko rozumiany temat wykorzystania zmiennych jakościowych w modelach statystycznych.

    Moim faworytem wśród schematów kodowania byłoby coś, co trzeba by chyba nazwać: weighted Helmert coding - ciekawe, Google nie zwraca dla takiego tematu żadnego wyniku :) Jest to zważony ze względu na nierównoliczne kategorie schemat kodowania odpowiadający kontrastowi Helmerta. Helmert coding (opisany w pierwszym z linków powyżej) daje ortogonalne zmienne pomocnicze, ale tylko dla zbalansowanego planu eksperymentalnego (równoliczne grupy). Poza planem eksperymentalnym nie ma co oczekiwać perfekcyjnego rozkładu jednostajnego (uniform distribution), czyli - prościej mówiąc - równolicznych kategorii zmiennej jakościowej. W przypadku nierównolicznych grup dopiero zważony schemat Helmerta (który łatwo można uzyskać poprzez wycentrowanie zmiennych reprezentujących niezmodyfikowany kontrast Helmerta) daje nieskorelowane zmienne pomocnicze. A to potrafi niekiedy znacznie ułatwić pracę (np. z modelami strukturalnymi).

    Dla osób, które w ten temat nie chcą się zagłębiać, dobra informacja jest taka, że zastosowanie dummy coding jest bajecznie proste (w porównaniu z alternatywami) i praktycznie prawie nie ma wad.

    Dla tych nieco bardziej ambitnych, dobre zrozumienie tego, w jaki sposób poprzez schemat kodowania można zbudować model odzwierciedlający pewien zakładany zestaw hipotez zerowych, jest bardzo ważne dla:
    a) zrozumienia konsekwencji poziomu pomiaru zmiennej (tzn. poziomu pomiaru innego, niż interwałowy) dla modelowania statystycznego,
    b) zrozumienia możliwości i celów analiz post hoc dla modeli statystycznych (np. http://www.afhayes.com/introduction-to-mediation-moder...) dla przypadku zmiennych jakkściowych w modelu,
    c) a przede wszystkim dla budowy modeli pozwalających na odpowiedź na specyficzne hipotezy badawcze (czyli na wszystkie hipotezy inne, niż H0: między grupą X a grupą odniesienia nie ma różnicy).

  • Mariusz Trejtowicz
    Wpis na grupie Statystyka i jej okolice ;-) w temacie Prawdopodobieństwo - proszę o pomoc
    20.01.2014, 22:36

    Mocno teoretyczne to zadanie (ćwiczy wyłącznie zdolności numeryczne, mogłoby zupełnie nic wspólnego nie mieć ze statystyką czy psychometrią) i nierozwiązywalne bez dodatkowych założeń. Na start zakładam brak błędu systematycznego pomiaru.

    Wariancja może oznaczać oczekiwaną wariancję wyników testu lub wariancję rozkładu w populacji, tej informacji nie ma w pytaniu. Tylko dlatego, że w ten sposób kalkulacje wychodzą bardzo ładnie (operacje na liczbach całkowitych), przyjmuję, że chodzi o wariancję wyniku prawdziwego (rozkładu w populacji). Oczekiwana wariancja wyników testu = wariancja wyniku prawdziwego (15^2=225) + wariancja błędu pomiaru. Rzetelność (0,9) = wariancja wyniku prawdziwego (225) / oczekiwana wariancja wyników testu. Z tego mamy wariancję testu 250, wariancję błędu 25 i odchylenie standardowe błędu pomiaru = 5. Zakładając rozkład normalny błędu pomiaru wynik z błędem 5 lub większym (100 lub więcej gdy wynik prawdziwy równy jest 95, to oznacza wynik co najmniej o 1 odch. standard. większy) dostaniemy z prawdopodobieństwem 0,15866 (co czytamy z dystrybuanty rozkładu normalnego).

    Gdyby 15 to miała być wariancja wyników testu, 5 pkt oznaczałoby błąd +1,054SD i wynikiem byłoby prawdopodobieństwo 0,146.

    Ciekawszym pytaniem (choć możliwe, że "z gwiazdką"), które pozwoliłoby trochę lepiej zrozumieć naturę pomiaru, byłoby np. pytanie o to, jaka jest korelacja wyniku prawdziwego i wyniku pomiaru, jeśli rzetelność pomiaru wynosi 0,9. Do odpowiedzi wystarczy tylko wiedza o tym, czym jest rzetelność pomiaru (udział wariancji wyniku prawdziwego w wariancji wyniku pomiaru).

  • Mariusz Trejtowicz
    Wpis na grupie Data Mining w biznesie w temacie Wartościowe zbiory danych (do pracy dyplomowej)
    8.08.2013, 12:16

    Sprawdź tutaj:
    http://www.statsci.org/datasets.html
    - to jest zbiór linków do różnych bibliotek zbiorów danych dostępnych w Internecie.

  • Mariusz Trejtowicz
    Wpis na grupie SPSS w temacie Wielkokrotna imputacja braków danych z jedną iteracją -...
    28.02.2013, 12:24

    Cześć Piotrze, kawał czasu.
    Nie tak prosto :) To, co proponujesz, kłóci się z ideą multiple imputation. Kilka zbiorów jest potrzebne, ponieważ parametry modelu z jednej próbki są losowo zakłócone a błędy standardowe parametrów z jednego modelu niedoszacowane: nie biorą pod uwagę niepewności informacyjnej związanej z imputacją braków.

    Ale nie ma większego problemu, żeby zrobić imputację wielokrotną w SPSS czy gdziekolwiek indziej i realizować analizy w innym oprogramowaniu, które specjalnych procedur pod obsługę wielu zbiorów z MI nie ma. Potrzebujesz wyliczyć modele na wszystkich próbkach a później sam zagregować (pooling) wyniki z kilku modeli. Ale ten krok jest szczęśliwie dość prosty, w zupełności wystarczy Excel.

    Wartość parametru modelu z metody wielokrotnej imputacji jest po prostu średnią parametrów modeli ze wszystkich próbek.

    Intuicja za wyliczeniem błędu standardowego jest też dość prosta: uśrednij wariancję parametrów z modeli na próbkach i dodaj korektę w postaci wariancji pomiędzy oszacowaniami parametów z modeli na wielokrotnych próbkach. Spierwiastkuj i masz błąd standardowy. Dokładny wzór jest nieco bardziej skomplikowany:
    S.E. zagregowany = sqrt(sum(SE^2)/M + ((M+1)/M)*(sum((B-avg(B))^2)/(M-1)) )
    SE - błędy standardowe z poszczególnych modeli
    B - wartości parametrów modelu z poszczególnych modeli
    M - liczba prób w wielokrotnej imputacji
    Czyli korekta wariancji to ((M+1)/M)*nieobciążony estymator wariancji dla parametrów z próbek.

    Teraz już tylko potrzebujesz policzyć sobie testy albo przedziały ufności z rozkładu t i gotowe.

  • Mariusz Trejtowicz
    Wpis na grupie SPSS w temacie rozkodowanie zmiennych
    19.02.2013, 11:06

    albo jeszcze krócej :)

    do repeat i=1 to 6 /v=y1 to y6.
    comp v=x=i.
    end repeat.
    exe.

  • Mariusz Trejtowicz
    Wpis na grupie R w temacie Korelacja a rozkład
    24.01.2013, 03:06

    Eksplorację wykonać należy zawsze. Bez wykresu rozrzutu nie można zrozumieć sensu relacji opisywanej samymi statystykami, te same zestawy statystyk mogą opisywać różne zestawy danych (i nie potrzeba do tego nawet outlierów).

    Oba rozkłady wyglądają na lognormalne, skorelowane "ogony" zawyżają siłę związku mierzoną współczynnikiem Pearsona. Lepiej siłę związku odda współczynnik Pearsona pomiędzy zlogarytmizowanymi wartościami obu zmiennych, powinien wypaść blisko wsp. Spearmana na nieprzekształconych zmiennych.

    Identyfikacja outlierów w kontekście tej relacji również ma tutaj sens dopiero po logarytmizacji, czyli należy jeszcze koniecznie spojrzeć na wykres rozrzutu pomiędzy zlogarytmizowanymi zmiennymi.

  • Mariusz Trejtowicz
    Wpis na grupie SPSS w temacie czytanie danych spss *.sav w innych aplikacjach
    13.12.2012, 16:06

    Tutaj znajdziesz namiary na API i dokumentację:
    http://www-01.ibm.com/support/docview.wss?uid=swg21486986

    To ta sama biblioteka, która jest wykorzystywana w skrypcie Pythona z linków Macieja.

  • Mariusz Trejtowicz
    Wpis na grupie SPSS w temacie Regresja wielomianowa logistyczna
    20.11.2012, 04:33

    Nie udało mi się wywołać prostestu, że tego w NOMREG zrobić nie można? Bo nie można. Można wybrać dowolną grupę odniesienia, ale nie można przeprowadzić porównań w inny sposób, niż porównując do wybranej grupy.

    A tymczasem bardzo często warto byłoby inaczej przeprowadzić porównania. Być może np. budując model preferencji politycznych lepiej byłoby analizować w kolejności:
    - co sprzyja głosowaniu na PiS, zamiast na PO,
    - co sprzyja głosowaniu na SLD zamiast na PiS lub PO,
    - co sprzyja głosowaniu na PSL zamiast na PiS, PO lub SLD?
    Konstruując w ten sposób model dodajemy do analizy, coś, co zwykle jest przemilczywane: założenie przyczynowe, że właśnie w ten sposób wygląda drzewo decyzyjne dla decyzji wyborczych. Konstruując model w inny sposób również jakieś (inne) założenie przyczynowe do analizy wkładamy. Na przykład, że podejmując decyzję wyborczą albo głosuję na partię rządzącą, albo - jeśli mi to nie odpowiada - niezależnie oceniam kolejne alternatywy.

    Nie możemy jednak takiej analizy wykonać w multinomial logistic regression (polskie tłumaczenie nie przejdzie mi przez usta, sens miałoby: wielonomialna lub wielopoziomowa, wielomianowa to pomysł transaltorski mniej więcej tak samo kreatywny, jak ryż paraboliczny). No i co z tego, że nie możemy? Możemy przecież zrobić dwa lub więcej modeli binomialnych, skleić ze sobą tabelki a wyniki będą te same!

    Ale czy wyniki będą poprawne? Z perspektywy zgodności oszacowań parametrów oraz poprawnych wyników testów statystycznych i tak w tej całej zabawie (tj. w wielonomialnym modelu logistycznym) bardzo trudno będzie nie nadziać się na problem z overdispersion/heterogenicznością. Może też i inne założenia modelu nie są spełnione, ale ponieważ P_emocje jest ilościowa a grupy 1, 2 i 3 pewnie nie są równoliczne, overdispersion można obstawiać niemal w ciemno.

    W rezultacie prawie na pewno nie jest prawdą, że - cytuję - "Czyli wynik nieistotny statystycznie....". Rzecz w tym, że (nawet) tego nie wiadomo.

    To, co wiadomo, to że - i sformułuję to zdanie z najwyższą możliwą statystyczną precyzją, na jaką mnie stać - coś tak jakby te P_emocje jednak są skorelowane z prawdopodobieństwem trafienia do grupy 1. Tego żadne p, Waldy ani skomplikowane modele nie zmienią, a lepiej niż regresja logistyczna pokaże wykres słupkowy.

  • Mariusz Trejtowicz
    Wpis na grupie SPSS w temacie Regresja wielomianowa logistyczna
    16.11.2012, 00:38

    W modelu wystarczy inaczej przeprowadzić porównanie planowane dla zmiennej zależnej, niż domyślny dla NOMREG kontrast odniesienia, i już będzie istotny statystycznie wynik :)

    Innymi słowy: wraz ze spadkiem P_emocje rosną szanse, że badany trafi do grupy 2. lub 3. (porównanie 2+3 vs. 1; i wygląda na to, że spokojnie będzie to p<0,05) raczej niż do 1., natomiast szansa przynależności do grupy 2 względem 3 wydaje się taka sama na różnych poziomach P_emocje.

    A propos zwyczajów statystycznych w nauce: znacie ten tekst? Bardzo polecam:
    http://library.mpib-berlin.mpg.de/ft/gg/GG_Mindless_20...

  • Mariusz Trejtowicz
    Wpis na grupie R w temacie Etykiety na wykresach słupkowych w ggplot2
    1.10.2012, 16:50

    W ten sposób jak robisz ten wykres - nie jestem pewien.

    Ja używam geom_text:

    + geom_text(data=..., aes(x = xtext, y = ytext, label = paste(value,"%", sep = "")), ...)

    gdzie value to zmienna z wartościami prezentowanymi na wykresie (tu już sformatowana) a xtext i ytext to pozycje etykiet.


    Obrazek


    Tyle, że to jest wykres mozaikowy (i geom_rect), więc obie osie mam ilościowe. Nie jestem pewien, czy dla osi dyskretnej ggplot2 jakoś dziwnie nie poprzesuwa etykiet. I czy wrap_facet czegoś nie namiesza. Tak czy inaczej: ja bym kombinował z geom_text.

  • Mariusz Trejtowicz
    Wpis na grupie SPSS w temacie Wilokrotne odpowiedzi a chi-kwadrat
    3.09.2012, 04:44

    Testy zależności w przypadku zestawów odpowiedzi wielokrotnych to bardzo ciekawa sprawa.

    Jeśli wrzucić do tabeli osobno zmienne zerojedynkowe to rzeczywiście będzie n osobnych testów chi-kwadrat i stosowany będzie klasyczny test chi-kwadrat.

    Jeśli jednak użyć w SPSS w tabelach specjanych zestawu (lub zestawów) odpowiedzi wielokrotnych, chi-kwadrat liczony jest w inny sposób. Dokumentacja algorytmów z wersji 20, w której sprawdzam, wygląda niestety na niekompletną. Jak się jednak wydaje bazą do wyliczeń są rzeczywiście udzielone odpowiedzi (nie obserwacje), ale to nie wszystko. Wygląda na to, że hipoteza zerowa testu chi-kwadrat w wariancie dla wersji zmienna kategorialna x zestaw odpowiedzi wielokrotnych jest hipotezą o równoległości (w pewnym sensie) wzórów udzielanych odpowiedzi pomiędzy poziomami zmiennej kategorialnej. To znaczy: statystyka chi-kwadrat będzie równa 0 wtedy, gdy zarówno ilości udzielanych odpowiedzi rozkładają się proporcjonalne w tabeli (i to wystarczyłoby w niezmodyfikowanej wersji testu), jak i gdy częstości dla ilości udzielanych odpowiedzi w zestawie są takie same pomiędzy grupami.

    Może to skutkować np. taką zabawną sytuacją (zabawną zwłaszcza, gdy trzeba to wytłumaczyć odbiorcy), gdzie mamy tabelę:

    .......................Kupuje (jako zestaw):
    .......................Ketchupy........Musztardy
    Kobieta...........100.................100
    Mężczyzna......100.................100

    oraz istotny statystycznie test chi-kwadrat.

    Będzie tak, gdy wśród kobiet ketchup i musztarda okażą się być współkupowane, podczas gdy mężczyźni kupują albo ketchup albo musztardę :)

    Według mnie taka wersja testu chi-kwadrat dla zestawów odpowiedzi wielokrotnych jest w rezultacie mało użyteczna:
    - test nie ujawnia w pełni różnic pomiędzy wzorami odpowiedzi pomiędzy grupami bo różne wzory zależności mogą dawać te same rozkłady liczebności udzielanych odpowiedzi w grupach; jeśli rzeczywiście poszukujemy takich różnic, należałoby raczej porównać tabele korelacji zmiennych zero-jedynkowych pomiędzy grupami;
    - z drugiej strony: jeśli interesujący jest jedynie profil grupy (a nie zależności pomiędzy udzielanymi odpowiedziami na poziomie osób w grupach), w tabeli takiej jak powyżej w ogóle nie chcę mieć istotnego testu; zamiast chi-kwadrat będę pewnie wolał użyć jakiegoś rodzaju testu proporcji, np. żeby pokazać, że kobiety i mężczyźni nie różnią się pod względem penetracji kategorii musztard lub że penetracja ketczupów nie różni się od penetracji musztard w segmencie kobiet, itp.

  • Mariusz Trejtowicz
    Wpis na grupie Statystyka i jej okolice ;-) w temacie OC czy LOCF, która metoda jest bardziej wiarygodna w...
    18.07.2012, 12:53

    Obie są raczej niewiarygodne, chyba, że dropoutów jest mało. W bezpośrednim porównaniu wynik zależałby pewnie od ilości dropoutów, innych braków danych oraz od relacji w danych.
    Sugeruję używać modele mieszane.
    http://www.ncbi.nlm.nih.gov/pmc/articles/PMC2658028/

Dołącz do GoldenLine

Oferty pracy

Sprawdź aktualne oferty pracy

Aplikuj w łatwy sposób

Aplikuj jednym kliknięciem

Wyślij zaproszenie do