R语言bootstrap运行及r语言输入自定义矩阵函数编制求助

6858人阅读
R语言(54)
数理统计(18)
一、EM算法
& & & EM算法是一种在观测到数据后,用迭代法估计未知参数的方法。可以证明EM算法得到的序列是稳定单调递增的。这种算法对于截尾数据或参数中有一些我们不感兴趣的参数时特别有效。
&& EM算法的步骤为:
&&&&&& E-step(求期望):在给定y及theta=theta(i)的条件下,求关于完全数据对数似然关于潜在变量z的期望
&&&&&& M-step(求极值):求上述期望关于theta的最大值theta(i+1)
&& 重复以上两步,直至收敛即可得到theta的MLE。
& &从上面的算法我们可以看到对于一个参数的情况,EM仅仅只是求解MLE的一个迭代算法。M-step做得就是optimize函数做得事情。对于EM算法,我们也没有现成的求解函数(这个是自然的),我们一样可以通过人机交互的办法处理。
先举一个一元的例子:
& & & & & &设一次实验可能有4个结果,发生概率分别为0.5+theta/4, 0.25-theta/4 ,0.25-theta/4 ,theta/4.其中theta在0,1之间。现进行了197次实验,结果发生的次数分别为:125,18,20,34,求theta的MLE。
& & & & & &计算出theta(i+1)=(195theta(i)+68)/(197theta(i)+144)
& & & & & &为什么是这个结果,请翻阅王兆军《数理统计讲义》p43-p44
& & & & & 我们用简单的循环就可以解决这个问题,程序及结果如下:
&fun&-function(error=1e-7){
+theta&-0.5
+while(T){
+k&-k+1
+theta[k]&-(159*theta[k-1]+68)/(197*theta[k-1]+144)
+if(abs(theta[k]-theta[k-1])&error) break
+list(theta&-theta[k],iter&-k)
[1]0.6268215
& & & & &我们再看一个二元的简单例子:
& & & & &幼儿园里老师给a,b,c,d四个小朋友发糖吃,但老师有点偏心,不同小朋友得到糖的概率不同,p(a)=0.5,p(b)=miu, p(c)=2*miu, p(d)=0.5-3*miu 如果确定了参数miu,概率分布就知道了。我们可以通过观察样本数据来推测参数知道c和d二人得到的糖果数,也知道a与b二人的糖果数之和为h,如何来估计出参数miu呢?前面我们知道了,如果观察到a,b,c,d就可以用ML估计出miu。反之,如果miu已知,根据概率期望 a/b=0.5/miu,又有a+b=h。由两个式子可得到
a=0.5*h/(0.5+miu)和b=miu*h/(0.5+miu)。
&# 已知条件
&# 随机初始两个未知量
&miu = runif(1,0,1/6)
&b = round(runif(1,1,20))
&nonstop=TRUE
&while (nonstop) {
+&&&& # E步骤,根据假设的miu来算b
+&&&& b = c(b,miu[iter]*h/(0.5+miu[iter]))
+&&&& print(b)
+&&&& # M步骤,根据上面算出的b再来计算miu
+&&&& miu = c(miu,(b[iter+1] +c)/(6*(b[iter+1]+c+d)))&
+&&&& print(miu)
+&&&& # 记录循环次数
+&&&& iter = iter + 1
+&&&& # 如果前后两次的计算结果差距很小则退出
+&&&& nonstop =((miu[iter]-miu[iter-1])&10^(-10))
[1]3..450531
&print(cbind(miu,b))
&&&&&&&&&&& miu&&&&&&& b
[1,]0..000000
[2,]0..450531
关于EM算法,及后续的发展GME的理论你可以在多数数理统计书上找到相关结论,也可以用类似办法编写函数处理它。
二、&&&&&&&自助法(bootstrap)
& & & & & Bootstrap法是以原始数据为基础的模拟抽样统计推断法,可用于研究一组数据的某统计量的分布特征,特别适用于那些难以用常规方法导出对参数的区间估计、假设检验等问题。“Bootstrap”的基本思想是:在原始数据的围内作有放回的再抽样,样本含量仍为n,原始数据中每个观察单位每次被抽到的概率相等,为1,…,n,所得样本称为bootstrap样本。于是可得到参数Η的一个估计值Η(b),这样重复若干次,记为B。设B=1000,就得到该参数的1000个估计值,则参数Η的标准误的bootstrap估计。简而言之就是:既然样本是抽出来的,那我何不从样本中再抽样。
& & & & 我们知道,如果分布函数F是已知的。在理论上就能够计算出参数的估计量的均方误差.若分布函数f未知,由格里文科-康特利定理知,当M充分大时,经验分布函数以概率1一致收敛到F。
& & & 我们举一例:利用bootstrap法估计标准正态分布随机变量的期望theta=E(X)
&gauss&-rnorm(100,2,6)
&for(i in 1:1000){
+boot[i]=mean(sample(gauss,replace=T))
&summary(boot)
&& Min. 1st Qu.&Median&&& Mean 3rd Qu.&&& Max.
&0.0& 2.0&2.0
&summary(gauss)
&& Min. 1st Qu.&Median&&& Mean 3rd Qu.&&& Max.
-13.380& -2.238&&2.570&& 2.296&& 6.861&16.230
[1]0.599087
&sd(gauss)/sqrt(100)
[1]0.5906275
结果分析:
估计的标准差
理论值
Bootstrap算法
& & & 需要指出的是bootstrap法不是为了提高估计量的精度.而是一般用来对估计量的方差进行估计。
关于Bootstrap方法,R中有相应的扩展包,你可以通过??bootstrap来查看有关内容
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:313147次
积分:3638
积分:3638
排名:第7169名
原创:53篇
评论:146条
(3)(4)(5)(1)(2)(2)(4)(4)(1)(6)(2)(2)(3)(2)(5)(4)(7)您的位置:
R语言-corr() 函数 (中文帮助)
corr {boot}
[转载请注明出处,胡桃木屋
”R语言中文帮助“工作室燕玲媛译]
Correlation Coefficient
Description(描述)
Calculates the weighted correlation given a data set and a set of weights.
Usage(用法)
corr(d, w = rep(1, nrow(d))/nrow(d))
Arguments(参数)
&&&& A matrix with two columns corresponding to the two variables whose correlation we wish to calculate.
&&& 一个两列的矩阵,每列对应着一个变量,计算两个对应变量的相关系数。
&&&& A vector of weights to be applied to each pair of observations. The default is equal weights for each pair. Normalization takes place within the function so sum(w) need not equal 1.
&&& 一个权重的向量被应用到每一对观察值上。默认为每一对都有平等的权重。此函数内部标准化,所以参数w的和可以不等于1。
Details(详细说明)
&&& This function finds the correlation coefficient in weighted form. This is often useful in bootstrap methods since it allows for numerical differentiation to get the empirical influence values. It is also necessary to have the statistic in this form to find ABC intervals.
&&& 此函数可以计算带权重形式的变量之间的相关系数。该函数在bootstrap方法中非常有用,因为它允许通过数值微分法获得经验影响值。此函数在息票剥离法中变得十分有用。在寻找变量间基本的差异,该函数也是同样重要的。
Value(返回值)
&&& The correlation coefficient between d[,1] and d[,2].
&&& 返回d[,1]与d[,2]之间的相关系数
See Also(另见)
[Package boot version 1.3-18 Index]
(4) | 阅读(34) | 评论(0)
(6216)(4091)(2752)(2410)(2292)(2248)(2247)(2202)(1759)(1748)
胡桃木屋版权所有@2013[转载]R语言与点估计学习笔记(EM算法与Bootstrap法)
12:56 1341人阅读 (0)
一、EM算法
EM算法是一种在观测到数据后,用迭代法估计未知参数的方法。可以证明EM算法得到的序列是稳定单调递增的。这种算法对于截尾数据或参数中有一些我们不感兴趣的参数时特别有效。
&& EM算法的步骤为:
E-step(求期望):在给定y及theta=theta(i)的条件下,求关于完全数据对数似然关于潜在变量z的期望
M-step(求极值):求上述期望关于theta的最大值theta(i+1)
重复以上两步,直至收敛即可得到theta的MLE。
&从上面的算法我们可以看到对于一个参数的情况,EM仅仅只是求解MLE的一个迭代算法。M-step做得就是optimize函数做得事情。对于EM算法,我们也没有现成的求解函数(这个是自然的),我们一样可以通过人机交互的办法处理。
先举一个一元的例子:
&设一次实验可能有4个结果,发生概率分别为0.5+theta/4, 0.25-theta/4
,0.25-theta/4
,theta/4.其中theta在0,1之间。现进行了197次实验,结果发生的次数分别为:125,18,20,34,求theta的MLE。
&计算出theta(i+1)=(195theta(i)+68)/(197theta(i)+144)
&为什么是这个结果,请翻阅王兆军《数理统计讲义》p43-p44
我们用简单的循环就可以解决这个问题,程序及结果如下:
&fun&-function(error=1e-7){
+theta&-0.5
+while(T){
+theta[k]&-(159*theta[k-1]+68)/(197*theta[k-1]+144)
+if(abs(theta[k]-theta[k-1])
+list(theta&-theta[k],iter&-k)
[1]0.6268215
& &我们再看一个二元的简单例子:
&幼儿园里老师给a,b,c,d四个小朋友发糖吃,但老师有点偏心,不同小朋友得到糖的概率不同,p(a)=0.5,p(b)=miu,
p(c)=2*miu, p(d)=0.5-3*miu
如果确定了参数miu,概率分布就知道了。我们可以通过观察样本数据来推测参数知道c和d二人得到的糖果数,也知道a与b二人的糖果数之和为h,如何来估
计出参数miu呢?前面我们知道了,如果观察到a,b,c,d就可以用ML估计出miu。反之,如果miu已知,根据概率期望
a/b=0.5/miu,又有a+b=h。由两个式子可得到
a=0.5*h/(0.5+miu)和b=miu*h/(0.5+miu)。
&# 已知条件
&# 随机初始两个未知量
&miu = runif(1,0,1/6)
&b = round(runif(1,1,20))
&nonstop=TRUE
&while (nonstop) {
# E步骤,根据假设的miu来算b
b = c(b,miu[iter]*h/(0.5+miu[iter]))
# M步骤,根据上面算出的b再来计算miu
miu = c(miu,(b[iter+1]
+c)/(6*(b[iter+1]+c+d)))&
print(miu)
# 记录循环次数
iter = iter + 1
# 如果前后两次的计算结果差距很小则退出
nonstop =((miu[iter]-miu[iter-1])&10^(-10))
[1]3..450531
&print(cbind(miu,b))
&&&&&&&&&&&
miu&&&&&&&
[1,]0..000000
[2,]0..450531
关于EM算法,及后续的发展GME的理论你可以在多数数理统计书上找到相关结论,也可以用类似办法编写函数处理它。
二、&&&&&&&自助法(bootstrap)
Bootstrap法是以原始数据为基础的模拟抽样统计推断法,可用于研究一组数据的某统计量的分布特征,特别适用于那些难以用常规方法导出对参数的区间
估计、假设检验等问题。“Bootstrap”的基本思想是:在原始数据的围内作有放回的再抽样,样本含量仍为n,原始数据中每个观察单位每次被抽到的概
率相等,为1,…,n,所得样本称为bootstrap样本。于是可得到参数Η的一个估计值Η(b),这样重复若干次,记为B。设B=1000,就得到该
参数的1000个估计值,则参数Η的标准误的bootstrap估计。简而言之就是:既然样本是抽出来的,那我何不从样本中再抽样。
我们知道,如果分布函数F是已知的。在理论上就能够计算出参数的估计量的均方误差.若分布函数f未知,由格里文科-康特利定理知,当M充分大时,经验分布函数以概率1一致收敛到F。
我们举一例:利用bootstrap法估计标准正态分布随机变量的期望theta=E(X)
&gauss&-rnorm(100,2,6)
&for(i in 1:1000){
+boot[i]=mean(sample(gauss,replace=T))
&summary(boot)
&& Min. 1st
Qu.&Median&&&
Mean 3rd Qu.&&&
&0.3345&1.9540&
2.3230&2.7020& 4.2330
&summary(gauss)
&& Min. 1st
Qu.&Median&&&
Mean 3rd Qu.&&&
-2.238&&2.570&&
6.861&16.230
[1]0.599087
&sd(gauss)/sqrt(100)
[1]0.5906275
结果分析:
bootstrap算法
需要指出的是bootstrap法不是为了提高估计量的精度.而是一般用来对估计量的方差进行估计。
关于Bootstrap方法,R中有相应的扩展包,你可以通过??bootstrap来查看有关内容
原文地址:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。R语言学习系列09-自定义函数与apply函数族_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
R语言学习系列09-自定义函数与apply函数族
上传于||文档简介
&&R语言,自定义函数,函数调用,apply函数
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩4页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢}

我要回帖

更多关于 r语言bootstrap 的文章

更多推荐

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

点击添加站长微信