Mat*_*ert 7 publish regression r sweave
如何很好地发布回归公式?
fit1<-dynlm(dep~indep1+indep2+indep3)
s1<-summary(fit1)
s1$call
Run Code Online (Sandbox Code Playgroud)
我怎么能发誓s1$call?我的意思是我不希望在我的pdf文档中有像dynlm(formula = dep~indep1 + indep2 + indep3)这样的东西.我希望在这个函数调用样式上有更多的教科书样式.另外我想(手动?)向模型添加拦截和错误(因为它实际上在那里).
请注意,我outreg在google上找到了(现在看起来有点太重了)并且一眼就看不到我的需求.
编辑:尝试发布示例输出,实际上我很喜欢,但我不知道如何使用SO编辑器做得更好:
dep = alpha + beta_1*indep1 + beta_2*indep2 + beta_3*indep3 + epsilon
Run Code Online (Sandbox Code Playgroud)
一些矩阵表示法也可以,但打印模型定义无论如何都会很好.当然也可以手动添加它,但是当您处于稳健性检查阶段时,模型变量可能会经常更改,并且文档必须是最新的.
(使用http://texify.com :)
![IMG] http://www.texify.com/img/%5CLARGE%5C%21%5Cmbox%7Bdep%7D%20%3D%20%5Calpha%20%2B%20%5Cbeta_1%20%5Ccdot%20%5Cmbox %7Bindep1%7D%20%2B%20%5Cbeta_2%20%5Ccdot%20%5Cmbox%7Bindep2%7D%20%2B%20%5Cepsilon.gif [/ IMG](https://i.stack.imgur.com/gRu6z.gif)
这个Rnw文件:
\documentclass{article}
\begin{document}
<<>>=
data("USDistLag", package = "lmtest")
library(dynlm)
dfm1 <- dynlm(consumption ~ gnp + L(consumption), data = USDistLag)
@
<<echo=FALSE>>=
cc <-dfm1$call
f <- cc$formula
LHS <- as.character(f)[2]
RHS <- as.character(f)[3]
coefs <- gsub(" +","",strsplit(RHS,"\\+")[[1]])
mbox <- function(x) { paste("\\\\mbox{",x,"}",sep="") }
pars <- paste("\\\\beta_",0:(length(coefs)-1),sep="")
p <- paste(mbox(LHS),"=",paste(pars,mbox(coefs),sep=" \\\\cdot ",collapse="+"),
"+ \\\\epsilon")
@
$$
\Sexpr{p}
$$
\end{document}
Run Code Online (Sandbox Code Playgroud)
导致这个TeX片段:
\documentclass{article}
\begin{document}
\begin{Schunk}
\begin{Sinput}
> data("USDistLag", package = "lmtest")
> library(dynlm)
> dfm1 <- dynlm(consumption ~ gnp + L(consumption), data = USDistLag)
\end{Sinput}
\end{Schunk}
$$
\mbox{consumption} = \beta_0 \cdot \mbox{gnp}+\beta_1 \cdot \mbox{L(consumption)} + \epsilon
$$
\end{document}
Run Code Online (Sandbox Code Playgroud)
我发现这个函数是我在参加回归建模入门课时编写的。我确信它不是最佳的,但对于该课程来说它已经足够好了。如果没有别的事,也许这会给你指明正确的方向,让你走得更远。
writeCoef <- function(x) {
require(plyr)
coefnames <- as.data.frame(coef(x))
coefnames$betas <- row.names(coefnames)
coefnames <- adply(coefnames, 1, function(x) paste(round(x[1],3), x[2] , sep = " * "))
dependent <- paste(as.character(x$call$formula)[2], " = ", sep = "")
ret <- paste(dependent, paste(coefnames[,3], sep = "", collapse = " + "))
ret <- gsub("\\*\\s\\(Intercept\\)", "", ret)
return(ret)
}
Run Code Online (Sandbox Code Playgroud)
并在行动中:
ctl <- c(4.17,5.58,5.18,6.11,4.50,4.61,5.17,4.53,5.33,5.14)
trt <- c(4.81,4.17,4.41,3.59,5.87,3.83,6.03,4.89,4.32,4.69)
group <- gl(2,10,20, labels=c("Ctl","Trt"))
weight <- c(ctl, trt)
lm.D9 <- lm(weight ~ group)
> writeCoef(lm.D9)
[1] "weight = 5.032 + -0.371 * groupTrt"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1302 次 |
| 最近记录: |