我正在尝试为我的模型获取(bootstrapped)输入数据。
源文件:https://www.dropbox.com/s/dudzxhozr50uhr7/EddyData_2010.csv?dl=0
library("dplyr")
library("readr")
library("reshape2")
library("ggplot2")
sub <- read_csv("EddyData_2010.csv",
col_types = list(col_integer(), col_integer(), col_double(),
col_double(), col_double(), col_double(),
col_double(), col_double(), col_double(),
col_double(), col_double(), col_double()),
col_names = c("Year", "DoY", "Hour", "NEE", "LE", "H", "Rg",
"Tair", "Tsoil", "rH", "Ustar", "VPD")) %>%
filter(DoY == 170) %>%
mutate(hour = 1:48) %>%
select(NEE:hour)
# Number of resampling
n_resempling <- 1000
result_resampling <- NULL
# Do the resampling
for (i in 1:n_resempling) {
result_resampling <- sample(48, 48, replace = T) %>%
slice(sub, .) %>%
mutate(resempling_number = i) %>%
bind_rows(. , result_resampling)
}
这会生成重新取样,例如
输出显示1000个bootstraps重新采样,每天有48个半小时的替换。
这是我的问题:
更换的重新取样是在一天中随机混合半小时而没有任何控制。例如,我不想在晚上混合半小时和在日子里混合半小时。结果导致之后的奇怪计算。是否有可能以这样的方式对此进行编码:我定义了什么是允许的,什么不是?
示例:
答案 0 :(得分:2)
我为CRD设计做过天真的引导程序,但没有时间数据。这是时间序列数据吗?根据我的理解,您希望下午2点仅在下午2点而不是下午3点进行采样。理解采样对于进行正确的分析很重要,因为在R中真的很容易出错。
我注意到你使用循环来引导而不是包。 我使用'boot'包进行天真的bootstrap,所以我转向Google查看时间数据。这是我发现的,我道歉这是我所有的(由于缺乏代表,我无法发表评论) 使用启动包我会打赌任何东西比使用循环更快 您可以查看system.time(),特别是如果您有大量数据。
https://stat.ethz.ch/R-manual/R-devel/library/boot/html/tsboot.html
这是我如何处理我天真的引导程序:
class
我还找到了这个时间数据来源 http://eranraviv.com/bootstrapping-time-series-r-code/
对于不同设计的正确分析方法也是很好的资源:
http://people.stat.sfu.ca/~cschwarz/CourseNotes/
无论如何,对不起,我没有太多的帮助,但想分享一些想法。