如何用R语言对一组样本数据进行拟合求出密度函数?

Python016

如何用R语言对一组样本数据进行拟合求出密度函数?,第1张

曲线拟合:(线性回归方法:lm)1、x排序2、求线性回归方程并赋予一个新变量z=lm(y~x+I(x^2)+...)3、plot(x,y)#做y对x的散点图4、lines(x,fitted(z))#添加拟合值对x的散点图并连线曲线拟合:(nls)lm是将曲线直线化再做回归,nls是直接拟合曲线。需要三个条件:曲线方程、数据位置、系数的估计值。如果曲线方程比较复杂,可以先命名一个自定义函数。例:f=function(x1, x2, a, b) {a+x1+x2^b} result=nls(x$y~f(x$x1, x$x2, a, b), data=x, start=list(a=1, b=2)) #x可以是数据框或列表,但不能是矩阵#对系数的估计要尽量接近真实值,如果相差太远会报错:“奇异梯度”summary(result) #结果包含对系数的估计和p值根据估计的系数直接在散点图上使用lines加曲线即可。曲线拟合:(局部回归)lowess(x, y=NULL, f = 2/3, iter = 3)#可以只包含x,也可使用x、y两个变量#f为窗宽参数,越大越平滑#iter为迭代次数,越大计算越慢loess(y~x, data, span=0.75, degree=2)#data为包含x、y的数据集;span为窗宽参数#degree默认为二次回归#该方法计算1000个数据点约占10M内存举例:x=seq(0, 10, 0.1)y=sin(x)+rnorm(101)#x的值必须排序plot(x,y) #做散点图lines(lowess(x,y)) #利用lowess做回归曲线lines(x,predict(loess(y~x))) #利用loess做回归曲线,predict是取回归预测值z=loess(y~x)lines(x, z$fit) #利用loess做回归曲线的另一种做法

最初我是在“ A genome-based model for adjusting radiotherapy dose (GARD): a retrospective, cohort-based study ”这篇文章中看到的一个图。

它形似一张提琴图,展示了来自不同类型疾病患者个体的GARD得分的分布,图中红色点代表了中位数。但与常规提琴图不同的地方在于,提琴图中还添加了密度信息,即数值分布更多区域颜色更为明显。尽管提琴图的宽度足以代表数值的分布区间了,颜色的添加使其更为丰富多彩。

本节内容,就让我来讲一下这种“密度提琴图”如何在R中绘制。

其实,如果从提琴图的角度出发,即首先绘制一个提琴图,然后设法在其中标识出密度,则该图是很难实现的。这点我深有体会,好几个人折腾了老半天也没能成功地在提琴图中设置密度颜色。

因此,我们需要换个角度思考该图的绘制方法。设想一下,既然要表示密度,那么首先不妨绘制一个密度分布图观测数据。

有没有什么感触呢?

对的没错,密度提琴图可以视为两张“相反方向”的密度分布图的叠加。因此,我们再绘制一个反方向的。

最后,将两张图组合在一起,就获得密度提琴图了,是不是?

同时,也计算各个变量的中位数,并以红点的形式标注在图中。

这样,密度提琴图就得到了。和常规的提琴图相比,它是不是更漂亮呢?

作为一种语言进行统计分析,R有一个随机数生成各种统计分布功能的综合性图书馆。R语言可以针对不同的分布,生成该分布下的随机数。其中有许多常用的个分布可以直接调用。

在R中各种概率函数都有统一的形式,即一套统一的前缀+分布函数名:

d 表示密度函数(density)。

p 表示分布函数(生成相应分布的累积概率密度函数)。

q 表示分位数函数,能够返回特定分布的分位数(quantile)。

r 表示随机函数,生成特定分布的随机数(random)。

扩展资料:

注意事项:

1、使用了错误大小写:help()是正确的,其他都是错误的。

2、不要忘记使用必要的引号:install.packages(“gclus”)。

3、在函数调用时,不要忘记使用括号:help()。

4、在Windous上,路径名中使用的是\。

5、R拥有许多用于存储数据的对象类型,包括标量、向量、矩阵、数组、数据框和列表。数据框是用来存储数据集的主要数据结构。

参考资料来源:百度百科-R语言

参考资料来源:百度百科-标准正态分布

参考资料来源:百度百科-散点图