2009年03月23日

Rで描いたグラフ中の数式をLaTeXで書き換える[R]

Rで図中に数式を書きたい場合はexpression()やpaste()なんかを使って頑張るんだけど、 これが結構複雑で面倒な上に出力が汚い。そこで、Rで数式を書くのはあきらめて、数式の部分だけ後でLaTeXの力を借りて書き直す、 という方法を採るときれいなグラフが得られる。

今回、手順としては「PS形式でグラフを作る」→「PSfragでテキストを数式に置換」→「LaTeXで処理」という形をとる。

まー結局はPSfragの使い方なのでRに限った話じゃなくてps/epsファイル全般の話になりますが。

それではお手元にRとLaTeXの環境を用意してご覧下さい。

1.PSfragを準備

まず、PSfragを入手しないといけないのだけど、何か僕の環境にはすでに入っていたのでTeXインストーラーなどを使ってLaTeX一式をまとめてインストールした場合に一緒にインストールされるものに含まれているのだと思う (便利ですねインストーラー!)。もしなかったらCTANなどを探して拾ってきてパスの通った場所に置く。 (この辺正直詳しいことがわからないので聞かないで下さい><)

2.グラフの準備

グラフを準備する。先月作ったデルタ関数のグラフを使いまわそう。

アレは次のようにして描いた。

#余白設定
par(mar=c(3,3,3,1), mgp=c(2,1,0))
#関数定義
Delta <- function(a, x){
 a <- complex(imaginary=1/a)
 Im((pi*(x-a))^-1)
 }
#プロット
curve(Delta(7.5,x), -2, 2, ylim=c(0,10),
main=expression(lim(paste(Im, over(1, pi(x-ia))), a %->% 0)),
xlab="x",
ylab=expression(paste(delta, (x))),
col=1)
par(new=T)
curve(Delta(15,x),  -2, 2, ylim=c(0,10),main="",xlab="",ylab="",col=2)
par(new=T)
curve(Delta(30,x),  -2, 2, ylim=c(0,10),main="",xlab="",ylab="",col=3)
#凡例
legend(
0.5, 10,
box.lty=0,
legend=c(
expression(paste(a=7.5^-1)),
expression(paste(a=15^-1)),
expression(paste(a=30^-1))
),
col=1:3,
lty=c(1,1,1)
)

こんなのが描ける。

delta1

…やっぱ数式が汚い。

で、せっかく頑張って作ったこのグラフは使えない。PSfragはPSファイル中のテキストを認識して置換するので、 次のようにしてタイトルや軸ラベルをテキストにしたグラフを作らないといけない。

#プロット
curve(Delta(7.5,x), -2, 2, ylim=c(0,10),
main="main.title",
xlab="xlab",
ylab="ylab",
col=1)
par(new=T)
curve(Delta(15,x),  -2, 2, ylim=c(0,10),main="",xlab="",ylab="",col=2)
par(new=T)
curve(Delta(30,x),  -2, 2, ylim=c(0,10),main="",xlab="",ylab="",col=3)
#凡例
legend(
0.5, 10,
box.lty=0,
legend=c(
"l1",
"l2",
"l3"
),
col=1:3,
lty=c(1,1,1)
)

次のようなグラフが得られる。

delta2

ただこれはpng。PSfragが処理できるのはps/epsファイル。 なのでたとえばデバイスをpostscriptにするとか、Windowsのデフォルトのグラフィックデバイスから 「ファイル」→ 「別名で保存」→「postscript」するなどしてepsとして保存しておく。

他に注意として、置換は文字の先頭位置を基準に行われる。なのでたとえばタイトル部分を省略して「t」一文字などにしておくと、 そこを基点に数式が挿入されるのでちょっと右よりになってしまう。

3.LaTeXで処理

パッケージとして呼び出すのはpsfragのほかにgraphicxも必要。psファイルを描く必要があるので。

psfragの使い方は

\psfrag{置換前テキスト}{置換後テキスト}

とこれだけ(オプションも指定できるけど省略)。このコマンドでテキストを置換した後、 psファイルを呼び出してやると置換後の状態で描画される。 置換後のテキスト部分には$$などを用いてLaTeXでいつもやるように数式が書ける。

なので、今の例で行くと次のようなファイルを作る。ここではtexファイルと同じディレクトリに「delta.eps」 という名前で先ほどのpsファイルが保存してある。

\documentclass{jsarticle}
\usepackage[dvips]{graphicx,psfrag}  %パッケージ:graphicx,psfrag
\begin{document}
 \psfrag{main.title}{
$\displaystyle \lim_{a\rightarrow0} \Im \frac{1}{\pi(x-ia)}$
}                                  %テキストの置換
 \psfrag{xlab}{$x$軸}
 \psfrag{ylab}{$\delta (x)$}
 \psfrag{l1}{$7.5^{-1}$}
 \psfrag{l2}{$15^{-1}$}
 \psfrag{l3}{$30^{-1}$}
 \includegraphics[scale=1]{delta}    %epsファイルの呼び出し
\end{document}

で、これをTeXで処理する。dviファイルの段階ではまだ置換は行われず、psファイルまで変換して初めて置換が行われるのに注意。

で、psファイルまで変換が終わると次の出力が得られるはず。

delta

今15分くらいでパパっと作ったので若干フォントのサイズや種類のバランスが悪いけど、とりあえず置換はできた。簡単!

Rの出力に比べてずいぶんきれいだし、あと数式部分のソースも読みやすく書きやすいと思う。 LaTeXだとドイツ文字のIとか使えていかにもそれっぽいね!

posted by Rion778 at 01:35 | Comment(0) | TrackBack(0) | PC関連。HTMLとか,Linuxとか,Rとか | このブログの読者になる | 更新情報をチェックする
2009年03月18日

上限と下限[位相のこころ p.31〜]

A⊆Qについて,

  1. すべてのx∈Aにたいしてx≦a
  2. すべてのx∈Aにたいしてx≦u ならばa≦u

というようなaは,uをxにいくらでも近づけることができるために,x≦aというようなaの中で最小のもの, Aのすべてを抑えるぎりぎりのものとなる.このとき,これを∪Aと書く.上からギュッと押えるイメージ.これをAの上限と呼ぶ.

先の1.,2.において不等号を逆にしたもの,つまりAを下から押えるぎりぎりのものを∩Aと書き,Aの下限と呼ぶ.

特にQの場合は上限をsupA, 下限をinfAなどとも書く.

上限,下限は必ずしも存在するとは限らない.上限・下限が存在しない例として次のようなものが挙げられる.

  • Q  …  有理数全体を「抑える」 ことはできない
  • ∪φ  …  抑える対象が存在しない
  • A={x∈Q|x2≦2}    …  √2は有理数の中に存在していない(Aの中と外の間には途切れ,gapが存在している)

また,P(E)の場合, AP(E)という部分集合の集まりについて∪Aは全てのX∈Aを含むもの, つまり合併集合となる. そして∩Aというのは全てのX∈Aに含まれるもの, つまり共通集合となる.また、 Eの部分集合をひとつも取らないΦP(E)については普通次のようにする.

  • Φ
  • Φ=E

これは最初の1.,2.に当てはめてみると,1.についてはそもそも判断すべきXが存在しないので自動的に満たされ、 2.についてはUというのが任意のU∈P(E)になるため、「任意のUに含まれるX=φ」 「任意のUを含むX=E」というようなことになる。ただ、なじめなかったら定義と思ってしまってもいいそうだ。

また,QP(E)について次の性質が挙げられる.

  • ∪{x|x<a} = a
  • ∪{x|x>a} = a

ただし,自然数の集合Nでは次のようになって成立しない.

  • ∪{x∈N|x<n+1} = n

関数 f:Λ → Q について, たとえば∪f(Λ),∩f(Λ)というようなものを表したいとき,次のような書き方が使われる.

一般のxnについては同様に次の記法が使われる.

(ちなみにLaTeXで∪のでかいやつを描くコマンドが\bigcupだと調べるのにちょっと苦労した. 考えたらわかりそうな気もしたけど.)

また,A⊆QについてAをQに埋め込む単射 i:A → Qではxとi(x)を同一視して次のような書き方がされる.

また,増大列(x0 ≦ x1 ≦ x2...)について,

は同値である.

なぜなら,b<a<cについて,n≧Nならb≦xn≦cとなるようなNがとれる.いま考えているのは増大列なので, xn≦cはすべてのnで成立する.そこでcの下限を考えると, xn≦aとなる.

----

まだ大丈夫だけどこれは他の本(高木貞二の解析概論とか.ほんの1mmくらいかじっただけだけど.)で見たからだな. どうもやっぱある程度高等な予備知識を要求されている気がする.

このままだとすぐ付いていけなくなりそうなのでなんか別にもう一冊くらい探さないと.などと思って集合・ 位相入門 を頼んだ.ちょっと頑張ろう。

教科書

posted by Rion778 at 18:46 | TrackBack(0) | 勉強ノート | このブログの読者になる | 更新情報をチェックする
2009年03月16日

順序構造[位相のこころ p.28〜]

有理数全体: Q
空間Eの部分集合全体: P(E)

順序構造を考える対象

(O1) x ≦ x

(O2) x ≦ y, y ≦ z なら x ≦ z

というような「公理」が成立するもの。Qでいうところの大小関係、 P(E)でいうところの包含関係(≦の代わりに⊆を使うアレ)など。

・「公理」を満たす極端な例

x ≦ y なら x = y …  自分以外と比較できない。比較ができるってことは、そいつが自分っていうこと。 離散順序とでも呼ぼう。

任意のx, yで x ≦ y … どいつとでも比較していいけど、 どっちがでかい(あるいは同じ)ことにしてもいい混沌順序とでも呼ぼう。

こういう変なのは避けたい…

(O1)、(O2)だけでは不十分(擬順序という)。「順序」 というときは次を加える。

(O3) x ≦ y, y ≦ x なら x = y

比較のときにxとyを入れ替えてもいいなら、そいつは「同じ」なんだ、という縛りを入れてやる。 別のもの同士を比較するときは入れ替えちゃだめというわけで、混沌順序を避けられる。

また、昔はこれも加えていた

(TO) 任意の x, y は x ≦ y または y ≦ x

けどこれはなくてもいい。 あるとQは大丈夫だけどP(E)とかが順序の仲間に入れない (二つの有理数はいつでも大小関係を定義できるけど、集合XとYはいつも包含関係にあるとは限らない)。 これを満たすものは全順序と呼んでもうちょっとイイモノだとしておく。

次に離散順序を避けるには…

(DO) 任意の x, y について u ≦ x, y ≦v となる u, v が存在する。

集合から適当に2つの元をとってきたとき、 その両方より小さいuとその両方より大きいvが存在するということ。 xとyが別物だったとき、 その両方と比較できるu, vが存在するということだから、 離散順序みたいに比較できる集まりがポツポツと飛んでいるものは避けられるという仕組み(と思う)。

これは有向順序という。Qみたいな全順序はもちろん有向順序。 P(E)もその元Xについてφ⊆X⊆E(少なくとも空集合は含むし、空間には含まれる) なのでやっぱり有向順序。

ついでにもうちょっと厳しくする。

(LO) 任意の x, y について

a ≦ x, y ≦ b

u ≦ x, y ≦ v なら u ≦ a ≦ b ≦ v

となる a, b が存在する。

a, b は次のように書く。

a = x ∩ y

b = x ∪ y

具体的に言うと、

aはxとyの両方より小さい、または両方に含まれる、 といったようなもののなかで一番デカイやつ

bはxとyの両方より大きい、または両方を含む、 といったようなもののなかで一番ちっこいやつ

aは下から押さえる感じ(だから、「デカイやつ」とか言っても実態は普通小さい。小さい中で一番デカイ)。bは上から押さえる感じ (同じく「ちっこい」といっても実態はでかい)。こういうものを束順序という (ちなみにこの束(laticce)はファイバー束とかの「束(bundle)」とは違う。違う概念に同じ名前。ややこしい!)。

ただの言い直しだけど、

Qの中の話だったらaはxとyのうちで小さいほう、bは大きいほうのこと。

P(E)の中の話だったらaは集合XとYの共通集合(共通部分)、bは合併集合(和集合)。

…というように、「順序」 と一言に言っても向きもへったくれもないものや自分と違うものとは比較を拒むようなものからいろんな段階のものが考えられるんだけど、 適当にx, yと2個持ってきたときに、 それらをまとめて押さえられる何かを定義できるようにしておくと便利ですよと、そんな話(だろうと思う) 。それらをまとめて押さえられる何かを定義するのは次のパートですね。

----

位相とか集合とか一度ちゃんとやらないと、とか張り切って読み始めた。

1時間で3ページしか進んでないとかどういうことなの…。

a ≦ x, y ≦ b とか書いてあるときに「a ≦ x」, 「y ≦ b」と勘違いしてて30分くらいロス。 xとyまとめてるだけなのに。x ≦ y, y ≦ zと定規でもって比べたら、a ≦ x, y ≦ bの方はカンマの後のスペースが0.5ミリくらい短かったよ!

本の最初のほうはその人の記号の使い方とか説明の仕方とかに慣れてないからどうでもいいとこで躓いてしまう。 この辺の話だって他の本で見たはずの内容だけどあらためて丁寧に追ってみると今みたいなつまらない躓きが…。 まあでも慣れたからペース上がるはず。きっと。おそらく。多分…。

ところで(TO)とか(LO)とかいう書き方は何なんだろう。人名とかの略かな?

教科書

posted by Rion778 at 02:29 | TrackBack(0) | 勉強ノート | このブログの読者になる | 更新情報をチェックする
2009年03月14日

メンデルvsフィッシャー?

(※2016/8追記)Fisherより指摘されたデータのバイアスは確認されなかったということで決着が付いています(cf. https://en.m.wikipedia.org/wiki/Gregor_Mendel#Controversy However, reproduction of the experiments has demonstrated that there is no real bias towards Mendel's data.以下を参照)。

メンデルの法則といえば高校生物でおなじみの優勢・分離・独立の3つの法則のことだが、これの元になった実験については 「データがあまりに都合のいい数値である」という批判があることは有名だ。

要するに、メンデルの法則が正しいかどうかはさておいて、メンデルの実験には捏造疑惑があるのだ(もちろん、 メンデルの法則がいくつかの例外を除いて、 あるいは例外についても適当な説明方法によって正しいということが主張できるのは周知のとおりだが)。

しかし、日本植物整理学会の「みんなのひろば」という一般の人からの質問に答えるコーナーの質問と回答をまとめた本、 「これでナットク! 植物の謎 」 という本で、次のような記述があった。

しかしメンデルにならって交雑の際に慎重に個体を選んだ三人の研究者が、それぞれ独自に出したデータも、メンデルと同様に 「きれい」なものだったので、フィッシャーの批判はあたらないとされています。

本当か?

ちなみに、Webページはこちら。 編集の都合だろうが書籍よりも記述がいくらか多い。

おそらく、「三人の研究者」というのはメンデルの法則を再発見したド・フリース、コレンス、 チェルマクの3人のことだろう。「工学のためのデータサイエンス入門」 にメンデル、コレンス、チェルマクのデータが載っているので引用する。

実験者  黄色個体  緑色個体
メンデル    6022     2001
コレンス    1394      453
チェルマク   3580      1190

ここでそれぞれのp値は0.9076, 0.6480, 0.9467である。

p値というのは、「理論が正しいとして、この比率よりも外れた比率が観測される確率」を意味する。つまり、 たとえばメンデルのデータから観測された0.9076という値は、「理論が正しい」ときに観測されたとしても問題のない範囲に存在している。

と、ぱっと見はそう思うだろう。

ただしこれを逆に考えると、「理論が正しいとして、この比率よりも『理論に適合する』 比率が観測される確率は1-pである」ということが言える。つまり、「理論」、3:1という比率、 これにメンデルの観測データはきわめて近い。そしてメンデルのデータよりもより「正確な」 データが得られる確率は1-0.9076=0.0924にすぎない。

コレンスはともかく、チェルマクのデータについてはメンデルよりも「正確」であり、 このデータが得られる確率は1-0.9467=0.0533、つまり5%程度である。

さらに悪いことに、メンデルが予想した「誤った理論」に「正確」なデータもメンデルは得てしまっている。 そこではある対立遺伝子についてF1個体の分離比をAA:Aa=201:399と報告していたのだが、 AAとAaの個体の識別方法に問題があった。メンデルは優勢形質が得られた個体からの種子10粒を育てて自家受精し、得られた種子にaa型 (劣勢)形質が見られれば親はAa型であり、全てAA型(優勢)ならば親はAA型であると判断を下した。 しかし確率的には(3/4)^10≒5%で親がAaにもかかわらず子が全てAAになってしまうという場合が生ずる。 よってメンデルの方法によって観測されるべきF1世代の遺伝子型の分離比は223:377でなければならないのである。

それに加えてなお悪いことに、メンデルは他にも数多くの形質について分離比を調査しているのである。そして、 フィッシャーの批判というのはこれらのデータ全てを総合して考察した結果にたいして向けられている。フィッシャーの計算するところによれば、 メンデルが報告した値よりも「正確な」データが得られる確率は、0.00005、 つまり10万回に5回という極めて小さな値となるというものだった(これについては「やさしい統計入門 」 から引用)。

以上から次のことが言える。

まず、メンデルのデータが当てはまりすぎているのは事実である。

つぎに、メンデルに続いた「三人の研究者」のデータが「当てはまりすぎている」かどうかというと、 これは微妙なところだ。ド・フリースのデータについては調べていないので分からないが、とりあえずチェルマクのデータはたしかに「きれい」 に当てはまっている。しかし、コレンスのデータはp=0.6480であり、これは実際の実験で「ありそうな」値だ。決して 「当てはまりすぎている」というものではない。

なので、続く研究者のデータも「きれい」なものだったからフィッシャーの批判はあてはまらない、 というようなことは言えない。

もちろん、植物が確率に従わないような何らかの制御機構を持っており、分離比が確率の示す以上に3: 1に近づくのだ、というような説は否定できない。ただ、「工学のためのデータサイエンス入門」には 「三人の研究者」 以外の研究データもいくつか載っており、 それらのp値だけを挙げると0.7408, 0.3779, 0.1742, 0.4488, 0.0950である。 理論に対して適当なずれを持っており、「きれい」というわけではない。

どうも私の調べた範囲ではフィッシャーに分があるように思えるがどうだろうか。

ちなみに、フィッシャーの意見は 「どのような結果が得られることが望ましいかを熟知している数名の研究補佐員によって、メンデルは欺かれていた可能性がある」というもので、 メンデルを直接に攻撃するものではなかったようだ。

posted by Rion778 at 04:05 | TrackBack(0) | 勉強ノート | このブログの読者になる | 更新情報をチェックする
2009年03月03日

iPod touchからテスト

seesaaがiPod touchによく対応してるので投稿テスト。 改行はどんな扱いだろう。 ↑に空白の行。

pタグ

divタグ
pc用の設定が反映されるとしたらHTMLが有効なテキストで改行タグの挿入なしになるはず。
posted by Rion778 at 09:24 | Comment(1) | TrackBack(0) | diary | このブログの読者になる | 更新情報をチェックする
2009年03月02日

イチゴ狩りへ

りあじゅうしてきたよ!

つ「っぽい写真」

受付にいた。

イチゴ狩りとか生まれて初めてだ。もうこんな機会はないかもなぁ。

今回は人間が多く移っていたのでFlickrに上げるほどのアレはない(あまり面白くない写真を数枚上げたけど)。 それになんか結構楽しかったので、今後語る機会はない。

ただ、デジカメのオートブラケット機能は常時ONにしておくべきだということはよく分かった。 8〜16GBのメディアが数千円で買える今、容量による制限はない。無駄に複数の露出で無駄に連写しておくと、「たまたまうまくいった」 写真が結構入る。一枚手ぶれしても他の数枚にブレなしの写真が記録される可能性は高い。 シャッタータイミングとかもあまり気を使う必要がない。買ったときからONにしとけばよかったと悔やまれる。

posted by Rion778 at 22:04 | Comment(2) | TrackBack(0) | diary | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は1年以上新しい記事の投稿がないブログに表示されております。