Я пытаюсь подогнать естественный локтевой сплайн к вероятностным данным (вероятности того, что случайная величина меньше определенных значений), чтобы получить кумулятивную функцию распределения, которая достаточно хорошо работает с использованием splinefun()
:
cutoffs <- c(-90,-60,-30,0,30,60,90,120)
probs <- c(0,0,0.05,0.25,0.5,0.75,0.9,1)
CDF.spline <- splinefun(cutoffs,probs, method="natural")
plot(cutoffs,probs)
curve(CDF.spline(x), add=TRUE, col=2, n=1001)
Однако затем я хотел бы использовать функцию плотности, то есть производную сплайна, для выполнения различных вычислений (например, для получения ожидаемого значения случайной величины).
Есть ли способ получить эту производную как функцию, а не просто вычислять дискретное количество точек с помощью splinefun(x, deriv=1
)?
Это довольно близко к тому, что я ищу , но, увы, этот пример не работает в версии R 2.15.0.
За исключением аналитического решения, какой самый чистый численный способ сделать это?
curvefoo<-curve(CDF.spline(x), add=TRUE, col=2, n=1001)
с последующим вычислением наклоновcurvefoo$y
противcurvefoo$x
? У вас должно быть достаточно хорошее разрешение, чтобы локальные линейные подгонки дали вам хороший вектор плотности. - person Carl Witthoft   schedule 11.10.2012splinefun
, потому что 'C_spline_eval' все еще явно был рядом... где-то. Так что изменение вызоваenvironment()
казалось хорошим началом. - person IRTFM   schedule 12.10.2012