Jeśli chodzi o dopasowanie danych do rozkładu skośno-normalnego, można obliczyć estymator maksymalnego prawdopodobieństwa na podstawie pierwszych zasad. Pierwsza uwaga: funkcja gęstości prawdopodobieństwa dla rozkładu normalnego skośnego z parametrem lokalizacji , parametrem skali i parametrem kształtu jestω αξωα
2)ωϕ ( x - ξω) Φ ( α ( x - ξω) )
gdzie to standardowa funkcja normalnej gęstości, a to standardowa normalna CDF. Zauważ, że gęstość ta należy do klasy opisanej w mojej odpowiedzi na to pytanie .Φ ( ⋅ )ϕ ( ⋅ )Φ ( ⋅ )
Prawdopodobieństwo logarytmiczne oparte na próbce niezależnych obserwacji z tego rozkładu wynosi:n
- n log( ω ) + ∑i = 1nlogϕ ( x - ξω) +logΦ ( α ( x - ξω) )
Faktem jest, że nie ma rozwiązania w formie zamkniętej dla tego MLE. Ale można to rozwiązać numerycznie. Na przykład, R
możesz zakodować funkcję prawdopodobieństwa jako (zauważ, że uczyniłem ją mniej kompaktową / wydajniejszą niż to możliwe, aby była całkowicie przejrzysta, jak to oblicza powyższą funkcję prawdopodobieństwa):
set.seed(2345)
# generate standard normal data, which is a special case
n = 100
X = rnorm(n)
# Calculate (negative) log likelihood for minimization
# P[1] is omega, P[2] is xi and P[3] is alpha
L = function(P)
{
# positivity constraint on omega
if( P[1] <= 0 ) return(Inf)
S = 0
for(i in 1:n)
{
S = S - log( dnorm( (X[i] - P[2])/P[1] ) )
S = S - log( pnorm( P[3]*(X[i] - P[2])/P[1] ) )
}
return(S + n*log(P[1]))
}
Teraz po prostu minimalizujemy liczbowo tę funkcję (tj. Maksymalizujemy prawdopodobieństwo). Możesz to zrobić bez konieczności obliczania pochodnych za pomocą algorytmu Simplex , który jest domyślną implementacją optim()
pakietu w R
.
Odnośnie do sposobu testowania skośności: Możemy jawnie przetestować skośność-normalną vs. normalną (ponieważ normalna jest submodelem), ograniczając i wykonując test współczynnika prawdopodobieństwa .α = 0
# log likelihood constraining alpha=0.
L2 = function(Q) L(c(Q[1],Q[2],0))
# log likelihood from the constrained model
-optim(c(1,1),L2)$value
[1] -202.8816
# log likelihood from the full model
-optim(c(1,1,1),L)$value
[1] -202.0064
# likelihood ratio test statistic
LRT = 2*(202.8816-202.0064)
# p-value under the null distribution (chi square 1)
1-pchisq(LRT,1)
[1] 0.1858265
Dlatego nie odrzucamy hipotezy zerowej, że (tzn. Brak pochylenia).α = 0
Tutaj porównanie było proste, ponieważ rozkład normalny był submodelem. W innych, bardziej ogólnych przypadkach, możesz porównać normalną skośność do innych rozkładów referencyjnych, porównując na przykład AIC (jak tutaj zrobiono ), jeśli używasz estymatorów maksymalnego prawdopodobieństwa we wszystkich konkurencyjnych atakach. Na przykład można dopasować dane według maksymalnego prawdopodobieństwa przy rozkładzie gamma i pod normą skośności i sprawdzić, czy dodatkowe prawdopodobieństwo uzasadnia dodatkową złożoność skośnej normalności (3 parametry zamiast 2). Możesz również rozważyć użycie jednego testu Kołmogorowa Smirnowa do porównania danych z najlepszym dopasowaniem z rodziny o skośnej normie.