如何发布(sweave)回归公式?

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

Ben*_*ker 5

这个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)


Cha*_*ase 3

我发现这个函数是我在参加回归建模入门课时编写的。我确信它不是最佳的,但对于该课程来说它已经足够好了。如果没有别的事,也许这会给你指明正确的方向,让你走得更远。

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)