【问题标题】:Building matrix from Extracting Coefficients and Interval from summary从摘要中提取系数和区间构建矩阵
【发布时间】:2016-05-09 14:57:40
【问题描述】:

我有这个data.frame:

df <- data.frame(a=rnorm(500),b=rnorm(500),c=rnorm(500),
      d=rnorm(500),e=rnorm(500),f=rnorm(500),g=rnorm(500))

我运行分位数回归:

library(quantreg)
a<-rq(a~g,tau = 0.5,method="br",data=df)
summary.rq(a)
b<-rq(b~g,tau = 0.5,method="br",data=df)
summary.rq(b)
c<-rq(c~g,tau = 0.5,method="br",data=df)
summary.rq(c)
d<-rq(d~g,tau = 0.5,method="br",data=df)
summary.rq(d)
e<-rq(e~g,tau = 0.5,method="br",data=df)
summary.rq(e)
f<-rq(f~g,tau = 0.5,method="br",data=df)
summary.rq(f)
g<-rq(g~g,tau = 0.5,method="br",data=df)
summary.rq(g)

例如:

summary.rq(a)
Call: rq(formula = a ~ g, tau = 0.5, data = df, method = "br")

tau: [1] 0.5

Coefficients:
            coefficients lower bd upper bd
(Intercept)  0.12940      0.04870  0.17940
g           -0.02131     -0.08078  0.05370

我想建立一个这样的矩阵:

Matrix.Parameters.Interval<-matrix(0,7,6)

第一行将与第一个模型相关。第一列是截距参数,2º 和 3º 列是其置信区间(我将从summary 输出中提取),4º 列是可变参数,5º 和 6º 列是它的区间(我将从summary 输出)

【问题讨论】:

    标签: r dataframe quantreg


    【解决方案1】:
    modList <- list(a,b,c,d,e,f,g)
    

    从模型中提取信息并将其重新格式化为 1 行矩阵的函数,其中有关截距(第一行)的信息作为矩阵的前半部分,有关斜率的信息作为后半部分.. .

    tmpf <- function(model) {
        matrix(coef(summary(model)),nrow=1,byrow=TRUE)
    }
    

    在列表的每个元素上运行:

    t(sapply(modList[1:5],tmpf))
    

    t() 是必需的,因为 sapply 总是以列方式返回结果。

    这仅适用于前 5 个模型;第 6 个模型是奇异的,因为预测变量和响应是相同的。

    一种更系统的方法:

    tmpf2 <- function(respvar) {
       fit <- rq(reformulate("g",response=respvar),
                tau = 0.5,method="br",data=df)
       matrix(coef(summary(fit)),nrow=1,byrow=TRUE)
    }
    t(sapply(names(df)[1:5],tmpf2))
    

    这样您就不必重复代码(DRY="do not repeat yourself"),并且您的工作区不会有所有合适的模型。

    【讨论】:

      猜你喜欢
      • 2015-12-31
      • 2018-01-12
      • 2021-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多