r - 如何在子数据集中完成重复计算和绘图?
问题描述
我有一个这样创建的模拟数据:
average_vector = c(0,0,25)
sigma_matrix = matrix(c(4,1,0,1,8,0,0,0,9),nrow=3,ncol=3)
set.seed(12345)
data0 = as.data.frame(mvrnorm(n =20000, mu = average_vector, Sigma=sigma_matrix))
names(data0)=c("hard","smartness","age")
set.seed(13579)
data0$final=0.5*data0$hard+0.2*data0$smartness+(-0.1)*data0$age+rnorm(n=dim(data0)[1],mean=90,sd=6)
现在,我想对 50 名学生进行 1000 次随机抽样(1000 组 50 人),我使用了以下代码:
datsub<-(replicate(1000, sample(1:nrow(data0),50)))
在这一步之后,我遇到了一个问题:我想问我是否想用 50 个选定的人(1000 次)运行回归模型,并记录/存储模型 4 中“hard”的点估计,其中给出如下这个:model4 = lm(formula = final ~ hard + smartness + age, data = data0),并绘制围绕 0.5 线的变化(真实值),有什么办法可以实现吗?非常感谢!
解决方案
如果您刚刚进入 R 建模,我强烈建议您研究任何一个caret
或更新的(并且仍在维护) 。TidyModels
一旦你习惯了类似dplyr
的语法,这些中的任何一个都会让你的生活更轻松。
你想要做的是引导。这是仅使用基本功能的手动方法。
n <- nrow(data0)
k <- 1000
ns <- 50
samples <- replicate(k, sample(seq_len(n), ns))
params <- vector('list', k)
for(i in seq_len(n)){
params[[i]] <- coef( lm(formula = final ~ hard + smartness + age, data = data0[samples[, i],]) )
}
# merge params into columns
params <- do.call(rbind, params)
# Create plot from here.
plot(x = seq_len(n), y = params[, "hard"])
abline(h = 0.5)
请注意,上面可能有一些拼写错误,因为您的示例不可重现。
推荐阅读
- javascript - 我可以模拟/监视非纯函数的父范围中存在的变量值吗?
- symfony - Cloudbuild 模板和环境文件
- r - R Highcharter 在使用 hc_yAxis_multiples 的 y 轴上添加 plotBands 的问题
- sql - Exists 与 In 的物化视图性能
- c# - 未选中时 C# asp.net 复选框未触发
- ios - swift xcode IOS,选择搜索结果后返回tableview
- firebase - 将 Gatsby 站点部署到 Firebase CDN 时,Gatsby Cloud 似乎没有使用 firebase.json 文件
- r - 当输入元素动态变化时,如何防止在闪亮的情况下多次绘制绘图
- wix3.7 - 在一个 .wxs 文件中创建 32 位和 64 位安装程序时出现注册表项问题
- angular - Angular 8:NullInjectorError - 没有 HighContrastModeDetector 的提供者