r语言 beta分布怎么做beta系数的vasicek调整

7142人阅读
R语言(54)
数理统计(18)
计量经济学(15)
& & & & & &Bootstrap方法在之前的博文里有提到过,简而言之,bootstrap方法就是重抽样。为什么需要bootstrap方法呢?因为bootstrap方法使得我们无需分布理论的知识也可以进行假设检验,获得置信区间。当数据来自未知分布,或者存在严重异常点,又或者样本量过小,没有参数方法解决问题时,bootstrap方法将是一个很棒的方法。
& & & & 对于回归分析而言,bootstrap无疑对回归的正态性假设做了极大地放松,使得回归推断越来越好用,也更具有说服力。
& & & & 从博文里可以看到,对于参数统计,特别是在已知分布的参数估计,bootstrap并没有多大的意义,它的结果和矩估计或者极大似然估计的结果并没有多大的差别(如果有差别会令人觉得很奇怪,不是吗?)
& & & & Boot包中提供了做bootstrap的两个十分好用的函数:boot(),boot.ci()。两者的调用格式与参数说明如下:
& & & & Boot()函数:
boot(data, statistic, R, sim =&ordinary&, stype = c(&i&, &f&, &w&),
&&&& strata= rep(1,n), L = NULL, m = 0, weights = NULL,
&&&&ran.gen = function(d, p) d, mle = NULL, simple = FALSE, ...,
&&&&parallel = c(&no&, &multicore&, &snow&),
&&&&ncpus = getOption(&boot.ncpus&, 1L), cl = NULL)
& & &参数说明:
Data:数据,可以是向量,矩阵,数据框
Statistic:统计量,如均值,中位数,回归参数,回归里的R^2等
R:调用统计量函数次数
& & & & &Boot()的返回值:
T0:从原始数据中得到的k个统计量的观测值
T:一个R*K的矩阵
& & & &Boot.ci()函数:
boot.ci(boot.out, conf = 0.95, type = &all&,
&&&&&&&&index = 1:min(2,length(boot.out$t0)), var.t0 = NULL,
&&&&&&&&var.t = NULL, t0 = NULL, t = NULL, L = NULL,
&&&&&&& h = function(t) t, hdot = function(t) rep(1,length(t)),
&&&&&&& hinv = function(t) t, ...)
& & & & 参数说明:
Boot.out():boot函数的返回值
Type:返回置信区间的类型,R中提供的有&norm& ,&basic&, &stud&,&perc&, &bca&
一、&&& 对单个统计量使用bootstrap方法
& & & & & 我们以R中的数据集women为例说明这个问题。数据集women列出了美国妇女的平均身高和体重。以体重为响应变量,身高为协变量进行回归,获取斜率项的95%置信区间。
&&& &R可以通过以下代码告诉我们答案:
library(boot)
beta&-function(formula,data,indices){
d&-data[indices,]
fit&-lm(formula,data=d)
return(fit$coef[2])
result&-boot(data=women,statistic=beta,R=500,formula=weight~height)
boot.ci(result)
& & & &输出结果:
BOOTSTRAPCONFIDENCE INTERVAL CALCULATIONS
Basedon 500 bootstrap replicates
boot.ci(boot.out= result)
Intervals:
Level&&&&& Normal&&&&&&&&&&&&& Basic&&&&&&&&
95%&& ( 3.218,&3.686 )&& ( 3.231,& 3.704 )&
Level&&&& Percentile&&&&&&&&&&& BCa&&&&&&&&&
95%&& ( 3.196,&3.669 )&& ( 3.199,& 3.675 )&
Calculationsand Intervals on Original Scale
&&&&&&& 他们与传统的估计差别大吗?我们来看看传统的区间估计:
confint(lm(weight~height,data=women))
& & & &输出结果:
&&&&&&&&&&&&&&&&&2.5 %&&&& 97.5 %
(Intercept) -100..690679
height&&&&&&&&3.253112&& 3.646888
& & & &可以看出,差别并不是很大,究其原因,无外乎正态性得到了很好的满足。我们看其qq图:
& & & 很清楚也很显然。Shapiro检验也说明了这样一个事实:
&&&&&&& Shapiro-Wilk normality test
data:& women$weight
W = 0.9604,p-value = 0.6986
& & & &我们在来看一个差别较大的例子:
. & & 考虑R中的数据集faithful。以waiting为响应变量,eruptions为协变量,建立简单回归模型y=α+βx+e。考虑β的95%置信区间。
& & & 重复上面的步骤,R代码如下:
result&-boot(data=faithful,statistic=beta,R=500,formula=waiting~eruptions)
boot.ci(result)
confint(lm(waiting~eruptions,data=faithful))
qqPlot(lm(waiting~eruptions,data=faithful))
& & & 输出结果:
BOOTSTRAPCONFIDENCE INTERVAL CALCULATIONS
Based on 500bootstrap replicates
boot.ci(boot.out= result)
Intervals :
Level&&&&& Normal&&&&&&&&&&&&& Basic&&&&&&&&
95%&& (10.08, 11.30 )&& (10.06, 11.26 )&
Level&&&& Percentile&&&&&&&&&&& BCa&&&&&&&&&
95%&& (10.20, 11.40 )&& (10.13, 11.35 )&
Calculationsand Intervals on Original Scale
Some BCaintervals may be unstable
& & & 传统估计:
&&&&&&&&&&&&&& 2.5 %&& 97.5 %
(Intercept)31.10
eruptions&& 10.32
& & & 差别有些大,我们来看看qq图:
& & & 正态性不是很好,shapiro检验告诉我们几乎不可能认为是正态的。
&&&&&&& Shapiro-Wilk normality test
data:& faithful$waiting
W = 0.9221,p-value = 1.016e-10
& & & 观察下图,我们也可以看到waiting不服从正态分布,那么他的95%的置信区间可以通过以下代码获得:
mean1&-function(data,indices){
d&-data[indices,]
fit&-mean(d$waiting)
return(fit)
results&-boot(data=faithful,statistic=mean1,R=1000)
boot.ci(results)
& & & &输出结果:
BOOTSTRAPCONFIDENCE INTERVAL CALCULATIONS
Based on 1000bootstrap replicates
boot.ci(boot.out= results)
Intervals :
Level&&&&& Normal&&&&&&&&&&&&& Basic&&&&&&&&
95%&& (69.28, 72.50 )&& (69.31, 72.53 )&
Level&&&& Percentile&&&&&&&&&&& BCa&&&&&&&&&
95%&& (69.26, 72.49 )&& (69.10, 72.44 )&
Calculationsand Intervals on Original Scale
& & & & 与传统方法比较
t.test(faithful$waiting)$conf.int
& & & & 可见估计的稳健性。
二、&& 对多个统计量使用bootstrap方法
& & & &我们考虑博文二中的例子,获取一个统计向量(四个回归系数)的95%置信区间。
&&&&&& 首先,创建一个返回回归系数向量的函数:
betas&-function(formula,data,indices){
d&-data[indices,]
fit&-lm(formula,data=d)
return(fit$coef)
& & & &然后自助抽样500次:
results&-boot(data=states,statistic=betas,R=500,formula=Murder~.)
print(results)
& & & &输出结果:
ORDINARYNONPARAMETRIC BOOTSTRAP
boot(data= states, statistic = betas, R = 500, formula = Murder ~ &.)
BootstrapStatistics :
&&&&&&& original&&&&&&& bias&&&&&&std. error
t1*&1. &&8. &5.305460e+00
t2*&0.& &2.&8.
t3*&4. &-1. &8.
t4*&0. &-1. &9.
t5*&0.& -1. &1.
& & & & & 当对多个统计量自助抽样时,需要添加一个索引参数,指明plot(),boot.ci()函数所分析对象。如下列代码用于绘制人口结果:
plot(results,index=2)
& & & & 输出结果:
& & & &95%置信区间:
boot.ci(results,type=&bca&,index=2)
boot.ci(results,type=&bca&,index=3)
boot.ci(results,type=&bca&,index=4)
& & & &输出结果:
&boot.ci(results,type=&bca&,index=2)
BOOTSTRAPCONFIDENCE INTERVAL CALCULATIONS
Basedon 500 bootstrap replicates
boot.ci(boot.out= results, type = &bca&, index = 2)
Intervals:
Level&&&&&& BCa&&&&&&&&&
95%&& ( 0.4 )&
Calculationsand Intervals on Original Scale
&boot.ci(results,type=&bca&,index=3)
BOOTSTRAPCONFIDENCE INTERVAL CALCULATIONS
Basedon 500 bootstrap replicates
boot.ci(boot.out= results, type = &bca&, index = 3)
Intervals:
Level&&&&&& BCa&&&&&&&&&
95%&& ( 2.284,&5.587 )&
Calculationsand Intervals on Original Scale
SomeBCa intervals may be unstable
&boot.ci(results,type=&bca&,index=4)
BOOTSTRAPCONFIDENCE INTERVAL CALCULATIONS
Basedon 500 bootstrap replicates
boot.ci(boot.out= results, type = &bca&, index = 4)
Intervals:
Level&&&&&& BCa&&&&&&&&&
95%&& (-0.6 )&
Calculationsand Intervals on Original Scale
三、&&& 残差法。
& & & & & Boot包中给出的办法都是使用成对的bootstrap。结果较为稳健。但我们也可以使用残差法对有固定水平的预测变量做估计。
& & & & & 算法如下:
& & & & 1、 先由观测数据拟合回归模型
& & & &2、 然后获得响应与残差
& & & &3、 从拟合残差集合中有放回随机抽取得到bootstrap残差集合
& & & &4、 生成一个伪数据集,对x回归伪数据集,获得bootstrap参数估计beta
& & & &5、 重复多次,得到beta的经验分布,做推断或估计
& & & & &我以women数据集为例,利用残差法说明回归系数显著不为0.R代码如下:
lm.reg&-lm(weight~height,data=women)
y.fit&-predict(lm.reg)
y.res&-residuals(lm.reg)
y.bootstrap&-rep(1,15)
datap&-rep(0,100)
dataq&-rep(0,100)
for(pin 1:100){
for(iin 1:15){
res&-sample(y.res,1,replace=TRUE)
y.bootstrap[i]&-y.fit[i]+res
datap[p]&-lm(y.bootstrap~women$height)$coef[1]
dataq[p]&-lm(y.bootstrap~women$height)$coef[2]
ecdf(datap)
ecdf(dataq)
& & & & &输出的结果
ecdf(datap)#x[1:100]= -104.56, -99.192, -97.884,& ...,-75.389, -72.604
ecdf(dataq)#x[1:100]= 3.8, 3.2845,& ...,& 3.625, 3.7125
& & & &显然结论是对的,其95%的置信区间使用分位数法有:
A&-ecdf(datap)
B&-ecdf(dataq)
quantile(A,probs=c(0.025,0.975))
quantile(B,probs=c(0.025,0.975))
& & & & 输出结果:
& quantile(A,probs=c(0.025,0.975))
&&&&2.5%& &&&&&&97.5%
-96.95054 &&&-75.22924
& quantile(B,probs=c(0.025,0.975))
&&&2.5%&& &&&&&97.5%
3.264777 &&&3.595554
& & & & & 这次介绍遗留了两个有价值的问题:1、初始样本多大?2、应该重复多少次?第一个问题,没有简单的答案,但有一点是肯定的,bootstrap不会提供比初始样本更多的信息,初始信息的收集仍旧十分重要。第二个问题在计算机资源普及的今天,多做一些没有太大的坏处,但是monte carlo方法及方差缩减技术将是你需要学习的。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:262267次
积分:3156
积分:3156
排名:第7577名
原创:53篇
评论:141条
(3)(4)(5)(1)(2)(2)(4)(4)(1)(6)(2)(2)(3)(2)(5)(4)(7)10326人阅读
数据挖掘(12)
R语言(54)
& & &最近在学习数据挖掘,对数据挖掘中的算法比较感兴趣,打算整理分享一下学习情况,顺便利用R来实现一下数据挖掘算法。
& & &数据挖掘里我打算整理的内容有:分类,聚类分析,关联分析,异常检测四大部分。其中分类算法主要介绍:K-近邻算法,决策树算法,朴素贝叶斯算法,支持向量机,神经网络,logistic回归。
& & 写这份学习笔记主要以学校data mining课程的课件为主,会参考一堆的baidu,一堆的google,一堆的blog,一堆的book以及一堆乱七八糟的资料,由于精力有限,恕不能一一列出,如果有认为有侵权行为欢迎与我联系,保证及时删除。
& & 这篇文章是我博客数据挖掘系列的第一篇文章,介绍分类算法中最基本的算法——k近邻算法。
算法一:K-近邻算法
& 原理及举例
& & & 工作原理:我们知道样本集中每一个数据与所属分类的对应关系,输入没有标签的新数据后,将新数据与训练集的数据对应特征进行比较,找出“距离”最近的k(通常k&20)数据,选择这k个数据中出现最多的分类作为新数据的分类。
算法描述:
(1)&&&&&&计算已知类别数据及中的点与当前点的距离;
(2)&&&&&&按距离递增次序排序
(3)&&&&&&选取与当前点距离最小的k个点
(4)&&&&&&确定前K个点所在类别出现的频率
(5)&&&&&&返回频率最高的类别作为当前类别的预测
& & & & 距离计算方法有&euclidean&(欧氏距离),”minkowski”(明科夫斯基距离), &maximum&(切比雪夫距离), &manhattan&(绝对值距离),&canberra&(兰式距离), 或 &minkowski&(马氏距离)等.
& & & & 分析学的知识告诉我们Rn上范数之间是等价的,所以我们也没必要太过纠结选谁,毕竟范数之间都是可以相互控制的。
& & & & &这里我们使用最常见欧氏距离作为衡量标准,以鸢尾花数据集为例来说明K-近邻算法:
& & & & &鸢尾花数据集包含150个数据,测量变量为花瓣,花萼的长度与宽度,分类变量为setosa, versicolor, 和 virginica。
准备数据:
& & & & 为了了解数据,我们先通过作图分析,相关分析来看看数据分类指标的合理性,这一点十分重要,有助于减少分类指标中的噪声。
& & & & 从上图可以看出,我们通过这2个变量大致是可以把鸢尾花分类的,也就是说分类的特征变量选择是合理的,(同理可以分析另外2个,分类效果不如这两个,但大致上还是能区分的)当然我们也可以选择计算相关系数来看特征变量的合理性。
& & & & 我们很容易发现,数值差最大的属性对距离的影响最大,所以在特征值等权重的假定下,我们先得归一化特征值,计算公式为:
Newvalue=(oldvalue-min)/(max-min)
(注:网友@&指出归一化的提法不太合适,也的确如此,我们这里将本文的“归一化”理解为一种“标准化”就好,感谢@&的指正)
& & & & &R代码:
autonorm&-function(data){
min&-min(data)
max&-max(data)
for(i in 1:length(data))
data[i]&-(data[i]-min)/(max-min)
return(data)
data&-apply(as.matrix(iris[,1:4]),2,autonorm)
(之前的程序有误,已更正,感谢@&的指正)
& & & &得到了归一化后的数据集,下面计算距离。我们在这里取三个数据作为验证集来看看分类的效果,首先将验证集归一化:
x&-iris[13,1:4]
y&-iris[79,1:4]
z&-iris[100,1:4]
x&-(x-apply(iris[c(-13,-79,-100),1:4],2,min))/(apply(iris[c(-13,-79,-100),1:4],2,max)-apply(iris[c(-13,-79,-100),1:4],2,min))
y&-(y-apply(iris[c(-13,-79,-100),1:4],2,min))/(apply(iris[c(-13,-79,-100),1:4],2,max)-apply(iris[c(-13,-79,-100),1:4],2,min))
z&-(z-apply(iris[c(-13,-79,-100),1:4],2,min))/(apply(iris[c(-13,-79,-100),1:4],2,max)-apply(iris[c(-13,-79,-100),1:4],2,min))
& & & & 计算距离,仅以Z为例,运行代码:(k取5)
dis&-rep(0,length(data[,1]))
for(iin 1:length(data[,1]))
dis[i]&-sqrt(sum((z-data[i,1:4])^2))
table(data[order(dis)[1:5],5])
& & & & 从x,y,z的输出结果可以看到,分类完全正确,没有错误分类。
& & &值得一提的是,我们用同样的办法计算K=3时的情形,会发现没有出现误分类。这也就引出了一个值得思考的问题:k应该如何选取?k过小,噪声对分类的影响就会变得非常大,K过大,那么包含错误就理所当然,误分类也不足为奇。虽然这里我们对K的取值并未进行讨论,但在实际中,我们应该通过交叉验证的办法来确定k值。
& R语言内置函数kknn简介 & &&
& & && & & R语言里的kknn包也可以实现最邻近算法——使用kknn函数。
kknn(formula = formula(train),train, test, na.action = na.omit(),
& k= 7, distance = 2, kernel = &optimal&, ykernel = NULL, scale=TRUE,
& contrasts= c('unordered' = &contr.dummy&, ordered =&contr.ordinal&))
参数解释:
formula & & &一个回归模型,具体为:分类变量~特征变量&&&&&&&&&& &&
train & & & & & 训练集
test & & & & & &测试集
na.action & 缺失值处理,默认为去掉缺失值
k & & & & & & & &k值选择,默认为7
distance & &这个是明科夫斯基距离,p=2时为欧氏距离
其他参数 & &略
&&& 上面的鸢尾花例子使用kknn包可以实现(k=5):
library(kknn)
data(iris)
m &- dim(iris)[1]
val &- sample(1:m, size =round(m/3), replace = FALSE,
prob= rep(1/m, m))
iris.learn &- iris[-val,]
iris.valid &- iris[val,]
iris.kknn &- kknn(Species~.,iris.learn, iris.valid, distance = 5,
kernel= &triangular&)
summary(iris.kknn)
fit &- fitted(iris.kknn)
table(iris.valid$Species, fit)
&&&&& 这里我们的训练集选取更随机化,得到结果是:
& & & & & & & & & & & & & & & & fit
& & & & & & & setosa & versicolor & virginica
&setosa&&&&&&&& 12&&&&&&&&& 0 & & & & & & &0
&versicolor&&&&& 0&&&&&&&& 22 & & & & & & 0
&virginica & & & &0&&&&&&&&& 0 & & & & & & 16
&&&&&&& 分类完全正确。
&应用举例:手写数字识别
& & 下面我们来做一个规模大一些的数据处理,利用k-近邻实现一下数字的模式识别。这个例子来自《机器学习实战》,具体数据集已上传至百度云盘(点击下载)。数据为了简单起见,仅提供0~9,10个数字的识别。需要识别的数字你可以看做是被图像处理软件处理为了32*32的黑白图像。尽管文本格式储存图片不能够有效地利用存储空间,但是为了方便理解还是提供了这个文本版的图片数据。至于图像版本的数据,你可以找到《手写数字的光学识别》一文(登载于2010年的UCI机器学习资料库中)的数据集合,并下载它。
& & 完整的R实现:
setwd(&D:/R/data/digits/trainingDigits&)
names&-list.files(&D:/R/data/digits/trainingDigits&)
data&-paste(&train&,1:1934,sep=&&)
for(i in 1:length(names))
assign(data[i],as.matrix(read.fwf(names[i],widths=rep(1,32))))
dis&-function(datatest,datatrain,len){
distance&-rep(0,len)
for(i in 1:len)
distance[i]&-sqrt(sum((get(datatest)-get(datatrain[i]))^2))
return((distance))
judge&-function(test,data,names){
index&-rep(0:9,c(189,198,195,199,186,187,195,201,180,204))
di&-rep(0,1934)
di[1:1934]&-dis(test,data,length(names))
return(names(which.max(table(index[order(di)[1:5]]))))
setwd(&D:/R/data/digits/testDigits&)
name&-list.files(&D:/R/data/digits/testDigits&)
test&-paste(&test&,1:946,sep=&&)
for(i in 1:length(name))
assign(test[i],as.matrix(read.fwf(name[i],widths=rep(1,32))))
index1&-rep(0:9,c(87,97,92,85,114,108,87,96,91,89))
for(i in 1:946){
if(judge(test[i],data,names)!=index1[i])
error&-error+1
& & & & 运行结果:
& & & & &也就是说,使用5-近邻算法,误差率为2%,属于一个可以接受的范围。
& & &这里由于本人没有找到较好的批量导入数据的办法,所以代码有些复杂,也出现了hardcode和magicnumber的毛病,但是泛化也不是那么的复杂,所以也没再做更进一步的改进。希望读者告诉我如何解决R里导入批量数据的方法。
& & &其中有两个函数是我在之前的博客中没有使用过的,现在简单介绍如下:
& & &赋值函数assign:
& & & & & &assign(&x&, c(10.4, 5.6, 3.1, 6.4, 21.7))&与x &- c(10.4,5.6, 3.1, 6.4, 21.7)等价
& & 读取赋值函数的函数get:
& & & & & & a&- 1:4
& & & & & & assign(&a[1]&,2)
& & & & & & a[1]== 2&&&&&&&&& #FALSE
& & & & & &get(&a[1]&) == 2& &&#TRUE
& & 在R中,我没有找到求众数的函数,简单编写了一个names(which.max(table(index[order(di)[1:5]]))),这个函数有两个众数时会输出两个,所以K近邻为了保证多数投票法有用,麻烦仔细选择合理的k值。
& & 这里我在做训练集时并没有选择k值得过程(因为这个算法实在是太慢了,没有那个耐心)
& & 实际使用这个算法,执行效率相当的低下,每个距离的计算包含了1024个维度的浮点运算,总计900多次,还要为测试向量准备2M的存储空间。所以k决策树是你需要进一步了解的。
& & K决策树的种类也有不少,比如kd树,但是他们的问题就是k的选取总是一个麻烦的过程,kd树找最近邻是十分高效的,但是找k近邻,删除结点重新建树还是比较麻烦的。
Further reading:
& & JULY大神的《》
& & & & 本文之后,待写的几篇文章罗列如下:
算法二:决策树算法算法三:朴素贝叶斯算法算法四:支持向量机算法五:神经网络算法六:logistic回归
&(to be continue)
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:262270次
积分:3156
积分:3156
排名:第7577名
原创:53篇
评论:141条
(3)(4)(5)(1)(2)(2)(4)(4)(1)(6)(2)(2)(3)(2)(5)(4)(7)& 常用连续型分布介绍及R语言实现
常用连续型分布介绍及R语言实现
,涵盖了R的思想,使用,工具,创新等的一系列要点,以我个人的学习和体验去诠释R的强大。
R语言作为统计学一门语言,一直在小众领域闪耀着光芒。直到大数据的爆发,R语言变成了一门炙手可热的数据分析的利器。随着越来越多的工程背景的人的加入,R语言的社区在迅速扩大成长。现在已不仅仅是统计领域,教育,银行,电商,互联网….都在使用R语言。
要成为有理想的极客,我们不能停留在语法上,要掌握牢固的数学,概率,统计知识,同时还要有创新精神,把R语言发挥到各个领域。让我们一起动起来吧,开始R的极客理想。
关于作者:
张丹(Conan), 程序员Java,R,PHP,Javascript
weibo:@Conan_Z
转载请注明出处:
随机变量在我们的生活中处处可见,如每日天气,股价涨跌,彩票中奖等,这些事情都是事前不可预言其结果的,就算在相同的条件下重复进行试验,其结果未必相同。数学家们总结了这种规律,用概率分布来描述随机变量取值。
就算股价不能预测,但如果我们知道它的概率分布,那么有90%的可能我们可以猜出答案。
γ(伽玛)分布
weibull分布
β(贝塔)分布
χ?(卡方)分布
1. 正态分布
正态分布(Normal distribution)又名高斯分布(Gaussian distribution),是一个在数学、物理及工程等领域都非常重要的概率分布,在统计学的许多方面有着重大的影响力。
若随机变量X服从一个数学期望为μ、方差为σ^2的正态分布,记为N(μ,σ^2)。其概率密度函数为正态分布的期望值μ决定了其位置,其标准差σ决定了分布的幅度。因其曲线呈钟形,因此人们又经常称之为钟形曲线。我们通常所说的标准正态分布是μ = 0,σ = 1的正态分布。
1). 概率密度函数
set.seed(1)
x <- seq(-5,5,length.out=100)
y <- dnorm(x,0,1)
plot(x,y,col="red",xlim=c(-5,5),ylim=c(0,1),type='l',
xaxs="i", yaxs="i",ylab='density',xlab='',
main="The Normal Density Distribution")
lines(x,dnorm(x,0,0.5),col="green")
lines(x,dnorm(x,0,2),col="blue")
lines(x,dnorm(x,-2,1),col="orange")
legend("topright",legend=paste("m=",c(0,0,0,-2)," sd=", c(1,0.5,2,1)), lwd=1, col=c("red", "green","blue","orange"))
2). 累积分布函数
set.seed(1)
x <- seq(-5,5,length.out=100)
y <- pnorm(x,0,1)
plot(x,y,col="red",xlim=c(-5,5),ylim=c(0,1),type='l',
xaxs="i", yaxs="i",ylab='density',xlab='',
main="The Normal Cumulative Distribution")
lines(x,pnorm(x,0,0.5),col="green")
lines(x,pnorm(x,0,2),col="blue")
lines(x,pnorm(x,-2,1),col="orange")
legend("bottomright",legend=paste("m=",c(0,0,0,-2)," sd=", c(1,0.5,2,1)), lwd=1,col=c("red", "green","blue","orange"))
3). 分布检验
Shapiro-Wilk正态分布检验: 用来检验是否数据符合正态分布,类似于线性回归的方法一样,是检验其于回归曲线的残差。该方法推荐在样本量很小的时候使用,样本在3到5000之间。
该检验原假设为H0:数据集符合正态分布,统计量W为:
统计量W 最大值是1,越接近1,表示样本与正态分布匹配
p值,如果p-value小于显著性水平α(0.05),则拒绝H0
> set.seed(1)
> S shapiro.test(S)
Shapiro-Wilk normality test
W = 0.9988, p-value = 0.7256
结论: W接近1,p-value>0.05,不能拒绝原假设,所以数据集S符合正态分布!
Kolmogorov-Smirnov连续分布检验:检验单一样本是不是服从某一预先假设的特定分布的方法。以样本数据的累计频数分布与特定理论分布比较,若两者间的差距很小,则推论该样本取自某特定分布族。
该检验原假设为H0:数据集符合正态分布,H1:样本所来自的总体分布不符合正态分布。令F0(x)表示预先假设的理论分布,Fn(x)表示随机样本的累计概率(频率)函数.
统计量D为: D=max|F0(x) - Fn(x)|
D值越小,越接近0,表示样本数据越接近正态分布
p值,如果p-value小于显著性水平α(0.05),则拒绝H0
> set.seed(1)
> S ks.test(S, "pnorm")
One-sample Kolmogorov-Smirnov test
D = 0.0211, p-value = 0.7673
alternative hypothesis: two-sided
结论: D值很小, p-value>0.05,不能拒绝原假设,所以数据集S符合正态分布!
2. 指数分布
指数分布(Exponential distribution)用来表示独立随机事件发生的时间间隔,比如旅客进机场的时间间隔、中文维基百科新条目出现的时间间隔等等。
许多电子产品的寿命分布一般服从指数分布。有的系统的寿命分布也可用指数分布来近似。它在可靠性研究中是最常用的一种分布形式。指数分布是伽玛分布和weibull分布的特殊情况,产品的失效是偶然失效时,其寿命服从指数分布。
指数分布可以看作当weibull分布中的形状系数等于1的特殊分布,指数分布的失效率是与时间t无关的常数,所以分布函数简单。
1). 概率密度函数
其中λ > 0是分布的一个参数,常被称为率参数(rate parameter)。即每单位时间发生该事件的次数。指数分布的区间是[0,∞)。 如果一个随机变量X 呈指数分布,则可以写作:X ~ Exponential(λ)。
set.seed(1)
x<-seq(-1,2,length.out=100)
y<-dexp(x,0.5)
plot(x,y,col="red",xlim=c(0,2),ylim=c(0,5),type='l',
xaxs="i", yaxs="i",ylab='density',xlab='',
main="The Exponential Density Distribution")
lines(x,dexp(x,1),col="green")
lines(x,dexp(x,2),col="blue")
lines(x,dexp(x,5),col="orange")
legend("topright",legend=paste("rate=",c(.5, 1, 2,5)), lwd=1,col=c("red", "green","blue","orange"))
2). 累积分布函数
set.seed(1)
x<-seq(-1,2,length.out=100)
y<-pexp(x,0.5)
plot(x,y,col="red",xlim=c(0,2),ylim=c(0,1),type='l',
xaxs="i", yaxs="i",ylab='density',xlab='',
main="The Exponential Cumulative Distribution Function")
lines(x,pexp(x,1),col="green")
lines(x,pexp(x,2),col="blue")
lines(x,pexp(x,5),col="orange")
legend("bottomright",legend=paste("rate=",c(.5, 1, 2,5)), lwd=1, col=c("red", "green","blue","orange"))
3). 分布检验
Kolmogorov-Smirnov连续分布检验:检验单一样本是不是服从某一预先假设的特定分布的方法。以样本数据的累计频数分布与特定理论分布比较,若两者间的差距很小,则推论该样本取自某特定分布族。
该检验原假设为H0:数据集符合指数分布,H1:样本所来自的总体分布不符合指数分布。令F0(x)表示预先假设的理论分布,Fn(x)表示随机样本的累计概率(频率)函数.
统计量D为: D=max|F0(x) - Fn(x)|
D值越小,越接近0,表示样本数据越接近指数分布
p值,如果p-value小于显著性水平α(0.05),则拒绝H0
> set.seed(1)
> S ks.test(S, "pexp")
One-sample Kolmogorov-Smirnov test
D = 0.0387, p-value = 0.1001
alternative hypothesis: two-sided
结论: D值很小, p-value>0.05,不能拒绝原假设,所以数据集S符合指数分布!
3. γ(伽玛)分布
伽玛分布(Gamma)是著名的皮尔逊概率分布函数簇中的重要一员,称为皮尔逊Ⅲ型分布。它的曲线有一个峰,但左右不对称。
伽玛分布中的参数α,称为形状参数,β称为尺度参数。
伽玛函数为:
伽玛函数是阶乘在实数上的泛化。
1). 概率密度函数
set.seed(1)
x<-seq(0,10,length.out=100)
y<-dgamma(x,1,2)
plot(x,y,col="red",xlim=c(0,10),ylim=c(0,2),type='l',
xaxs="i", yaxs="i",ylab='density',xlab='',
main="The Gamma Density Distribution")
lines(x,dgamma(x,2,2),col="green")
lines(x,dgamma(x,3,2),col="blue")
lines(x,dgamma(x,5,1),col="orange")
lines(x,dgamma(x,9,1),col="black")
legend("topright",legend=paste("shape=",c(1,2,3,5,9)," rate=", c(2,2,2,1,1)), lwd=1, col=c("red", "green","blue","orange","black"))
2). 累积分布函数
set.seed(1)
x<-seq(0,10,length.out=100)
y<-pgamma(x,1,2)
plot(x,y,col="red",xlim=c(0,10),ylim=c(0,1),type='l',
xaxs="i", yaxs="i",ylab='density',xlab='',
main="The Gamma Cumulative Distribution Function")
lines(x,pgamma(x,2,2),col="green")
lines(x,pgamma(x,3,2),col="blue")
lines(x,pgamma(x,5,1),col="orange")
lines(x,pgamma(x,9,1),col="black")
legend("bottomright",legend=paste("shape=",c(1,2,3,5,9)," rate=", c(2,2,2,1,1)), lwd=1, col=c("red", "green","blue","orange","black"))
3). 分布检验
Kolmogorov-Smirnov连续分布检验: 检验单一样本是不是服从某一预先假设的特定分布的方法。以样本数据的累计频数分布与特定理论分布比较,若两者间的差距很小,则推论该样本取自某特定分布族。
该检验原假设为H0:数据集符合伽玛分布,H1:样本所来自的总体分布不符合伽玛分布。令F0(x)表示预先假设的理论分布,Fn(x)表示随机样本的累计概率(频率)函数.
统计量D为: D=max|F0(x) - Fn(x)|
D值越小,越接近0,表示样本数据越接近伽玛分布
p值,如果p-value小于显著性水平α(0.05),则拒绝H0
> set.seed(1)
> S ks.test(S, "pgamma", 1)
One-sample Kolmogorov-Smirnov test
D = 0.0363, p-value = 0.1438
alternative hypothesis: two-sided
结论: D值很小, p-value>0.05,不能拒绝原假设,所以数据集S符合shape=1伽玛分布!
检验失败:
> ks.test(S, "pgamma", 2)
One-sample Kolmogorov-Smirnov test
D = 0.3801, p-value < 2.2e-16
alternative hypothesis: two-sided
结论:D值不够小, p-value<0.05,拒绝原假设,所以数据集S符合shape=2伽玛分布!
4. weibull分布
weibull(韦伯)分布,又称韦氏分布或威布尔分布,是可靠性分析和寿命检验的理论基础。Weibull分布能被应用于很多形式,分布由形状、尺度(范围)和位置三个参数决定。其中形状参数是最重要的参数,决定分布密度曲线的基本形状,尺度参数起放大或缩小曲线的作用,但不影响分布的形状。
Weibull分布通常用在故障分析领域( field of failure analysis)中;尤其是它可以模拟(mimic) 故障率(failture rate)持续( over time)变化的分布。故障率为:
一直为常量(constant over time), 那么 α = 1, 暗示在随机事件中发生
一直减少(decreases over time),那么α < 1, 暗示"早期失效(infant mortality)"
一直增加(increases over time),那么α > 1, 暗示"耗尽(wear out)" - 随着时间的推进,失败的可能性变大
1). 概率密度函数
set.seed(1)
x<- seq(0, 2.5, length.out=1000)
y<- dweibull(x, 0.5)
plot(x, y, type="l", col="blue",xlim=c(0, 2.5),ylim=c(0, 6),
xaxs="i", yaxs="i",ylab='density',xlab='',
main="The Weibull Density Distribution")
lines(x, dweibull(x, 1), type="l", col="red")
lines(x, dweibull(x, 1.5), type="l", col="magenta")
lines(x, dweibull(x, 5), type="l", col="green")
lines(x, dweibull(x, 15), type="l", col="purple")
legend("topright", legend=paste("shape =", c(.5, 1, 1.5, 5, 15)), lwd=1,col=c("blue", "red", "magenta", "green","purple"))
2). 累积分布函数
set.seed(1)
x<- seq(0, 2.5, length.out=1000)
y<- pweibull(x, 0.5)
plot(x, y, type="l", col="blue",xlim=c(0, 2.5),ylim=c(0, 1.2),
xaxs="i", yaxs="i",ylab='density',xlab='',
main="The Weibull Cumulative Distribution Function")
lines(x, pweibull(x, 1), type="l", col="red")
lines(x, pweibull(x, 1.5), type="l", col="magenta")
lines(x, pweibull(x, 5), type="l", col="green")
lines(x, pweibull(x, 15), type="l", col="purple")
legend("bottomright", legend=paste("shape =", c(.5, 1, 1.5, 5, 15)), lwd=1, col=c("blue", "red", "magenta", "green","purple"))
3). 分布检验
Kolmogorov-Smirnov连续分布检验: 检验单一样本是不是服从某一预先假设的特定分布的方法。以样本数据的累计频数分布与特定理论分布比较,若两者间的差距很小,则推论该样本取自某特定分布族。
该检验原假设为H0:数据集符合weibull分布,H1:样本所来自的总体分布不符合weibull分布。令F0(x)表示预先假设的理论分布,Fn(x)表示随机样本的累计概率(频率)函数.
统计量D为: D=max|F0(x) - Fn(x)|
D值越小,越接近0,表示样本数据越接近weibull分布
p值,如果p-value小于显著性水平α(0.05),则拒绝H0
> set.seed(1)
> S ks.test(S, "pweibull",1)
One-sample Kolmogorov-Smirnov test
D = 0.0244, p-value = 0.5928
alternative hypothesis: two-sided
结论: D值很小, p-value>0.05,不能拒绝原假设,所以数据集S符合shape=1的weibull分布!
F-分布(F-distribution)是一种连续概率分布,被广泛应用于似然比率检验,特别是ANOVA中。F分布定义为:设X、Y为两个独立的随机变量,X服从自由度为k1的卡方分布,Y服从自由度为k2的卡方分布,这2 个独立的卡方分布被各自的自由度除以后的比率这一统计量的分布。即: 上式F服从第一自由度为k1,第二自由度为k2的F分布。
F分布的性质
它是一种非对称分布
它有两个自由度,即n1 -1和n2-1,相应的分布记为F( n1 –1, n2-1), n1 –1通常称为分子自由度, n2-1通常称为分母自由度
F分布是一个以自由度n1 –1和n2-1为参数的分布族,不同的自由度决定了F 分布的形状
F分布的倒数性质:Fα,df1,df2=1/F1-α,df1,df2[1]
1). 概率密度函数
B是Beta函数(beta function)
set.seed(1)
x<-seq(0,5,length.out=1000)
y<-df(x,1,1,0)
plot(x,y,col="red",xlim=c(0,5),ylim=c(0,1),type='l',
xaxs="i", yaxs="i",ylab='density',xlab='',
main="The F Density Distribution")
lines(x,df(x,1,1,2),col="green")
lines(x,df(x,2,2,2),col="blue")
lines(x,df(x,2,4,4),col="orange")
legend("topright",legend=paste("df1=",c(1,1,2,2),"df2=",c(1,1,2,4)," ncp=", c(0,2,2,4)), lwd=1, col=c("red", "green","blue","orange"))
2). 累积分布函数
I是不完全Beta函数
set.seed(1)
x<-seq(0,5,length.out=1000)
y<-df(x,1,1,0)
plot(x,y,col="red",xlim=c(0,5),ylim=c(0,1),type='l',
xaxs="i", yaxs="i",ylab='density',xlab='',
main="The F Cumulative Distribution Function")
lines(x,pf(x,1,1,2),col="green")
lines(x,pf(x,2,2,2),col="blue")
lines(x,pf(x,2,4,4),col="orange")
legend("topright",legend=paste("df1=",c(1,1,2,2),"df2=",c(1,1,2,4)," ncp=", c(0,2,2,4)), lwd=1, col=c("red", "green","blue","orange"))
3). 分布检验
Kolmogorov-Smirnov连续分布检验: 检验单一样本是不是服从某一预先假设的特定分布的方法。以样本数据的累计频数分布与特定理论分布比较,若两者间的差距很小,则推论该样本取自某特定分布族。
该检验原假设为H0:数据集符合F分布,H1:样本所来自的总体分布不符合F分布。令F0(x)表示预先假设的理论分布,Fn(x)表示随机样本的累计概率(频率)函数.
统计量D为: D=max|F0(x) - Fn(x)|
D值越小,越接近0,表示样本数据越接近F分布
p值,如果p-value小于显著性水平α(0.05),则拒绝H0
> set.seed(1)
> S ks.test(S, "pf", 1,1,2)
One-sample Kolmogorov-Smirnov test
D = 0.0113, p-value = 0.9996
alternative hypothesis: two-sided
结论: D值很小, p-value>0.05,不能拒绝原假设,所以数据集S符合df1=1, df2=1, ncp=2的F分布!
学生t-分布(Student's t-distribution),可简称为t分布。应用在估计呈正态分布的母群体之平均数。它是对两个样本均值差异进行显著性测试的学生t检定的基础。学生t检定改进了Z检定(Z-test),因为Z检定以母体标准差已知为前提。虽然在样本数量大(超过30个)时,可以应用Z检定来求得近似值,但Z检定用在小样本会产生很大的误差,因此必须改用学生t检定以求准确。
在母体标准差未知的情况下,不论样本数量大或小皆可应用学生t检定。在待比较的数据有三组以上时,因为误差无法压低,此时可以用变异数分析(ANOVA)代替学生t检定。
1). 概率密度函数
v 等于n - 1。 T的分布称为t-分布。参数\nu 一般被称为自由度。
γ 是伽玛函数。
set.seed(1)
x<-seq(-5,5,length.out=1000)
y<-dt(x,1,0)
plot(x,y,col="red",xlim=c(-5,5),ylim=c(0,0.5),type='l',
xaxs="i", yaxs="i",ylab='density',xlab='',
main="The T Density Distribution")
lines(x,dt(x,5,0),col="green")
lines(x,dt(x,5,2),col="blue")
lines(x,dt(x,50,4),col="orange")
legend("topleft",legend=paste("df=",c(1,5,5,50)," ncp=", c(0,0,2,4)), lwd=1, col=c("red", "green","blue","orange"))
2). 累积分布函数
v 等于n - 1。 T的分布称为t-分布。参数\nu 一般被称为自由度。
γ 是伽玛函数。
set.seed(1)
x<-seq(-5,5,length.out=1000)
y<-pt(x,1,0)
plot(x,y,col="red",xlim=c(-5,5),ylim=c(0,0.5),type='l',
xaxs="i", yaxs="i",ylab='density',xlab='',
main="The T Cumulative Distribution Function")
lines(x,pt(x,5,0),col="green")
lines(x,pt(x,5,2),col="blue")
lines(x,pt(x,50,4),col="orange")
legend("topleft",legend=paste("df=",c(1,5,5,50)," ncp=", c(0,0,2,4)), lwd=1, col=c("red", "green","blue","orange"))
3). 分布检验
Kolmogorov-Smirnov连续分布检验: 检验单一样本是不是服从某一预先假设的特定分布的方法。以样本数据的累计频数分布与特定理论分布比较,若两者间的差距很小,则推论该样本取自某特定分布族。
该检验原假设为H0:数据集符合T分布,H1:样本所来自的总体分布不符合T分布。令F0(x)表示预先假设的理论分布,Fn(x)表示随机样本的累计概率(频率)函数.
统计量D为: D=max|F0(x) - Fn(x)|
D值越小,越接近0,表示样本数据越接近T分布
p值,如果p-value小于显著性水平α(0.05),则拒绝H0
> set.seed(1)
> S ks.test(S, "pt", 1, 2)
One-sample Kolmogorov-Smirnov test
D = 0.0253, p-value = 0.5461
alternative hypothesis: two-sided
结论: D值很小, p-value>0.05,不能拒绝原假设,所以数据集S符合df1=1, ncp=2的T分布!
7. β(贝塔Beta)分布
贝塔分布(Beta Distribution)是指一组定义在(0,1)区间的连续概率分布,Beta分布有α和β两个参数α,β>0,其中α为成功次数加1,β为失败次数加1。
Beta分布的一个重要应该是作为伯努利分布和二项式分布的共轭先验分布出现,在机器学习和数理统计学中有重要应用。贝塔分布中的参数可以理解为伪计数,伯努利分布的似然函数可以表示为,表示一次事件发生的概率,它为贝塔有相同的形式,因此可以用贝塔分布作为其先验分布。
1). 概率密度函数
随机变量X服从参数为a, β,服从Beta分布
γ 是伽玛函数
set.seed(1)
x<-seq(-5,5,length.out=10000)
y<-dbeta(x,0.5,0.5)
plot(x,y,col="red",xlim=c(0,1),ylim=c(0,6),type='l',
xaxs="i", yaxs="i",ylab='density',xlab='',
main="The Beta Density Distribution")
lines(x,dbeta(x,5,1),col="green")
lines(x,dbeta(x,1,3),col="blue")
lines(x,dbeta(x,2,2),col="orange")
lines(x,dbeta(x,2,5),col="black")
legend("top",legend=paste("a=",c(.5,5,1,2,2)," b=", c(.5,1,3,2,5)), lwd=1,col=c("red", "green","blue","orange","black"))
2). 累积分布函数
I是正则不完全Beta函数
set.seed(1)
x<-seq(-5,5,length.out=10000)
y<-pbeta(x,0.5,0.5)
plot(x,y,col="red",xlim=c(0,1),ylim=c(0,1),type='l',
xaxs="i", yaxs="i",ylab='density',xlab='',
main="The Beta Cumulative Distribution Function")
lines(x,pbeta(x,5,1),col="green")
lines(x,pbeta(x,1,3),col="blue")
lines(x,pbeta(x,2,2),col="orange")
lines(x,pbeta(x,2,5),col="black")
legend("topleft",legend=paste("a=",c(.5,5,1,2,2)," b=", c(.5,1,3,2,5)), lwd=1,col=c("red", "green","blue","orange","black"))
3). 分布检验
Kolmogorov-Smirnov连续分布检验: 检验单一样本是不是服从某一预先假设的特定分布的方法。以样本数据的累计频数分布与特定理论分布比较,若两者间的差距很小,则推论该样本取自某特定分布族。
该检验原假设为H0:数据集符合Beta分布,H1:样本所来自的总体分布不符合Beta分布。令F0(x)表示预先假设的理论分布,Fn(x)表示随机样本的累计概率(频率)函数.
统计量D为: D=max|F0(x) - Fn(x)|
D值越小,越接近0,表示样本数据越接近Beta分布
p值,如果p-value小于显著性水平α(0.05),则拒绝H0
> set.seed(1)
> S ks.test(S, "pbeta",1,2)
One-sample Kolmogorov-Smirnov test
D = 0.0202, p-value = 0.807
alternative hypothesis: two-sided
结论: D值很小, p-value>0.05,不能拒绝原假设,所以数据集S符合shape1=1, shape2=2的Beta分布!
8. χ?(卡方)分布
若n个相互独立的随机变量ξ?、ξ?、……、ξn ,均服从标准正态分布(也称独立同分布于标准正态分布),则这n个服从标准正态分布的随机变量的平方和构成一新的随机变量,其分布规律称为χ?分布(chi-square distribution)。其中参数n称为自由度,自由度不同就是另一个χ?分布,正如正态分布中均值或方差不同就是另一个正态分布一样。
1). 概率密度函数
γ 是伽玛函数
set.seed(1)
x<-seq(0,10,length.out=1000)
y<-dchisq(x,1)
plot(x,y,col="red",xlim=c(0,5),ylim=c(0,2),type='l',
xaxs="i", yaxs="i",ylab='density',xlab='',
main="The Chisq Density Distribution")
lines(x,dchisq(x,2),col="green")
lines(x,dchisq(x,3),col="blue")
lines(x,dchisq(x,10),col="orange")
legend("topright",legend=paste("df=",c(1,2,3,10)), lwd=1, col=c("red", "green","blue","orange"))
2). 累积分布函数
γ 是伽玛函数
set.seed(1)
x<-seq(0,10,length.out=1000)
y<-pchisq(x,1)
plot(x,y,col="red",xlim=c(0,10),ylim=c(0,1),type='l',
xaxs="i", yaxs="i",ylab='density',xlab='',
main="The Chisq Cumulative Distribution Function")
lines(x,pchisq(x,2),col="green")
lines(x,pchisq(x,3),col="blue")
lines(x,pchisq(x,10),col="orange")
legend("topleft",legend=paste("df=",c(1,2,3,10)), lwd=1, col=c("red", "green","blue","orange"))
3). 分布检验
Kolmogorov-Smirnov连续分布检验: 检验单一样本是不是服从某一预先假设的特定分布的方法。以样本数据的累计频数分布与特定理论分布比较,若两者间的差距很小,则推论该样本取自某特定分布族。
该检验原假设为H0:数据集符合卡方分布,H1:样本所来自的总体分布不符合卡方分布。令F0(x)表示预先假设的理论分布,Fn(x)表示随机样本的累计概率(频率)函数.
统计量D为: D=max|F0(x) - Fn(x)|
D值越小,越接近0,表示样本数据越接近卡方分布
p值,如果p-value小于显著性水平α(0.05),则拒绝H0
> set.seed(1)
> S ks.test(S, "pchisq",1)
One-sample Kolmogorov-Smirnov test
D = 0.0254, p-value = 0.5385
alternative hypothesis: two-sided
结论: D值很小, p-value>0.05,不能拒绝原假设,所以数据集S符合df=1的卡方分布!
9. 均匀分布
均匀分布(Uniform distribution)是均匀的,不偏差的一种简单的概率分布,分为:离散型均匀分布与连续型均匀分布。
1). 概率密度函数
set.seed(1)
x<-seq(0,10,length.out=1000)
y<-dunif(x,0,1)
plot(x,y,col="red",xlim=c(0,10),ylim=c(0,1.2),type='l',
xaxs="i", yaxs="i",ylab='density',xlab='',
main="The Uniform Density Distribution")
lines(x,dnorm(x,0,0.5),col="green")
lines(x,dnorm(x,0,2),col="blue")
lines(x,dnorm(x,-2,1),col="orange")
lines(x,dnorm(x,4,2),col="purple")
legend("topright",legend=paste("m=",c(0,0,0,-2,4)," sd=", c(1,0.5,2,1,2)), lwd=1, col=c("red", "green","blue","orange","purple"))
2). 累积分布函数
set.seed(1)
x<-seq(0,10,length.out=1000)
y<-punif(x,0,1)
plot(x,y,col="red",xlim=c(0,10),ylim=c(0,1.2),type='l',
xaxs="i", yaxs="i",ylab='density',xlab='',
main="The Uniform Cumulative Distribution Function")
lines(x,punif(x,0,0.5),col="green")
lines(x,punif(x,0,2),col="blue")
lines(x,punif(x,-2,1),col="orange")
legend("bottomright",legend=paste("m=",c(0,0,0,-2)," sd=", c(1,0.5,2,1)), lwd=1, col=c("red", "green","blue","orange","purple"))
3). 分布检验
Kolmogorov-Smirnov连续分布检验: 检验单一样本是不是服从某一预先假设的特定分布的方法。以样本数据的累计频数分布与特定理论分布比较,若两者间的差距很小,则推论该样本取自某特定分布族。
该检验原假设为H0:数据集符合均匀分布,H1:样本所来自的总体分布不符合均匀分布。令F0(x)表示预先假设的理论分布,Fn(x)表示随机样本的累计概率(频率)函数.
统计量D为: D=max|F0(x) - Fn(x)|
D值越小,越接近0,表示样本数据越接近均匀分布
p值,如果p-value小于显著性水平α(0.05),则拒绝H0
> set.seed(1)
> S ks.test(S, "punif")
One-sample Kolmogorov-Smirnov test
D = 0.0244, p-value = 0.5928
alternative hypothesis: two-sided
结论: D值很小, p-value>0.05,不能拒绝原假设,所以数据集S符合均匀分布!
在我们掌握了,这几种常用的连续型分布后,我们就可以基于这些分布来建模了,很多的算法模型就能解释通了!!
转载请注明出处:
This entry was posted in
Pingback: ()
Pingback: ()
Designed by}

我要回帖

更多关于 r语言 相关系数矩阵图 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信