7

回帰式をうまく公開するにはどうすればよいですか?

fit1<-dynlm(dep~indep1+indep2+indep3)
s1<-summary(fit1)
s1$call

どうすればスイーブできs1$callますか?つまり、pdf ドキュメントに「dynlm(formula=dep~indep1+indep2+indep3)」のようなものを入れたくないということです。この関数呼び出しスタイルよりも、より教科書的なスタイルを好むでしょう。さらに、(手動で?)モデルにinterceptとerrortermを追加したいと思います(実際にはそこにあるため)。

outreg私がグーグルで見つけた(今は少し重すぎるように見える)ことに注意してください。

編集:サンプル出力を投稿しようとしていますが、実際にはやりたいのですが、SOエディターでより適切に行う方法がわかりません:

 dep = alpha + beta_1*indep1 + beta_2*indep2 + beta_3*indep3 + epsilon

いくつかの行列表記も問題ありませんが、モデル定義を印刷することはどうでもいいでしょう。もちろん、手動で追加することもできますが、堅牢性チェック段階では、モデル変数が頻繁に変更される可能性があり、ドキュメントを最新にする必要があります。

( 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

4

3 に答える 3

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}

この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}
于 2011-06-17T02:13:07.347 に答える
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)
    }

そして実際に:

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"
于 2011-06-16T22:50:57.503 に答える