关于数据挖掘:R语言Bootstrap百分位Bootstrap法抽样参数估计置信区间分析通勤时间和学生锻炼数据

40次阅读

共计 4146 个字符,预计需要花费 11 分钟才能阅读完成。

原文链接:http://tecdat.cn/?p=27505

y 本文展现了如何应用 R 构建 Bootstrap 自举置信区间的示例。还强调了 R 包 ggplot2 用于图形的用处。然而,在学习疏导程序和 R 语言时,学习如何在没有包的状况下从头开始利用 Bootstrap 程序有助于更好地了解 R 的工作原理并增强对 Bootstrap 的概念了解。

具备标准误差的自举置信区间

 

形容了如何通过构建一个以点估计为核心的区间来构建总体参数的置信区间,其误差幅度等于标准误差的两倍。在这里,咱们将通过利用 bootstrap 并从原始样本中对许多样本进行带放回抽样来预计标准误差的大小,每个样本与原始样本的大小雷同,计算每个样本的点估计值,并找到该散布的标准差疏导统计。

通勤工夫

对于 500 名通勤者样本的变量。
 

str(Cotlaa)

 

 

 

为了构建均匀通勤工夫的置信区间,咱们须要从原始样本中找到点估计(样本均值)。
 

tiean = with(Commta, mean(Time))

tiean

## \[1\] 29.11

为了找到标准误差,咱们将创立一个蕴含 1000 行(每个疏导样本一个)和 500 列(每个采样值一个,以匹配原始样本大小)的微小矩阵。而后咱们将应用 apply() 将 mean() 利用于矩阵的每一行。这种办法不同于作者 R 指南中应用 for 循环的示例,但咱们也能够稍后展现这种办法。
首先创立一个大矩阵来存储所有样本。
 

boot.ames = matrix(sale(Comnta$Tie, size = B * n, replace = TRUE),

B, n)

用密度图笼罩直方图来绘制不同的货色。在这里,ggplot() 须要一个带有输出数据的数据框,因而咱们应用 data.frame() 创立一个带有惟一感兴趣的变量的数据框
 

require(ggplot2)

ggplot(dtframeanT = boot.satitics),as(x=meaime)) +

geom_istram(binwih=0.25,aes(y=..ensity..)) +

geodnity(olor"red")

咱们看到了一个不太不对称的散布,或多或少呈钟形。该散布的标准差如下
 

tie.s= sd(bo.sattics)

tie.s

## \[1\] 0.9414

最初,构建置信区间。在这里,我将误差范畴向上舍入到小数点后一位,使其具备两位有效数字,并且在四舍五入时要小心不要使距离太小。

me= cilig(10 * 2 * tim.se)/10

rond(tme.an, 1) + c(-1, 1) * me

## \[1\] 27.2 31.0

当初在上下文中解释。
咱们有 95% 的信念认为,不在家工作的通勤者在均匀通勤工夫在 27.2 到 31 分钟之间。

编写函数

 

因为有几个简单的步骤,所以有一个函数来实现所有这些步骤会很有用,这样未来咱们能够在函数中获取源代码,而后调用它。这是一个示例函数,它承受一个参数 x,该参数假设为一个数字样本并执行 B 次疏导。该函数会将有用的信息输入到控制台,绘制分布图,并以列表的模式返回统计、区间、标准误差和图表。
 

out= with(tdens botmean(eit))

## \[1\] 66.90 69.56

out$interval

## \[1\] 66.90 69.56

咱们须要审慎,因为学生样本不是随机的,而是咱们班的不便样本。这里有两个可能的混同变量:性别和寄籍国。

for 循环

for 循环不是一次采集所有样本,而是一次采集一个样本。通常,应用 apply() 的 R 代码比应用 for 循环的代码更无效。尝试大量的 bootstrap 复制!

n = ngth(studentseiht)

B = 100

reslt = re(NA,)

fo(i in 1:) f

bo.sale= smpe(, replace = TRUE)

reult\[i\]  mean(udetsHeht\[bot.mple\])



with(stdnt, men(Hit) + c(-1, 1) * 2 * sd(result))

## \[1\] 66.89 69.58

比例

 

思考预计橙色里斯糖果的比例问题。抉择了一个有 11 个橙色糖果和 19 个非橙色糖果的学生。让咱们应用 bootstrap 找到橙色 Reese 比例的 95% 置信区间。最简略的办法是将样本数据表示为具备 11 个 1 和 19 个 0 的向量,并应用与样本均值雷同的机器

rees.bot= bot.man(rees, 1000,nwith = 1/30)

## \[1\] 0.1947 0.5386

因而,仅基于这个繁多样本,咱们有 95% 的信念认为橙色的实在比例在 0.19 到 0.54 之间。如果咱们将所有 48 个样本组合成一个大样本,咱们能够重做这个问题。察看到的比例为 0.515,共有 741 个橙色糖果和 699 个非橙色糖果。

reeses = c(rep(1, 741), rep(0, 699))

reeses.boot = boot.mean(reeses, 1000, binwidth = 0.005)

## \[1\] 0.4888 0.5404

均值差别

我将应用学生考察数据集来阐明如何应用 bootstrap 来预计均值的差别。乏味的变量是分割,每周每个学生练习的小时数。

data(Stey)

 

 

 

 

 

 

咱们从这个总结中看到,在样本中,男性每周锤炼的工夫比女性多。如果咱们将此学生样本视为从大学生群体中随机抉择的,咱们能够预计每种性别的锤炼工夫差别。

在构建置信区间之前,这里是两个散布的图表。

geom_boxpot(lor=red,ouolor="ed") +

geom\_oin(poitio  osio\_jitt(h=0w=0.3)) +

 咱们应用 length() 来查找每个组的样本大小。请留神,女性人数为 n[1],男性人数为 n[2]。

n = withnewSt、nt, by(Ec Gende, lengh))

 

 

 

下一个代码块为样本中的男性和女性创立一个矩阵,每个样本的替换大小雷同。而后咱们应用 apply() 来微调每个样本的平均值并取差值(男性减去女性)来取得统计的散布。咱们用图表来查看对称性。

ggplot(data.amex = oot.at), aes(= x)) + ge_ensty()

 最初,取点估计(样本均值的差别)并加上和减去两倍的标准误差。查看未四舍五入的版本后,将两位有效数字四舍五入到小数点后一位。

boot 包

有一个带有函数 boot() 的包 boot,它在许多状况下都能够进行 boottrap。我将重温通勤时报的例子。

然而内置函数 boot.ci() 将应用多种办法计算 bootstrap confidenceintervals。

boot.ci(t.boot)

 

 

根本应用预计的标准误差。百分位数应用百分位数。BCa 也应用百分位数,但会依据偏差和偏度进行调整。

百分位 bootstrap

应用来自 bootstrap 的百分位数的置信区间的想法是从 bootstrap 散布的两头抉择与所需置信水平绝对应的端点。
 

for (i in 1:B) f

te.boot\] = meanmplta,size=tea.neplTRU)

cofeebot\[i\] = eanampe(ffee,ize=cen,repla=TRUE)

g



quatil(bot.tt0.025,0.975))

quantie(boottac(0.005,0.995))

 

 

 

 

 

 

 

自测题

Below are some 1973 law school data, mean GPA and mean LSAT score for N=82 law schools. Compute approximate 95% CIs by bootstrapping for: (a) the mean GPA mean; (b) the mean LSAT mean; (c) the correlation between GPA mean and LSAT mean, at the school level.  Do all of these calculations for a sample of size n=15, and then repeat for a sample of size n=20. Note that you’ll get somewhat different answers for different choices of sample, for each size (15 and 20). You can explore the importance of the particular sample chosen, of course, by repeating the process. Be careful not to conflate the bootstrap process and the repetition of sampling from the “population.”  In a typical boostrap computation, you would have only a sample of size 15 (or 20) and not the “population” of 82, and the boostrap procedure does not require that you have the 82 data points (or it wouldn’t be very helpful).


最受欢迎的见解

1. 应用 R 语言进行 METROPLIS-IN-GIBBS 采样和 MCMC 运行

2.R 语言中的 Stan 概率编程 MCMC 采样的贝叶斯模型

3.R 语言实现 MCMC 中的 Metropolis–Hastings 算法与吉布斯采样

4.R 语言 BUGS JAGS 贝叶斯剖析 马尔科夫链蒙特卡洛办法(MCMC)采样

5.R 语言中的 block Gibbs 吉布斯采样贝叶斯多元线性回归

6.R 语言 Gibbs 抽样的贝叶斯简略线性回归仿真剖析

7.R 语言用 Rcpp 减速 Metropolis-Hastings 抽样预计贝叶斯逻辑回归模型的参数

8.R 语言应用 Metropolis- Hasting 抽样算法进行逻辑回归

9. R 语言中基于混合数据抽样 (MIDAS) 回归的 HAR-RV 模型预测 GDP 增长回归的 HAR-RV 模型预测 GDP 增长 ”)

正文完
 0