我正在尝试使用Sweave和R来报告我的统计分析结果.然而,我遇到的问题是我希望报告单尾p值.虽然知道单尾测试的价值当然很简单,但我很难弄清楚如何将单尾值输出到自动生成的表中.
基本上,我想创建一个文档,其中包含用于生成表格的代码,但是表格会报告一个单尾的p值.我甚至不确定这是否可行,但如果有任何信息会有所帮助.
编辑:
很抱歉没有代码可以开始.我认为可能有更普遍的答案,但下面有一些通用代码.我只是使用一个基本的OLS回归和一个名为apsrtable的包来生成表.
\documentclass[12pt, letterpaper]{article}
\usepackage{multirow}
\usepackage{dcolumn}
\begin{document}
<<results=hide,echo=false>>=
library("apsrtable")
x1 = c(100, 123, 1300, 1230, 5453, 4095, 403958, 309458, 2034, 12430)
x2 = c(1000, 2309184, 203948, 240983, 19874, 198479, 918374, 98374198, 8273498, 092834)
y = c(5,10,15,20,25,30,35,40,45,50)
results <- lm(y ~ x1)
results1 <- lm(y ~ x2)
@
\begin{table}
\begin{center}
<<results=tex,echo=false>>=
apsrtable(results, results1, se="pval", stars="default", model.counter=0, order="rl", Sweave=TRUE)
@
\end{center}
\end{table}
\end{document}
Run Code Online (Sandbox Code Playgroud)
所以,我基本上希望能够将单尾p值传递给apsrtable来制作表格.
作为一个补充,我对R一般都是新手,对R编程来说是非常新的,所以像操纵数据框这样的事情对我来说有点难以理解.
如果不知道您想要进行哪些分析或某些可重现的代码,则很难给出广泛的答案.但这里有一些提示:
我写了一个小包,swst,旨在打印Sweave中的统计结果.对于一个小教程,请参阅我的博客,其中还包含可用于从htest对象手动提取p值的代码(R中使用的许多统计测试).您可以找到从源代码中的更多对象中提取p值的代码.如果您的对象尚不支持,请告诉我们.目前我认为我没有实现打印单尾p值的选项,但您可以查看源代码以了解如何提取双尾p值并简单地将其除以2.
您可以使用xtable包根据数据框生成表的LaTeX代码.您可以xtable在我在Sweave(也包含swst包)和Googling 上制作的一些幻灯片中找到一个非常简短的介绍.
至于编辑过的问题.最好手动提取值并构造表.这是一个根据您的代码报告单尾t值的示例(我更改了数据以获得更有趣的结果).
x1 = rnorm(10)
x2 = rnorm(10)
y = 0.5*x1 + 2*x2
results <- lm(y ~ x1)
results1 <- lm(y ~ x2)
sumRes <- summary(results)$coefficients
sumRes1 <- summary(results1)$coefficients
tab <- data.frame(
Estimate = paste(round(c(sumRes[2,1],sumRes1[2,1]),3)," (",round(c(sumRes[2,2],sumRes1[2,2]),3),")",sep=""),
tvalue = round(c(sumRes[2,3],sumRes1[2,3]),3),
pvalue = c(ifelse(sumRes[2,4]/2<0.001,'$< 0.001$',
round(sumRes[2,4]/2,3)),ifelse(sumRes1[2,4]/2<0.001,'$< 0.001$',
round(sumRes[2,4]/2,3)))
)
names(tab) <- c("Estimate", "$t$-value", "$p$-value")
rownames(tab) <- c("x1","x2")
library("xtable")
print(xtable(tab),sanitize.text.function=function(x)x)
Run Code Online (Sandbox Code Playgroud)