односторонний тест с Sweave и R - PullRequest
2 голосов
/ 10 марта 2012

Я пытаюсь использовать Sweave и R, чтобы сообщить о результатах моего статистического анализа. Однако проблема, с которой я сталкиваюсь, заключается в том, что я хочу сообщить односторонние p-значения. Хотя, конечно, просто узнать значение одностороннего теста, мне трудно понять, как вывести одностороннее значение в таблицу, сгенерированную автоматически.

По сути, я хочу создать документ, в котором есть код для генерации моих таблиц, но в таблицах указано одностороннее p-значение. Я даже не уверен, возможно ли это, но если это так, то любая информация будет полезна.

Edit:

Извините за отсутствие кода для начала. Я думал, что может быть более общий доступный ответ, но ниже приведен общий код. Я просто использую базовую регрессию 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}

Итак, я в основном хочу иметь возможность передавать односторонние значения p в apsrtable для создания таблиц.

Кроме того, я довольно новичок в R в целом и чрезвычайно новичок в программировании на R, поэтому мне сложно понять такие вещи, как манипулирование кадрами данных и тому подобное.

1 Ответ

5 голосов
/ 10 марта 2012

Не зная, какой анализ вы хотите сделать или какие-либо воспроизводимые коды, трудно дать исчерпывающий ответ. Но вот несколько советов:

  1. Я написал небольшой пакет swst, предназначенный для печати статистических результатов в Sweave. Небольшое руководство см. В моем блоге , который также содержит коды, которые можно использовать для ручного извлечения значений p из htest объектов (которые используются многими статистическими тестами в R). Вы можете найти коды для извлечения значений p из некоторых других объектов в исходных кодах . Если ваш объект еще не поддерживается, пожалуйста, дайте мне знать. В настоящее время я не думаю, что реализовал опции для вывода односторонних p-значений, но вы можете посмотреть на исходные коды, чтобы увидеть, как можно извлечь двухсторонние p-значения и просто разделить их на два.

  2. Вы можете использовать пакет xtable для генерации кодов таблиц LaTeX на основе фрейма данных. Вы можете найти очень краткое введение в xtable в некоторых слайдах, которые я сделал на Sweave (также содержит пакет swst) и Googling.

Edit:

Что касается отредактированного вопроса. Вероятно, лучше всего вручную извлечь значения и построить таблицу. Вот пример отчета по односторонним значениям 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)
...