Присвойте значения переменной sage объектам R с помощью sagetex и Sweave. - PullRequest
2 голосов
/ 05 июня 2010

Я пишу короткий документ Sweave, который выводится в презентацию Beamer, в которой я использую пакет sagetex для решения уравнения для двух параметров в бета-биномиальном распределении, и мне нужно назначить значения параметров в сеансе R поэтому я могу выполнить дополнительную обработку этих значений. Следующий фрагмент кода показывает, как я взаимодействую с sage:

<<echo=false,results=hide>>=
mean.raw <- c(5, 3.5, 2)
theta <- 0.5  
var.raw <- mean.raw + ((mean.raw^2)/theta)
@

\begin{frame}[fragile]
\frametitle{Test of Sage 2}
\begin{sagesilent}
var('a1, b1, a2, b2, a3, b3')
eqn1 = [1000*a1/(a1+b1)==\Sexpr{mean.raw[1]}, ((1000*a1*b1)*(1000+a1+b1))/((a1+b1)^2*(a1+b1+1))==\Sexpr{var.raw[1]}]
eqn2 = [1000*a2/(a2+b2)==\Sexpr{mean.raw[2]}, ((1000*a2*b2)*(1000+a2+b2))/((a2+b2)^2*(a2+b2+1))==\Sexpr{var.raw[2]}]
eqn3 = [1000*a3/(a3+b3)==\Sexpr{mean.raw[3]}, ((1000*a3*b3)*(1000+a3+b3))/((a3+b3)^2*(a3+b3+1))==\Sexpr{var.raw[3]}]
s1 = solve(eqn1, a1,b1)
s2 = solve(eqn2, a2,b2)
s3 = solve(eqn3, a3,b3)
\end{sagesilent}

Solutions of Beta Binomial Parameters:
\begin{itemize}
\item $\sage{s1[0]}$
\item $\sage{s2[0]}$
\item $\sage{s3[0]}$
\end{itemize}
\end{frame}

Все компилируется просто отлично, и на этом слайде я вижу решения для соответствующих параметров трех уравнений в этом детализированном списке (например, первый элемент в детализированном списке на этом слайде проектора выводится как [a1=(328/667), b1=(65272/667)] ( Я не могу опубликовать изображение слайда проектора, но надеюсь, что вы поняли).

Я хотел бы сохранить значения параметров a1,b1,a2,b2,a3,b3 в R объектах, чтобы использовать их в симуляциях. Я не могу найти никакой документации в пакете sagetex о том, как сохранить выходные данные команд sage в переменные для использования с другими программами (в данном случае R). Любые предложения о том, как получить эти значения в R?

1 Ответ

1 голос
/ 19 июня 2010

Ух ты, ты действительно смешиваешь два мира;)

Единственная идея, которую я могу вам дать, - это параметр "solution_dict = True" для команды решения. Затем вы получаете словарь Python, который может помочь вам просто вывести значение. Но я понятия не имею, что именно делает Sweave и когда, какой этап процесса переписывает.

В общем, было бы лучше, если бы вы написали это только в sagetex и вызывали R через оболочку Python rpy2. Но это может быть слишком большой работой для вас - может быть, только для одного слайда, а затем соединить их вместе с помощью PDF-слияния?

...