2015-05-05 5 views
0

есть ряд значений x и y, которые у меня есть (но не сама функция). Я хотел бы получить производную от неизвестной функции путем сплайн-интерполяции значений x и y (получение деривата ...). Мой пример EDITEDполучить производную от сплайновой интерполяции

x<-c(1,2,3,4,5,6,7,8,9,10) 
y<-c(0.1,0.3,0.8,0.9,0.91,0.93,0.95,0.98,0.99,0.999) 

возможно в R интерполировать и получить функциональную форму производной? Моя проблема заключается в том, что у меня есть только значения x и y функции cdf, но мне нужно получить функцию denisty. Поэтому я хочу получить производную с помощью сплайновой интерполяции ...

Причина вопроса: что мне нужно будет получить pdf этого cdf, поэтому я пытаюсь спланировать интерполировать значения xy cdf - обратите внимание, что это простой пример здесь, а не реальный cdf

+1

Мне очень непонятно, какой тип кривой вы хотите сделать здесь, но если вы хотите найти производные кубического сглаживающего сплайна, вы должны посмотреть страницу справки '? Predict.smooth.spline' – MrFlick

+0

@MrFlick привет .... нет У меня есть значения x и y cdf, которые я могу построить, но мне нужно будет получить pdf этого cdf (дериват), поэтому я пытаюсь спланировать интерполировать значения xy, которые у меня есть. это делает это более ясным или как я могу улучшить вопрос? – heinheo

+1

Значения, которые вы указали, не имеют никакого смысла как cdf. Cdf должен быть всегда увеличивающейся функцией с значениями y от 0 до 1. – MrFlick

ответ

0

Я не нашел функциональный форма ограниченных кубических сплайнов особенно трудно понять после чтения the explanation by Frank Harrell в его книге «Стратегии моделирования регрессии».

require(rms) 

df <- data.frame(x = c(1,2,3,4,5,6,7,8,9,10), 
        y =c(12,2,-3,5,6,9,8,10,11,10.5)) 
ols(y ~ rcs(x, 3), df) 
#-------------- 
Linear Regression Model 

ols(formula = y ~ rcs(x, 3), data = df) 

       Model Likelihood  Discrimination  
        Ratio Test   Indexes   
Obs  10 LR chi2  3.61 R2  0.303  
sigma 4.4318 d.f.   2 R2 adj 0.104  
d.f.  7 Pr(> chi2) 0.1646 g  2.811  

Residuals 

    Min  1Q Median  3Q  Max 
-8.1333 -1.1625 0.5333 0.9833 6.9000 

      Coef S.E. t Pr(>|t|) 
Intercept 5.0833 4.2431 1.20 0.2699 
x   0.0167 1.1046 0.02 0.9884 
x'  1.0000 1.3213 0.76 0.4738 
#---------- 

Пакета rms имеет нечетную систему для хранения краткой информации, которую необходимо сделать для некоторых из своих специального

dd <- datadist(df) 
options(datadist="dd") 
mymod <- ols(y ~ rcs(x, 3), df) 
# cannot imagine that more than 3 knots would make sense in such a small example 
Function(mymod) 
# --- reformatted to allow inspection of separate terms 
function(x = 5.5) {5.0833333+0.016666667* x + 
        1*pmax(x-5, 0)^3 - 
        2*pmax(x-5.5, 0)^3 + 
        1*pmax(x-6, 0)^3 } 
<environment: 0x1304ad940> 

Нулей в pmax функции в основном подавить любой вклад в общем из (5, 5,5 и 6 в этом случае)

Сравните три или четыре узла (и если вы хотите, чтобы гладкие кривые включали более мелкие зернистые данные ...- аргумент Predict):

png() 
plot(df$x,df$y) 
mymod <- ols(y ~ rcs(x, 3), df) 
lines(df$x, predict(mymod) ,col="blue") 
mymod <- ols(y ~ rcs(x, 4), df) 
lines(df$x, predict(mymod) ,col="red") 
dev.off() 

enter image description here

+0

Из того, что говорит книга, «ограниченные» кубические сплайны - это то, что раньше называлось «естественными» кубическими сплайнами, линейными вне диапазона данных. Это не подходит для аппроксимации cdf, так как cdf должен быть постоянным или асимптотически постоянным, выходящим в бесконечность в любом направлении. Кроме того, если не налагаются дополнительные ограничения, кубические сплайны не гарантируются как неубывающие. –

+0

Действительно, они не являются и определяют, что отношения являются чрезвычайно важным аспектом их практической ценности. Я на самом деле не заметил этого аспекта вопроса, и когда я построил предложенный пример, это, конечно, не выглядело как «CDF». Я использовал пакет 'cobs', когда мне нужны неубывающие сплайны с ограничением. –

+0

Да, постановка проблемы не очень ясна. –

0

Посмотрите на монотонных кубических сплайнов, которые неубывания по построению. Веб-поиск «монотонного кубического сплайна R» вызывает некоторые хиты. Я не использовал ни один из упомянутых пакетов.

+0

обновил мой пример, чтобы он выглядел как cdf. Я думаю, что вы очень правы с вами, комментируете выше ... Я искал найденный здесь, что здесь http://robjhyndman.com/software/monotonic-splines/, но это меня действительно не принимало ... – heinheo

+0

Предположительно, у вас будет проверить собранную модель для извлечения коэффициентов и вычислить производную от нее по общим строкам, описанным в ответе, данном BondedDust. –

+1

@heinheo Кстати, как вы получили список из 1000 пунктов cdf? Если у вас есть выражение для cdf, просто вычислите расхождение KL посредством численного интегрирования. –

Смежные вопросы