2

Beamer プレゼンテーションに出力する短い Sweave ドキュメントを作成しています。このドキュメントでは、sagetex パッケージを使用してベータ二項分布の 2 つのパラメーターの方程式を解いており、パラメーター値を 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}

すべてが正常にコンパイルされ、そのスライドでは、その項目別リストの 3 つの方程式のそれぞれのパラメーターの解を見ることができます (たとえば、そのビーマー スライドの項目別リストの最初の項目は次のように出力されます[a1=(328/667), b1=(65272/667)](私は投稿できません)ビーマー スライドの画像ですが、ご理解いただければ幸いです)。

パラメータ値a1,b1,a2,b2,a3,b3を R オブジェクトに保存して、シミュレーションで使用できるようにしたいと考えています。sagetex パッケージには、他のプログラム (この場合は R) で使用するために sage コマンドからの出力を変数に保存する方法に関するドキュメントが見つかりません。これらの値を R に取り込む方法に関する提案はありますか?

4

1 に答える 1

1

うわー、あなたは本当に2つの世界を混ぜています;)

私があなたに与えることができる唯一のアイデアは、ソルブ コマンドの "solution_dict=True" パラメーターです。次に、値を出力するのに役立つPython辞書を取得します。しかし、Sweave が正確に何をするのか、プロセスのどのステップがいつ何を書き換えるのかはわかりません。

一般的には、sagetex のみで記述し、rpy2 Python ラッパーを介して R を呼び出す方がよい場合があります。しかし、それはあなたにとっては大変な作業かもしれません.1枚のスライドだけで、pdfマージを介してそれらをつなぎ合わせますか?

于 2010-06-18T22:02:08.200 に答える