微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

提取回归类型输出的一部分

如何解决提取回归类型输出的一部分

下面,我想知道如何提取 result 输出的最后一部分,标题Likelihood Ratio Test

library(weightr)

y <- dat.bangertdrowns2004$yi
v <- dat.bangertdrowns2004$vi

(result <- weightfunct(y,v))
# .
# .
# .
Likelihood Ratio Test:                     ## This part
X^2(df = 1) = 1.163544,p-val = 0.28073    ## This part

解决方法

另一种选择是查看产生输出的函数。在这种情况下,它是 weightr:::print.weightfunct 并且相关的行是

<snip>
        cat("\n")
        cat("Likelihood Ratio Test:")
        cat("\n")
        df <- length(x[[2]]$par) - length(x[[1]]$par)
        lrchisq <- 2 * (abs(x[[1]]$value - x[[2]]$value))
        pvalue <- 1 - pchisq(lrchisq,df)
        cat("X^2(df = ",df,") = ",lrchisq,",p-val = ",format.pval(pvalue),sep = "")
</snip>

所以你可以用

获取值
x = result
df <- length(x[[2]]$par) - length(x[[1]]$par)
lrchisq <- 2 * (abs(x[[1]]$value - x[[2]]$value))
pvalue <- 1 - pchisq(lrchisq,df)

> lrchisq
#[1] 1.163544
> pvalue
#[1] 0.2807317
,

指示的输出是在 print.weightfunct 中计算的,因此我们可以复制打印方法,然后向其添加跟踪以捕获所需信息并将其输出到一行数据框 .W 中:

print.weightfunct <- weightr:::print.weightfunct
trace(print.weightfunct,exit = quote(.W <<- data.frame(df,pvalue)))
(result <- weightfunct(y,v))
## ...snip ## 
.W
##   df  lrchisq    pvalue
## 1  1 1.163544 0.2807317
,

一个选项是

out <- capture.output(result)
out[cumsum(grepl("Likelihood",out)) > 0]
#[1] "Likelihood Ratio Test:"                 
#[2] "X^2(df = 1) = 1.163544,p-val = 0.28073"

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。