Bootstrap方法在R语言中的运用

Bootstrap方法在R语言中的运用ddd

Bootstrap本意是拎着靴带让自己跳起来,在统计学中是一种重采样的方法,通常在样本量小的时候,可以从中不断再次抽样。

1. Bootstrap 简单应用

Bootstrap bias偏差 &variance 方差

library(bootstrap) bslogc<-function(x,B){ 
    n<-length(x) thetastar<-replicate(B,{ 
   xstar<-sample(x,n,replace = T) median(xstar)} ) thetastar } x <- diabetes$logCpeptide hist(x, freq = FALSE, main = "Histogram of diabetes data") median(x) bscpep<-bslogc(x,1000) hist(bscpep,freq = FALSE, breaks = 7,main = "Histogram of bootstrap diabetes medians") var(bscpep) bias<-mean(bscpep)-median(x) 

Bootstrap correlation

samplecorr <- function(data, B) { 
    n <- nrow(data) res <- numeric(B) for(i in 1:B) { 
    ind <- sample(n, n, replace = TRUE) bs_data <- data[ind, ] res[i] <- cor(bs_data[ , 1], bs_data[ , 2]) } res } cor(law) cor(law[ , 1], law[ , 2]) bs_law <- samplecorr(law, 10000) hist(bs_law, freq = FALSE, main = "Histogram of law data bootstrap corellation coefficients") bias.law <- mean(bs_law) - cor.law[1, 2] bias.law var(bs_law) cor(law82) bs_law82 <- samplecorr(law82[ , 2:3], 10000) hist(bs_law82, freq = FALSE, main = "Histogram of law82 data bootstrap corellation coefficients") bias.law82 <- mean(bs_law82) - cor.law82[1, 2] bias.law82 var(bs_law82) 

Bootstrap方法比较实验组与对照组

mean(mouse.t)-mean(mouse.c) bsmice<-function(x,y,B){ 
    n1<-length(x) n2<-length(y) thet1<-replicate(B,{ 
   xstar<-sample(x,n1,replace = T) mean(xstar)}) thet2<-replicate(B,{ 
   ystar<-sample(y,n2,replace = T) mean(ystar)}) d=thet1-thet2 } df1=bsmice(mouse.t,mouse.c,1000) head(df1) pihat <- sum(df1 > 10) / length(df1) #probability that survival time difference > 10 pihat 

2.Bootstrap residuals

ebs_eps<-function(y,x,B){ 
    fit <- lm(y ~ x) e <- residuals(fit) y_fitted <- fitted(fit) # or : beta[1] + beta[2] *  x <- wood$density # for convenience bs_resid <- matrix(0, nrow = B, ncol = 2) n<-length(y) for(i in 1:B){ 
    e_star <- sample(e, n, replace = TRUE) y_star <- y_fitted + e_star fit_star <- lm(y_star ~ x) bs_resid[i, ] <- coef(fit_star) } bs_resid } wood <- read.table("wood.txt", header = TRUE) bs_beta <-ebs_eps(y = wood$hardness, x = wood$density, 1000) fit_wood <- lm(hardness ~ density, data = wood) beta <- coef(fit_wood) plot(wood$density, wood$hardness, main = "", xlab = "density", ylab = "hardness") yreg <- beta[1] + beta[2] * wood$density lines(wood$density, yreg, col = "red") for(i in 1:10) { 
    yest <- bs_beta[i, 1] + bs_beta[i, 2] * wood$density lines(wood$density, yest) } hist(bs_beta[, 1], xlab = "Estimate of alpha", freq = FALSE) hist(bs_beta[ , 2], xlab = "Estimate of beta", freq = FALSE) 

3.Bootstrap 置信区间

s1=rgamma(50,shape = 4,rate = 1) hist(s1) n <- length(s1) B=10000 zstar<-{ 
   } for (i in 1:B){ 
    xstar<- sample(s1,n,replace = T) ths<-mean(xstar) se<-sd(xstar)/sqrt(n) zstar[i]<- (ths-theta_hat)/se } tq<-quantile(zstar,c(0.05,1-0.05)) theta_hat-c(tq[2],tq[1])*se_hat library(bootstrap) help(bootstrap) boott(s1,theta = function(x) mean(x), perc=c(.025,.05,.10,.50,.90,.95,.975)) 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/177830.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午6:39
下一篇 2026年3月26日 下午6:39


相关推荐

  • 暑期购机推荐大攻略

    暑期购机推荐大攻略绝对推荐 暑期购机推荐大攻略 06 25 更新 PSP PS2 版 来自 太平洋 PlaystationP PSP 篇推荐度 8 5 分性价比 9 分 nbsp 购买理由 PSP 对于国内的消费者来说已经不再陌生了 绝对是艺术与掌上娱乐的完美结合体 部分对游戏比较有研究的玩家会质疑 PSP 的定位不明确 其实不然 正是因为 PSP 拥有其他产品所不具备的多种娱乐功能才会有此想法 的确 PSP 在数

    2026年3月17日
    2
  • ubuntu防火墙问题

    ubuntu防火墙问题ubuntu 防火墙问题启动防火墙的命令 sudoufwenabl ubuntu20 04 默认状态下 UFW 防火墙是禁用的 防火墙默认配置 sudoufwdefau 关闭防火墙命令 sudoufwdisab 查看防火墙状态 sudoufwstatu 开启 关闭指定端口 举例 Sudoufwallow 开 Sudoufwdelet 关允许指定的 IP 访问 sudoufwallow 地址界

    2026年3月19日
    1
  • centos7配置sftp_怎么修改服务器sftp端口

    centos7配置sftp_怎么修改服务器sftp端口CentOS7修改sftp端口修改sftp默认端口为12322vi/etc/ssh/ssh_config把Port22改成Port12322vi/etc/ssh/sshd_config把Port22改成Port12322修改之后重启servicesshdrestart

    2025年11月17日
    4
  • setTimeout()和setInterval()在用法上有什么区别_setinterval返回值

    setTimeout()和setInterval()在用法上有什么区别_setinterval返回值setTimeout与setTimeinterval的使用

    2022年10月5日
    5
  • sudo与sudoers

    sudo与sudoerssudo是linux下常用的允许普通用户使用超级用户权限的工具,允许系统管理员让普通用户执行一些或者全部的root命令,如halt,reboot,su等等。这样不仅减少了root用户的登陆和管理时间,同样也提高了安全性。Sudo不是对shell的一个代替,它是面向每个命令的。它的特性主要有这样几点:  §sudo能够限制用户只在某台主机上运行某些命令。  §sudo提供了丰富

    2022年6月20日
    38
  • ubuntu24.04.1LTS系统安装星火应用商店、discover详细教程

    ubuntu24.04.1LTS系统安装星火应用商店、discover详细教程

    2026年3月14日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号