質問
私は、我々の目的のためだけglm()
呼ばmx, my, mz
オブジェクトされる、対数線形モデルの束を持っています。私は当然、私はxtable
を実行したいと思う、逸脱度の解析のきれいにフォーマットxtable(anova(mx, my, mz, test = "Chisq"))
を取得したい。
xtable
のバニラ出力は、しかし、モデルの仕様が含まれていません。私はそれが私はおそらくちょうど私の独自のソリューションをハックする必要がありますこれを行い欠けているのparamがないもしそうなら、私は実行しているすべてのANOVAテスト用のものを含めるようにしたいと思います。しかし、ヘルプページを見ている、モデルの仕様を含めるための簡単な方法があるようには思えません。
任意の考え?代替?
それが助け場合は、これはxtable 1.5-5と2.9.1で行われました。
解決
a
は、分散分析表オブジェクトである場合は、、そしてattr(a,"heading")
は、あなたが探している情報が含まれていないが、私はそれを抽出する良い方法を見つけ出すことができませんでした。私は、彼らが見出しにその情報を置く方法を見つけ出すためにanova.glm
のコードに私を監督anova.lmlist
のコードを、見上げて。これは、次の解決策にインスピレーションを得ます:
# fake data
x <- 1:10
y <- x+ rnorm(10)
# two models
m1 <- glm(y~x)
m2 <- glm(y~x+I(x^2))
a <- anova(m1, m2) # anova object to be printed
# get model formulas
flas <- sapply(list(m1,m2), function(x)paste(deparse(x$formula)))
rownames(a) <- flas # add formulas as rownames
# convert to latex
xtable(a)
長い式に対応するために、の編集を
あなたが長い数式を持っている場合は、二つの変更が必要とされます。最初、私たちは必ずdeparse
がラインにそれを壊さないことを確認する必要があり、その後、我々は、テーブルで式をラップするためにラテックスにする必要があります。最初は逆パースのcutoff.width
引数、およびラテックス中p{width}
カラム型を用いて第2を使用することによって達成することができます。たとえばます:
# add long formula
m2$formula <- freq ~ sex + attend + birth + politics + sex:attend + sex:birth +
sex:politics + attend:birth + attend:politics + birth:politics +
sex:attend:birth + sex:attend:politics + sex:birth:politics +
attend:birth:politics
a <- anova(m1, m2)
# use a large width
flas <- sapply(list(m1,m2),
function(x)paste(deparse(x$formula, cutoff.width=500)))
rownames(a) <- flas # add formulas as rownames
# convert to latex with first column wrapped in a 5cm wide parbox
xtable(a, align="p{5cm}rrrr")
結果が過度にきれいではありませんが、あなたの式はかなりのいずれかではありません。この特定のケースでは、私は(sex + attend + birth + politics)^3
を使用します - 全体でポイントを取得し、はるかに短いです。
他のヒント
私はあなたがLaTeXのテーブルを取得したいことを数えるが、あなたは簡単にできGET HTMLモデル式とテーブルます。
# if we presuppose that <b>a</b> is object from @Aniko's reply
> class(a)
[1] "anova" "data.frame"
# after doing a bit of that sapply magic you get
> a
Analysis of Deviance Table
Model 1: y ~ x
Model 2: y ~ x + I(x^2)
Resid. Df Resid. Dev Df Deviance
y ~ x 8 15.503
y ~ x + I(x^2) 7 12.060 1 3.4428
あなたはこのような何かを行うことができます:
# load xtable library
library(xtable)
# sink output to html file
sink("~/anova_specs.html") # suppose you're running R on Linux "~/"
print(xtable(a), type = "html")
sink()
これはかなりのようにLaTeXのテーブルとしてではないのですが、それはモデル式を有する...