繁体   English   中英

R中的分位数回归,重新排列数据以生成乳胶

[英]Quantile regression in R, rearrange data for latex output

使用lapply对(假设)三个不同的tau运行分位数回归:

listdf <- lapply(vector(tau1, tau2, tau3), function(x){summary.rq(rq(Y ~ x + z, tau=x, data=regdf))})

结果是一个包含类“ summary.rq”的三个元素的列表。
要从回归中提取系数(来自summary.rq对象),可以键入listdf[[1]]$coefficients来获取系数,或者listdf[[1]]$tau来获取tau。

因此,要获取我运行的系数:

coeflist <- lapply(listdf, function(x){data.frame(x$coefficients)}) 

(类“ data.frame”的三个元素的列表)

我接下来要做的是重新排列数据( coeflist ),以获取每个回归变量的一个数据帧,其中各行代表不同tau的系数。

我运行: lapply(1:nrow(coeflist[[1]]), function(i) do.call(rbind, lapply(coeflist, "[", i, TRUE)))

这种返回值是我想要的,但是有没有办法重命名数据帧中的行名以反映系数来自哪个tau? 并将列表元素重命名为回归变量的名称?

问候。

首先,我会注意到rq()的tau参数接受向量,因此我不确定您所有的lapply()工作是否确实必要。

但是,使用quantreg包中的示例数据可以找到您想要的这种类型的东西:

data(stackloss)
temp <- summary(rq(y ~ x, method="fn",tau=c(0.3,0.5,0.7)))
df <- temp[[1]]$coeff
colnames(df)[1] <- as.character(temp[[1]]$tau)
for (i in 2:length(temp)){
    df[,i] <- temp[[i]]$coefficients[,1]
    colnames(df)[i] <- as.character(temp[[i]]$tau)
}
t(df)

新版本:更改您对coeflist的创建:

coeflist <- lapply(listdf, function(x){data.frame(x$coefficients[,1])}) 
coeflist

这将仅引入系数,并忽略上限和下限。 然后cbind它们cbind在一起,并使用listdf的名称进行清理。

 coef.mtx <- do.call(cbind, coeflist)
 colnames(coef.mtx) <- names(listdf)
 coef.mtx 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM