从主题列表中阻止引导
发布时间:2020-12-18 00:27:45 所属栏目:安全 来源:网络整理
导读:我试图有效地实现块引导技术来获得回归系数的分布.主要内容如下: 我有一个面板数据集,说公司和年份是指标.对于引导的每次迭代,我希望用替换的n个主题进行抽样.从这个样本中,我需要构建一个新的数据帧,它是每个抽样主体的所有观察值的rbind()堆栈.使用这个新
我试图有效地实现块引导技术来获得回归系数的分布.主要内容如下:
我有一个面板数据集,说公司和年份是指标.对于引导的每次迭代,我希望用替换的n个主题进行抽样.从这个样本中,我需要构建一个新的数据帧,它是每个抽样主体的所有观察值的rbind()堆栈.使用这个新的数据框架,我可以运行回归并拉出系数.重复一次迭代,比如说100. >每个公司都有可能被多次选择,所以我需要在每个迭代的数据集中多次包含它的数据. 我的想法最初是使用split()命令将现有的总数据帧中断到主题列表中.从那里,使用sample(unique(df1 $subject),n,replace = TRUE)来获取新的列表,然后可能从plyr包中实现quickdf()来构造一个新的数据框架? 任何想法都赞赏! 示例慢代码: require(plm) data("Grunfeld",package="plm") firms = unique(Grunfeld$firm) n = 10 iterations = 100 mybootresults=list() for(j in 1:iterations){ v = sample(length(firms),replace=TRUE) newdata = NULL for(i in 1:n){ newdata = rbind(newdata,subset(Grunfeld,firm == v[i])) } reg1 = lm(value ~ inv + capital,data = newdata) mybootresults[[j]] = coefficients(reg1) } mybootresults = as.data.frame(t(matrix(unlist(mybootresults),ncol=iterations))) names(mybootresults) = names(reg1$coefficients) mybootresults (Intercept) inv capital 1 373.8591 6.981309 -0.9801547 2 370.6743 6.633642 -1.4526338 3 528.8436 6.960226 -1.1597901 4 331.6979 6.239426 -1.0349230 5 507.7339 8.924227 -2.8661479 ... ... 解决方法
这样的事情呢
myfit <- function(x,i) { mydata <- do.call("rbind",lapply(i,function(n) subset(Grunfeld,firm==x[n]))) coefficients(lm(value ~ inv + capital,data = mydata)) } firms <- unique(Grunfeld$firm) b0 <- boot(firms,myfit,999) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |