Załóżmy, że mam zmienną X
o nieznanym rozkładzie. W Mathematica, używając SmoothKernelDensity
funkcji, możemy mieć funkcję szacowanej gęstości. Ta szacowana funkcja gęstości może być używana wraz z PDF
funkcją do obliczania funkcji gęstości prawdopodobieństwa wartości takiej jak X
w postaci PDF[density,X]
założenia, że „gęstość” jest wynikiem SmoothKernelDensity
. Byłoby dobrze, gdyby w R. była taka funkcja. Tak to działa w Mathematica
http://reference.wolfram.com/mathematica/ref/SmoothKernelDistribution.html
Jako przykład (na podstawie funkcji Mathematica):
data = RandomVariate[NormalDistribution[], 100]; #generates 100 values from N(0,1)
density= SmoothKernelDistribution[data]; #estimated density
PDF[density, 2.345] returns 0.0588784
Tutaj możesz znaleźć więcej informacji o PDF:
http://reference.wolfram.com/mathematica/ref/PDF.html
Wiem, że mogę wykreślić jego funkcję gęstości za pomocą density(X)
w R i za pomocą ecdf(X)
mogę uzyskać jej empiryczną funkcję rozkładu skumulowanego. Czy można zrobić to samo w R na podstawie tego, co opisałem o Mathematica?
Każda pomoc i pomysł są mile widziane.
density(x)
daje oszacowanie pdf, jak już zauważyłeś, ale jego przydatność zależy od celu, dla którego chcesz mieć gęstość. Zauważ na przykład, że wariancja jest tendencyjna (wykonując splot, dodajesz wariancję jądra do wariancji danych, co samo w sobie jest obiektywnym oszacowaniem) - takie kompromisy wariancji odchylenia są wszechobecne. Istnieją inne alternatywy, takie jak na przykład szacowanie gęstości log-splajn - ale znowu, jego przydatność częściowo zależy od tego, co chcesz z tym zrobić.ecdf(X)
daje mi to równowartość percentyla 7,5, ale nie tego szukam.ecdf(b)-ecdf(a)
Odpowiedzi:
?density
zwraca uwagę, że używaapprox
już interpolacji liniowej;?approx
wskazuje, żeapproxfun
generuje odpowiednią funkcję:Używając
integrate
rozpoczynania od odpowiedniej odległości poniżej minimum w próbce (wielokrotność - powiedzmy 4 lub 5 - być może zastosowanej szerokości pasmadf
byłaby ogólnie wystarczająca dla odpowiedniej odległości), można uzyskać dobre przybliżenie cdf odpowiadającedf
.źródło
df(2.3)
daje to wartość szacowanej funkcji gęstości,x=2.3
ale to, coPDF
robi w Mathematica, daje obszar pod krzywą powyżejx=2.3
. Nie jestem do końca tego pewien. To tylko moje przypuszczenie. Czy możecie odtworzyć to, co zrobiłem w Mathematica?PDF
w Mathematica robi to, co opisałeś w swojej odpowiedzi (tj. Znajdowanie wartości funkcji gęstości dla danej wartości X), myślę, że dostałem swoją odpowiedź. Po prostu istnieje wiele zamieszania przy użyciu słów!PDF
mówi strona, robi, zwraca to samo, co ja, ale metody, których używa w swoich obliczeniach, w tym przypadku prawdopodobnie będą nieco dokładniejsze (dla takiego celu dodatkowa dokładność ma jednak niewielką wartość). W celu omówienia rozróżnienia prawdopodobieństwo / gęstość zobacz tutaj i tutaj .