Предположим, что у меня есть переменная, как X
с неизвестным распределением. В Mathematica, используя SmoothKernelDensity
функцию, мы можем получить оценочную функцию плотности. Эту оценочную функцию плотности можно использовать вместе с PDF
функцией для вычисления функции плотности вероятности значения, например, X
в PDF[density,X]
предположении, что «плотность» является результатом SmoothKernelDensity
. Было бы хорошо, если бы такая функция была в R. Вот как она работает в Mathematica.
http://reference.wolfram.com/mathematica/ref/SmoothKernelDistribution.html
В качестве примера (на основе функций Mathematica):
data = RandomVariate[NormalDistribution[], 100]; #generates 100 values from N(0,1)
density= SmoothKernelDistribution[data]; #estimated density
PDF[density, 2.345] returns 0.0588784
Здесь вы можете найти больше информации о PDF:
http://reference.wolfram.com/mathematica/ref/PDF.html
Я знаю, что могу построить ее функцию плотности, используя density(X)
в R, и используя ее, ecdf(X)
я могу получить ее эмпирическую кумулятивную функцию распределения. Можно ли сделать то же самое в R на основе того, что я описал в Mathematica?
Любая помощь и идея приветствуется.
density(x)
дает оценку PDF, как вы уже отметили, но его пригодность зависит от цели, для которой вы хотите иметь плотность. Обратите внимание, например, что дисперсия смещена вверх (при выполнении свертки вы добавляете дисперсию ядра к дисперсии данных, что само по себе является несмещенной оценкой) - такие компромиссы смещения дисперсии встречаются повсеместно. Существуют и другие альтернативы, такие как, например, оценка плотности лог-сплайнов, но, опять же, ее пригодность частично зависит от того, что вы хотите с ней делать.ecdf(X)
дает мне эквивалентный процентиль 7,5, но это не то, что я ищу.ecdf(b)-ecdf(a)
Ответы:
?density
указывает, что он уже используетapprox
линейную интерполяцию;?approx
указывает, чтоapproxfun
генерирует подходящую функцию:Используя
integrate
запуск с подходящего расстояния ниже минимума в образце (кратное, скажем, 4 или 5, используемой в полосе пропусканияdf
, как правило, подходит для соответствующего расстояния), можно получить хорошее приближение cdf, соответствующегоdf
,источник
df(2.3)
дает значение оценочной функции плотности при,x=2.3
но то, чтоPDF
делает в Mathematica, дает площадь под кривой вышеx=2.3
. Я не совсем уверен в этом. Это только мое предположение. Можете ли вы воспроизвести то, что я сделал в Mathematica?PDF
в Mathematica делает то, что вы описали в своем ответе (то есть нахождение значения функции плотности для данного значения X), то я думаю, что я получил свой ответ. Просто есть много путаницы при использовании слов!PDF
говорится на странице, она возвращает то же, что и я, но методы, которые она использует в своих расчетах в этом случае, вероятно, будут несколько более точными (однако для такой цели дополнительная точность не имеет большого значения). Для некоторого обсуждения различия вероятности / плотности, смотрите здесь и здесь .