首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用样条插值求导数

用样条插值求导数
EN

Stack Overflow用户
提问于 2015-05-06 02:02:46
回答 2查看 712关注 0票数 0

我有一系列的x和y值(但不是函数本身)。我想通过x和y值的样条插值得到未知函数的导数(得到导数...)。我的示例已编辑

代码语言:javascript
运行
复制
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中可以插值并得到导数的泛函形式吗?我的问题是,我只有一个cdf函数的x和y值,但需要获得概率密度function..so,我想通过样条插值获得导数。

这个问题的原因是,我需要获得该cdf的pdf,所以我尝试对cdf的xy值进行样条插值请注意,这是一个简单的示例,而不是真正的cdf。

EN

回答 2

Stack Overflow用户

发布于 2015-05-06 03:01:28

在读了the explanation by Frank Harrell的书“回归建模策略”后,我没有发现限制三次样条的函数形式特别难以掌握。

代码语言:javascript
运行
复制
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包有一个奇怪的系统,用于存储摘要信息,这些信息需要为它的一些特殊的

代码语言:javascript
运行
复制
 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>

当x值小于结点(在本例中为5、5.5和6)时,pmax函数中的零基本上抑制了项对总数的任何贡献。

比较三个结和四个结(如果您想要平滑的曲线,则在Predict中包含更细粒度的...-数据参数):

代码语言:javascript
运行
复制
 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()

票数 0
EN

Stack Overflow用户

发布于 2015-05-06 03:41:56

看看单调三次样条,它的构造是不减的。在网络上搜索“单调三次样条R”会找到一些结果。我没有用过上面提到的任何一个包。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30060106

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档