2016-07-07 47 views
6

Mam problem z obliczeniem testu współczynnika wiarygodności w Pythonie 2.7.Test współczynnika wiarygodności w języku Python

Mam dwa modele i odpowiadające im wartości prawdopodobieństwa. Uważam, że reguła porównywania tego, czy model L2 jest lepszy niż model L1 (jeśli modele są ze sobą blisko powiązane), to spojrzenie na -2 * log (L2/L1).

Chciałbym następnie znaleźć wartość p dla odpowiadającej -2 * log (L2/L1) i powiązać ją z istotnością dla L2 jest preferowana względem L1. Oto co mam do tej pory:

import numpy as np 
from scipy.stats import chisqprob 

L1 = 467400. # log(likelihood) of my 1st fit 
L2 = 467414. # log(likelihood) of my 2nd fit 

LR = -2. * np.log(L2/L1) # LR = -5.9905e-05 

p = chisqprob(LR, 1) # L2 has 1 DoF more than L1 

print 'p: %.30f' % p # p = 1.000000000000000000000000000000 

five_sigma = 1 - scipy.special.erf(5/np.sqrt(2.))     :-) 
print '5 sigma: %.30f' % five_sigma 

five_sigma_check = 1 - 0.999999426696856        :-(
print 'Check : %.30f' % five_sigma_check 

Jednak biegnę na dwie kwestie:

  • Moja wartość p zbliża się 1, gdy będę tego spodziewać, aby być blisko 0.
  • Kiedy używam formuły w linii oznaczonej :-), aby znaleźć pięć sigma, na przykład, różni się od wartości podanej w literaturze - linia ta jest podświetlona za pomocą :-(. Moja wartość dla five_sigma_check pochodzi z here.

Czy ktoś może zaoferować jakąkolwiek poradę? Jestem stosunkowo nowy w świecie Pythona i statystyk.

Dzięki.

+0

to '' L1' i wiarogodności L2' lub zaloguj wiarogodności? Jeśli są to logarytmy, nie powinieneś brać ich logując się podczas obliczania LR –

+0

"L1" i "L2" to logi prawdopodobieństw. Rozumiem, co masz na myśli, zrobienie dziennika logów nie ma sensu ... –

Odpowiedz

5

Aby obliczyć wskaźnik wiarygodności danych logowania wiarogodności, należy użyć następującego wzoru:

def likelihood_ratio(llmin, llmax): 
    return(2*(llmax-llmin)) 


LR = likelihood_ratio(L1,L2) 


p = chisqprob(LR, 1) # L2 has 1 DoF more than L1 

print 'p: %.30f' % p 

# p: 0.000000121315450836607258011741 
+0

chisqprob już nie istnieje z scipy lub wcale mnie nie importuje. Wszystko inne w scipy działa (używając verison scipy-1.0.0). Czy istnieje inna metoda? – DNAngel