gpt4 book ai didi

r - 如何获得 "nls"对象的漂亮 latex 输出

转载 作者:行者123 更新时间:2023-12-04 00:36:56 25 4
gpt4 key购买 nike

我需要“nls”对象的 LaTex 表示。很遗憾,stargazer 不支持此对象类型。

网上的一些研究让我找到了 nls2 库中的 as.lm.nls 函数。它声称将 nls 对象转换为相应的 lm 对象。就我而言,它惨遭失败。以下是示例输出:

> DNase1 <- subset(DNase, Run == 1)
> xx <- nls(density ~ SSlogis(log(conc), Asym, xmid, scal), DNase1)
> summary(xx)

Formula: density ~ SSlogis(log(conc), Asym, xmid, scal)

Parameters:
Estimate Std. Error t value Pr(>|t|)
Asym 2.34518 0.07815 30.01 2.17e-13 ***
xmid 1.48309 0.08135 18.23 1.22e-10 ***
scal 1.04146 0.03227 32.27 8.51e-14 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.01919 on 13 degrees of freedom

Number of iterations to convergence: 0
Achieved convergence tolerance: 3.281e-06

下面的 as.lm.nls 输出与上面的实际输出不匹配:

> library(nls2)
Loading required package: proto
> xlm = as.lm.nls(xx)
> summary(xlm)

Call:
lm(formula = density ~ Asym + xmid + scal - 1, offset = fitted(xx))

Residuals:
Min 1Q Median 3Q Max
-0.033513 -0.012931 -0.001454 0.009699 0.038137

Coefficients:
Estimate Std. Error t value Pr(>|t|)
Asym -8.878e-07 7.815e-02 0 1
xmid -9.328e-07 8.135e-02 0 1
scal -3.751e-07 3.227e-02 0 1

Residual standard error: 0.01919 on 13 degrees of freedom
Multiple R-squared: 0.9996, Adjusted R-squared: 0.9995
F-statistic: 1.153e+04 on 3 and 13 DF, p-value: < 2.2e-16

由于 nls 摘要输出与 lm 摘要输出非常相似,我认为 nls 与 lm 对象的等效内容应该可以让 stargazer 发挥其魅力。

我有相当多的 nls 模型要合并到报告中,而 as.lm.nls 的失败使我陷入困境。我需要有关 nls 对象的 latex 输出的绝望帮助。

关于我如何继续的任何指示。

问候

K

最佳答案

对于 LaTeX 中的自定义输出表,我的经验是 xtable 包是最方便、最灵活的解决方案。

让我们考虑一下您的情况,您有一个 nls 对象,而 stargazer 不支持它(也许有一天会支持?)。

### Estimate model
model <- nls(Y ~ <your function>(theta1, theta2, theta3))

### generate various parts for output
sum_model = summary(model)
mat_model = sum_model$coefficients

### generate coefficients, se, t-stat and p values
df_model = as.data.frame(mat_model)
colnames(df_model) <- c("Coef.", "Std. error", "t-stat.", "p")

mat <- data.frame(t(df_model))
tbl <- xtable(mat)
print(tbl, only.contents=TRUE, include.rownames=T,
include.colnames=F, floating=F,
hline.after=NULL,
file="summary_nls.tex")

现在请注意,使用 R 包 xtable,您可以根据自己的需要定制输出。例如,我省略了整个 LaTeX tabular 环境,这是我在 stargazer 中永远无法摆脱的,我喜欢一起使用 threeparttable 包使用来自 LaTeX 包 booktabs 的命令。对于给定的玩具模型,整洁的输出如下所示:

\begin{table}[t]
\centering
\begin{threeparttable}
\captionabove{Regression results for nonlinear model.}
\begin{tabular}{lccc}
\toprule
& Theta1 & Theta2 & Theta3\\
& $\theta 1$ & $\beta$ & $\sigma$ \\
\midrule
\input{summary_nls}
\bottomrule
\end{tabular}
\label{tab:nls_summary}
\end{threeparttable}
\end{table}

我将上面的代码保留为模板,只是为更大、更复杂的模型添加行和列。与 knitr 配对,这对我来说就像一个魅力。

关于r - 如何获得 "nls"对象的漂亮 latex 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23474766/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com