从由各个引导程序的不等矩阵组成的列表中创建一个矩阵
Create a matrix from a list consisting of unequal matrices for individual bootstraps
我试图从一个由 N 个不等矩阵组成的列表创建一个矩阵...
这样做的原因是为了使R个个体bootstrap个样本。
在下面的示例中,您可以找到例如2 家公司,其中 1 家有 10 次,1 家只有 5 次观察。
数据:
set.seed(7)
Time <- c(10,5)
xv <- matrix(c(rnorm(10,5,2), rnorm(5,20,1), rnorm(10,5,2), rnorm(5,20,1)), ncol=2);
y <- matrix( c(rnorm(10,5,2), rnorm(5,20,1)));
z <- matrix(c(rnorm(10,5,2), rnorm(5,20,1), rnorm(10,5,2), rnorm(5,20,1)), ncol=2)
# create data frame of input variables which helps
# to conduct the rowise bootstrapping
data <- data.frame (y = y, xv = xv, z = z);
rows <- dim(data)[1];
cols <- dim(data)[2];
# create the index to sample from the different panels
cumTime <- c(0, cumsum (Time));
index <- findInterval (seq (1:rows), cumTime, left.open = TRUE);
# draw R individual bootstrap samples
bootList <- replicate(R = 5, list(), simplify=F);
bootList <- lapply (bootList, function(x) by (data, INDICES = index, FUN = function(x) dplyr::sample_n (tbl = x, size = dim(x)[1], replace = T)));
------------ 正在取消上市 ----------
目前,我尝试错误地这样做:
列表中只有 1 个条目的示例:
matrix(unlist(bootList[[1]], recursive = T), ncol = cols)
所需的输出只是
bootList[[1]]
作为矩阵。
您知道如何做到这一点吗?如果可能的话,效率还算合理吗?
然后在不幸的 MLE 估计中处理矩阵...
我为您找到了解决方案。据我所知,您有一个数据框,其中包含所有公司的所有观察结果,这些观察结果可能具有不同的面板长度。因此,您希望每个公司的 Bootstap 样本的大小与原始面板长度相同。
您几乎必须添加公司指标
data$company = c(rep(1, 10), rep(2, 5)) # this could even be a factor.
L1 = split(data, data$company)
L2 = lapply(L1, FUN = function(s) s[sample(x = 1:nrow(s), size = nrow(s), replace = TRUE),] )
如果你想要单独的 bootstap 样本,例如如果您想单独估算
bootdata = do.call(rbind, L2)
祝福,
蒂姆
我试图从一个由 N 个不等矩阵组成的列表创建一个矩阵... 这样做的原因是为了使R个个体bootstrap个样本。 在下面的示例中,您可以找到例如2 家公司,其中 1 家有 10 次,1 家只有 5 次观察。
数据:
set.seed(7)
Time <- c(10,5)
xv <- matrix(c(rnorm(10,5,2), rnorm(5,20,1), rnorm(10,5,2), rnorm(5,20,1)), ncol=2);
y <- matrix( c(rnorm(10,5,2), rnorm(5,20,1)));
z <- matrix(c(rnorm(10,5,2), rnorm(5,20,1), rnorm(10,5,2), rnorm(5,20,1)), ncol=2)
# create data frame of input variables which helps
# to conduct the rowise bootstrapping
data <- data.frame (y = y, xv = xv, z = z);
rows <- dim(data)[1];
cols <- dim(data)[2];
# create the index to sample from the different panels
cumTime <- c(0, cumsum (Time));
index <- findInterval (seq (1:rows), cumTime, left.open = TRUE);
# draw R individual bootstrap samples
bootList <- replicate(R = 5, list(), simplify=F);
bootList <- lapply (bootList, function(x) by (data, INDICES = index, FUN = function(x) dplyr::sample_n (tbl = x, size = dim(x)[1], replace = T)));
------------ 正在取消上市 ----------
目前,我尝试错误地这样做:
列表中只有 1 个条目的示例:
matrix(unlist(bootList[[1]], recursive = T), ncol = cols)
所需的输出只是
bootList[[1]]
作为矩阵。
您知道如何做到这一点吗?如果可能的话,效率还算合理吗?
然后在不幸的 MLE 估计中处理矩阵...
我为您找到了解决方案。据我所知,您有一个数据框,其中包含所有公司的所有观察结果,这些观察结果可能具有不同的面板长度。因此,您希望每个公司的 Bootstap 样本的大小与原始面板长度相同。 您几乎必须添加公司指标
data$company = c(rep(1, 10), rep(2, 5)) # this could even be a factor.
L1 = split(data, data$company)
L2 = lapply(L1, FUN = function(s) s[sample(x = 1:nrow(s), size = nrow(s), replace = TRUE),] )
如果你想要单独的 bootstap 样本,例如如果您想单独估算
bootdata = do.call(rbind, L2)
祝福,
蒂姆