如何解决提取回归类型输出的一部分
下面,我想知道如何提取 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 举报,一经查实,本站将立刻删除。