niedziela, 26 grudnia 2010

Pytania statystyczne CD

Święta świętami, ale mam problem z obliczeniami i liczę na Waszą pomoc: 

Parametry modelu regresji logistycznej: exp(B) czyli Odds Ratio (OR). Pytanie: Jak standaryzować OR dla predyktorów typu covariate i typu fixed factor??? Chciałbym porównać realny efekt poszczególnych predyktorów z modelu i nie bardzo mam na to pomysł, bo czym innym jest OR=2 dla predyktora kategorycznego, który ma dwie kategorie, a czym innym dla predyktora ciągłego, który się zmienia w zakresie np. od 1 do 1000... Czy te wszystkie świetne programy nie generują takiego standaryzowanego ORa? Bo rozumiem, że na piechotę mogę to liczyć wg. wzoru: exp(B*zakres zmiennej)

dzieki, pozdrawiam
michał żmihorski

7 komentarzy:

  1. Michal,
    Co rozumiesz przez sformułowanie "realny efekt poszczegolnych predyktorow"? Ja zazwyczaj standaryzuje wszystkie zmienne niezależne przed analiza i wtedy otrzymuje B (i pozniej "Odd ratio"), ktore jasno pokazuja, ktora zmienna wywiera najwiekszy efekt na zmienna zalezna. Ale nie jestem pewien czy odpowiadam na pytanie :)
    Pozdro
    P

    OdpowiedzUsuń
  2. Rozumiem przez to zmianę wartości zmiennej zależnej gdy wartość predyktora zmienia się od najmniejszej do największej wartości.
    Myślę, że wartość B wcale nie pokazuje która zmienna ma największy wpływ na zmienną zależną. Bo B właściwe dla danego predyktora określa zmianę zmiennej zależnej wraz ze zmianą wartości danego predyktora o jedną wartość. Więc jak masz dwa predyktory o takim samym znaczeniu, ale jeden liczysz w kilometrach a drugi w metrach (i jeśli mają ten sam zakres zmienności) to wartość B będzie 1000 razy większa dla pierwszego... Więc zakres zmienności predyktora ma wpływ na B, niezależnie od jego ekologicznego impaktu
    dzięki, pozdr

    OdpowiedzUsuń
  3. No to w takim razie najlepiej jest zestandaryzowac dane przed analizą wyrazajac wszystkie zmienne niezalezne w wartosciach Sd i wtedy pozbywasz sie "efektu jednostek" w jakich mierzysz zmienne. Otrzymujesz wtedy pieknie, ktore zmienne maja najsilniejszy wpływ na zmienna zalezną bo ich B sa bezposrednio porównywalne. Z tego co wiem (i doswiadczylem na wlasnej skorze/danych) to standaryzacja tez robi dobrze wszystkich analizom regresyjnym i czasami nawet na oryginalnych danych analiza "wiesza sie", a na zestandaryzowanych smiga jak nalezy
    Pozdro
    PSkorka

    OdpowiedzUsuń
  4. Może ktoś pomoże, dostaję taki komunikat w R-ze:

    mój model w pakiecie lme4:
    b<-lmer(dzien.roku~factor(sex.bin)+factor(zone.bin)+factor(1|spec.bin), family=gaussian)

    komunikat:
    Error in validObject(.Object) :
    invalid class "mer" object: Slot Zt must by dims['q'] by dims['n']*dims['s']

    o co mu kurde chodzi???
    pozdr
    żmihor

    OdpowiedzUsuń
  5. nie wiem czy rozwiazales problem bo troche mnie nie bylo ;) ale jakby co... czy chodzi ci o zamienienie dwoch predyktorow na kategoryczne w modelu? bo ja w takiej sytuacji uzywam as.factor() - ale moze tutaj chodzi o cos innego? natomiast problem widze w tym ze lmer moze nie rozpoznac ostatniego czynnika; kompletna definicja efektu losowego to (1|u) a tutaj nawiasy nie sa z efektu tylko z funkcji factor() wiec on moze nie wiedziec co robic... error informuje ze design matrix dla efektow losowych ma zly wymiar

    OdpowiedzUsuń
  6. ok, dzięki, już z tym sobie dałem radę. Faktycznie chodziło chyba o 'as.factor', bo wszystkie były 'numeric'. Co do factor(1|...) to chyba nie komunikował problemu ale też nie jest to potrzebne :o)
    A przy okazji, jak już gadamy to mam kolejny problem (ostatnio od rana do wieczora siedzę w R, dziś na przykład czytając twój skrypt do MCMCglmm spaliłem bułkę w piekarniku :o).
    Oto problem:
    korzystając z komendy mcmcsamp (pakiet multilevel) liczyłem 95%CI dla parametrów lmer'a z rozkładem Gaussa, ale za cholerę nie chce tego zrobić dla rozkładu binomial, bo podobno (=forum R) nie jest to dostępne w tym pakiecie... czy masz pomysł w czym coś takiego policzyć?
    dzięki, pozdr
    żmihor

    OdpowiedzUsuń
  7. hmm, nigdy nie robilem tego tak posrednio, po prostu licze caly model dwumianowy w MCMCglmm i stamtad bardzo prosto moge za pomoca HPDinterval() dostac oszacowania CI. Mysle ze z robieniem tego tak posrednio moze byc problem, bo w lmer wyniki z rozkladu binomial sa na skali link function a nie wiem czy mcmcsamp czasem nie zamienia ich na skale danych (czyli uzywa cos jak inv.logit()) - i wtedy pojawia sie problem bo to co bylo ciagle na skali logit ma 2 piki na skali danych. ja sugeruje puszczenie model w MCMCglmm ;) ale sprawdze czy da sie to inaczej obejsc jakos ;) Wlasnie przygotowuje warsztaty stricte z MCMCglmm dla ludzi z Uppsali i powstanie na tym nowy skrypt juz tylko(i obszerniej) o MCMCglmm. jak skoncze wrzuce go moze na moja strone - moze odczaruje troche nieprzystepnosc MCMCglmm ;)

    OdpowiedzUsuń