Kosugitti's BLOG

アンドロイドは正規分布の夢を見るか

この画面は、簡易表示です

研究メモ

rstan2.3.0お目見え

昨日ちょうどstanコードの比較云々の記事を書いたのだけど,月曜日にrstanが2.3にバージョンアップしてたのねえ。(本家サイトはこちら

しかも,インストールの方法が楽になった!たった数行コードをコピペするだけでできたよ(もちろんRcppなどコンパイル環境が整っている必要があるけれども)。インストール時にRcppやinlineも一緒にコンパイルするようになっているから,以前のエントリーで書いたような問題は気にせずに進めるようになってるよ。

 

ちなみに,新しいバージョンでの測度比較してみた。サンプルコードの8schoolsなんだけど,やはり仮想環境のUbuntuが最速,次いで仮想のWindows,最後にMacだったなあ。

MacでもCPU最適化してくれんかねえ。

 

Ubuntu

スクリーンショット 2014-06-25 13.38.04

Windows

スクリーンショット 2014-06-25 13.38.16

Mac

スクリーンショット 2014-06-25 13.38.28



Macのrstanは負担が大きい?

結論から先に言うと,OS環境下によって挙動が違いますよ、って話。特にMacは不利です(´Д` )

 

rstanのサンプルコードで8schoolsというのがありますが,それの実行にかかる時間が実は全然違う。

Ubuntuとwindowsはいずれもmacの仮想環境上で働いているんだけど,実行結果はこんな感じ。

まずUbuntu.

rstan_ubuntu

4つめの鎖だけですが,瞬殺(0.04sec)。次いでWindows.

rstan_win

これも0.05sec。ところがMacだと

rstan_mac

0.5sec…。いや,十分速いんですけど,10倍の違いがあるのはびっくり。

これは簡単な回帰モデルだから,ほとんど時間を感じませんけど,今個人的に書いているコードはちょい複雑。なので,Macで300秒ぐらいかかって,仕方ねえなあと思っていましたが,共同研究者がどうも結果をスイスイ出すので,?とおもって環境を変えてUbuntuにしてみたら,13secで答えが出た。コレはちょっと驚き。

多分rstanのコードがmacのコンパイラに最適化されていないんでしょうね。詳しくないのでわかりませんが。

ちなみに,結果ですが,それはそんなに心配しなくてもOKだとおもう。順にUbuntu,Windows,Macでの結果をのせます。

rstan_result.ubuntu

rstan_result_win

rstan_result_mac

乱数の発生機序がちがったりするから,同じになるはずは内し,まあ少なくとも1の位のオーダーでは狂ってないし,収束の程度(Rhat)も「こっちなら収束するのに?!」なんてことはないようです(たぶん)。

絵面を見ると,Mac>Ubuntu>Winの順で美しいですが,スピードが遅すぎるのはちょっと困るなぁ。ということで、当方しばらくは仮想環境上で仕事しようと思います。

 

※もし壮大な勘違いかなんかで,こうすればいいんだよ,というご指摘があればお願いします。



いろいろなrstanの入れ方

rstanをWindows,Mac,Ubuntuに入れた雑感。

一番入れやすかったのはUbuntu.普段のパッケージもコンパイルしながら遣って行くことが多いからか,あっという間に終わる、ということはないんだけど,丁寧に一つ一つRcpp,inline,rstanをコンパイルして入れていく。特にエラーもないので,待っているだけでいい。g++コンパイラとの相性の良さがありがたい。(参考記事)

次に入れやすかったのはWindows.Rtoolsというソフトの追加インストールが必要で,そこにcygwinのコンパイラが入っているが,ユーザーは気にするほどでもない。インストールするときに,PATHを書き加えることを忘れずに。後はRcppやinlineをパッケージとして入れればよし。ただ,Program Filesフォルダなど,デフォルトの場所にパッケージ等を入れてしまうと,rstanのインストールのときにこける。私はCドライブ直下にmyRlibフォルダを作って回避した。後はスイスイ進みます。

Ubuntuとwindowsの場合,コンパイラがちゃんと入っているかどうかを確認するコードで,cxxfunction関数を使うところがあるけど,ここでエラーが出ることもある。そんな場合は,cppFunctionで書き直すとよい。これらの違いはよくわかってないんだけど,ここはコンパイラがあるかどうかを各にするだけのところだから,ね。(参考記事1/参考記事2)

 

面倒だったのがMac。コンパイラを入れるためにXcodeをインストールする必要がある。さらに,コンパイルのオプション指定等でMakevarsファイルを不可視フォルダに作る必要があり,インストール最中も公式サンプルの通りにやるとwarningが出る。このwarning,出たまま無視していてもrstanはなんとか入るんだけど,実際の計算時にちょっと挙動が怪しい。

rstan users MLの記事を参考に,Makevarsファイルを次のようにしたらエラーなくコンパイルできるようになる。
[crayon-5bc702dfd79ce658036522/]
g++をclang++に変えるところがミソね。関連記事は自前だけどこちら

 

まあコンパイルできてしまえば,後はいいんだけどね。コンパイル後のマシン性能の比較については、別記事を立てる予定。

※ちなみに,当方メインはMac.Ubuntu,Windows8はParallels desktopで仮想環境をくんでいます。



OS X 10.9.2のR3.1.0にrstan2.2.0を入れる

知らない人には何のこっちゃというタイトルでしょうが、端的に表現するとこうなります。

R3.1.0 Spring Danceがさる4/10に公開されて,喜び勇んでいれたはいいけど,そこそこでかいアップデートなのでパッケージの入れ直しが必要なのです。で,MCMCに必要なStanをRからあつかうrstanパッケージをインストールしよう,というところで今日は色々時間がかかってしまった。でも問題解決したので,備忘録代わりに記録しておきます。

 

まず,rstanパッケージを入れるには,普通にCRANから選んでいれるんじゃなくて、自分の環境でソースファイルからくみ上げないと行けない,というのが現状。そのうちバイナリも提供してくれるかもしれないけど,今しばらくはそうならないので,頑張っていれるしかない。ちなみに,そのために準備するものとしてC++コンパイラが必要で,マカーはXcodeとXcode  Comman Line Toolsも必要。XcodeはApp Storeから,Command Line Toolsのいれかたはこちらのサイトを参照するといいです。

当方,OS X 10.9.2,Xcodeもこないだアップデートがあって,今試した環境はXcode 5.1.1です。

インストールの詳しい方法は,Stanのホームページから Download and Get Startedへ移動して,中に書いてあるのをしっかり読んで追いかければオッケー。

なんだけど,ちょっとトラップが。これはRの方の話なんだけど,rstanにはRcppとinlineパッケージもいるので,この二つをCRANからとってこないといけない。普通にinstall.packagesで行きたいところなんだけど,実はこの後のrstanのコードをコンパイルするときにRcppの挙動が問題になるようで,Rcppパッケージもソースから,自分の環境でコンパイルしないといけない(これをせずにやるとRが飛んでいくようになってしまう)。これは多分R3.1.0とRcppパッケージの間の問題なので,そのうち解決されるようになるかも,だけど,4/16のrstanMLでのやり取りではRcppを自分でコンパイルしたらいけるぜー,としか書いてない(明確な解決法の指示がない)ので,今しばらくは従うべし。

ソースからインストールしたことなんかねえよ,という人でも(Xcode等の環境を整えた上で)R上で
[crayon-5bc702dfd8afe638594270/]
とするだけだから,そんなに心配しなくていいよー(というかこの後の方が面倒だw)。

Rcpp,inlineライブラリとCコンパイラがちゃんと整っているかどうかを確認するためには,次のコードを実行すればよい(とrstanのサイトにも書いてある)。
[crayon-5bc702dfd8b09374806518/]
これでhello worldとコンソールに示されたら、準備OKってことです。

ちなみに,既にrstanパッケージがあって,書き換える・やり直す場合は,次の数行を実行しておきましょうぞ。これで取り外せますからな。
[crayon-5bc702dfd8b0f037065265/]
さて,ここからrstanパッケージを作っていきたいんだけど,環境を整えるファイル,Makevarsを”~/.R/”に作らないといけない。一般的なユーザーにとっては,不可視フォルダからテキストファイルを作らないといけないので,少しハードルが高く感じるかも。私はMagicanというmac環境を整えるアプリを愛用していて,このソフトの「パラメタ>Finder」から不可視ファイルの表示,Rootからの表示にチェックを入れて,見えないところも見えるようにし,ルートディレクトリのすぐ下に.Rフォルダ,その中にエディタmiでMakevarsファイルを作る・・・という手法でやりました。

でも,これも簡略化されたやり方があって,上のやり方がよくわかんない,という人はR上で
[crayon-5bc702dfd8b15787678430/]
とすればいいです。これはRがその場所に設定ファイルを作るプログラムになってます。もし既にMakevarsファイルがあったら,その内容が表示される仕組み。

このファイルを作り終わったら、後は簡単で,次の二行を実行するとなにやら色々作業が始まるのでlす。
[crayon-5bc702dfd8b1a183263386/]
ネットからソースコードをとってきてコンパイルするので,ネット環境は必須ね。しかも,作成にはちょっとばかり時間がかかるし,その中で合計6つぐらいの警告が赤字で出るから、大丈夫かよこれ、と思いながら進めることになります。でも,警告なので多分大丈夫で,最後に「DONE(rstan)」と出ればパッケージができたってこと!

あとは一旦Rの再起動をして,eight schoolsなどのサンプルコードを走らせてみたらいいんじゃないかな。多分,ベクトル演算で素早くなったMCMCの世界がやってきます。

ミソはRcppも自分でコンパイルする必要がある,ってところだったよ。それを知らなかったから,rstanは作れるんだけどサンプルコードを走らせている最中に飛んでいくとか,「EXPECTATION FAILURE LOCATION:」ってエラーが出て,もう何度か泣きそうになりました。

まだrstanを使ってみようと思っているMac Userは国内では少ないだろうけど,何かの足しになるかと思って記事にしました。

 

追伸 なんでrstanを入れたかというと,「ベイズ推定による多変量解析入門」ってので話す必要があって,MCMCpackだけじゃ面白くないかもな,とちょっと思ったからです。研究会の方も,よろしければご参加どうぞ。

さらに追記)2014.06.15 Ubuntu14.04に入れたい場合はこちらの記事をどうぞ。Thank you @kaztan!



Yamadai.TeXをやりましたよ

Yamadai.Rと称して,山大でのR研究会をやっていますが,その番外編としてYamadai.TeXというTeXの使い方チュートリアルを開催。

TeXの使い方は普通,自学自習で習得するものなんだろうけど,こんなに便利ですよ,こんなこともできますよ,というアピールする場を介して入ってくるってのもいいと思うんだ。で,学生相手に公開形式でやってみた訳です。

やはり環境ごとのインストールが最初のハードルで,それが終われば後は比較的スイスイ,かな。
Bibtexのあたりは試行錯誤感があったけど,TeXは構造化された文章を書くのに向いていて,文章を書くことだけに集中して体裁は後で,という人には向いているんじゃないかな,と思います。

Re:VIEWやSphinxのように,プレーンテキストにマークアップして出力はいろいろ,というやり方がこれから広まって,「文章を書く」ということがもう少しストレスなくできる世界が来ると嬉しいなあ。

そのときのサンプルコードは,このサイトにおいておきます。
Yamadai.R番外編 Yamadai.TeXサンプルコード

それにしても,Wordで罫線がずれるのを気にしない,という人がいるのには驚いたぞ。。。



数理社会心理学の基礎

国立大学入試二次試験二日目の業務を終えて長崎へ。師匠・学友と研究打ち合わせ。

夜遅くまで及んだ話し合いの中で,数理社会心理学を確立しようという話になって(ちなみにほとんど素面),社会心理学の理論を作るための原理としてどのような公理をたてるべきか,わいわい言うてました。

そのときのただの思いつきなんだけど,アシモフのロボット三原則を逆転させるような形で,次の三つの原則をおいたらどうかと提案してみた。

(狭義の)社会心理学の三原則
第一条 社会的単位(個人・個体)は死にたくないものとする(自己保全の原則)
第二条 第一条に反しない限り,社会的単位は他者に制限されない自由を求めるものとする(主体性の原則)
第三条 第一,第二条に反しない限り,社会的単位は他者と共にいることを求めるものとする(親和性・社会性の原則)

そこそこ悪くないと思ったんだけど,師匠は社会性を考えるのであれば人間に限定せず,社会的存在一般,あらゆる動物(昆虫やバクテリア,多細胞生物一般というレベルまで含んだ社会的生物)を対象にするように考えるべきだ,という。そこでいろいろ議論してみたが,これはまだうまくまとまらない。今のところ次の二条までで止まってしまう。
(広義の)社会心理学(社会的存在,社会生物)の原則
第一条 男性は女性,女性は男性を好む(性の原理)
第二条 社会的単位は複製を作らなければならない(自己,子孫の再生産による社会の原理)

 

社会性,関係性の公理をたてたらそのあとは,扱うべき元(仮に関係子と呼ぶ)を定義し,関数の形で表していくつかの定理(例えば,かくかくしかじかで示される状態を社会的に生きていると呼ぶ,といったような)を書く。それが数理社会心理学の基盤になるはず。これを論文にしたら,Natureに掲載されるんじゃないかとかいいながら盛り上がってました。

 

半分冗談,半分マジな話。



RとTeXのいい関係

最近のマイブームはTeXです。たぶん[改訂第6版] LaTeX2ε美文書作成入門がでて,Texlive2013ベースで導入するようになり,導入の敷居が低くなった=プラットフォーム化がすすんだことが原因の一つなんだろうと思う。これでうちみたいな文系心理の学生にも紹介しやすくなったし。

ところで,昨日必要に迫られて(理由はこちら)psychパッケージのヘルプを読んでいたら,ずいぶんと便利な関数があることを知った。psychパッケージの結果をTeX出力してくれる関数群だ。結果の美しさに感動したので,ついでにRとTeXのつなぎ方について,わかったことを書いておく。ここで紹介するのは,

  1. RstudioのSweave機能
  2. xtablesパッケージ
  3. psychパッケージのいくつかの関数

です。

1.RstudioでSweaveする

これはRStudioで新規Sweaveファイルを開くだけの簡単な方法。documentclassから始まり,\end{document}で終るファイルが開かれる。Rの式や関数を<<>>==から@の中に記載し,Compile PDFボタンを押すだけ。Rに入力したコードも表示させたかったら,echo=TRUEのオプションを着けておく。プロット等の図版が欲しい場合は同様に,fig=TRUEのオプションも書いておく。
[crayon-5bc702dfd9794145359162/]
結果はこちらにあるとおり。図のファイルは自動的にPDFファイルを作ってくれたりするから大変便利。

ただし,日本語入力等には対応していないし,時々うまく行かないこともあるから,自分でソースを見て修正をかけたほうが良いかも。その場合は,コンソールで
[crayon-5bc702dfd97a0565686080/]
とし,texファイルを出力させる。直すべきところとして,

  • スタイルファイル,Sweaveとaeをとってくる必要がある。こちらのサイトを参照。
  • documentclassを{jsarticle}に。なんなら[uplatex]で。
  • usepackage{graphicx}を追加。
  • PDFをincludegraphicsするときにはBounding Boxが必要。

このへんで対応できるかなと。

ところで,コンパイルはuplatexで,というのがこれからのスタンダードのようだし,いろいろエラーがでたり書き直すのも面倒,ということもあるでしょう。自分のTeX書式テンプレートを用意しておいて,そこにRの結果等を書き込みたいな,と言う場合には次の2.や3.の方法を使いましょう。

2.xtableパッケージのxtable関数

これはもうそのまま,次のコードを走らせればすぐにわかる。
[crayon-5bc702dfd97a6424928320/]
プロンプトにTeXのコードがでてきたと思うので,それを自分のTeXテンプレートに書けばOKなわけだ。xable関数は色々な書式に対応したテーブルを書き出してくれる。

3.psychパッケージの様々な関数

これが本題。psychパッケージの中に入っているいくつかの関数で,自動的に表を出力してくれるのがありがたい。関数はそれぞれ次の通り。

  • df2latex…データフレームをTeXにしてくれる
  • cor2latex…相関行列をTeXにしてくれる
  • fa2latex…因子分析の結果をTeXにしてくれる
  • omega2latex…信頼性係数ωの情報をTeXにしてくれる
  • irt2latex…項目反応理論の結果をTeXにしてくれる
  • ICC2latex…ICCの情報をTeXにしてくれる

ソースコードは次のような感じ。上のxtableパッケージの結果と合わせてコンパイルしたtexソースPDFも資料として上げておきます。
[crayon-5bc702dfd97ac604394239/]
ちなみにTeXとは関係ないけど,psychパッケージは因子分析の図を書いてくれるfa.diagram関数や,fa.plot関数ってのもあるから面白いねえ。アップデートもしっかりあるし,今後も展開に期待したいパッケージの一つです。
[crayon-5bc702dfd97b1162046537/]

追記 Texlive2013にはXeLaTeXというUTF-8対応のtexがあるので,これを使えばRstudioのSweaveからも日本語でコンパイルできるよ,との情報をいただきました。ありがとうございました。



電子書籍出版への遠い道のり

ということで,ePubにできましたよ,っと。Sigilで微調整をして,表紙の絵を探してきて着けたりして,それっぽい体になりました。

後はそれを公開するんだけど,共著者との共通見解で「お金儲けにしたくないよね」というのがあって。

統計環境Rのチュートリアルセミナーでつかったテキストなので,みんながRを使ってくれるきっかけになってくれたら嬉しいし,何よりLaTeXやSphinx(やReVIEW)でいろいろやるのが楽しかった。なんならePubにして電子出版してみたい,というところまで楽しみの一環で,その経験が報酬として得られたらそれ以上は別にいいや,という感じ。著者が複数いるので,取り分で喧嘩になったりするのも嫌だし。

ということで,フリーソフトウェア精神でやろうと思ったわけです。クリエイティブ・コモンズのCC-BY-SA(表示と継承はお願いね)ライセンスでやろうということになって。でももちろん,できれば多くの人に使ってほしいわけだから,みんなの手の届きやすいところにおいておきたい,ということで置く場所をいろいろ探したわけです。

有名どころはAmazon(Kindle),そしてPaboo。まずPabooで,と思っていたんだけど,なんとここは自作のePubをアップロードするためには有料会員にならないと行けない。しかも月額525円って,ちょっとうっとおしい金額。なんか違うな,と思って今度はKindle Direct Publishingをみた。ところが今度は,アカウント登録の際に銀行口座を明記する等の手続きが必要。しかもアメリカの方で印税が発生するため,Amazonが源泉徴収をしちゃうんだけど,それを回避するためにはアメリカの税当局に申請して固有ナンバーを付与してもらう手続きが要るっていう。他にも,形式はePubでアップロードできるけど,mobiというKindle専用形式に変換されちゃうということがあって,面倒だなあという印象。しかも一番の問題は,最低でも99円という値段を付けなくちゃ行けない。つまり,お金儲けしないといかんのです。

PabooやAmazonの言い分もわかります。無料で出版してやるんだから,どこかでマネタイズするために,会員経費としてとるか,出版手数料としてとる(=そのため定価0円は困る),ということでしょうね。そもそも儲けたくない人なんていないでしょう?ってことでしょう。

正直,資本主義怖いなー,と思った。資本主義から逃げられないようになってる。俺はお金儲けがしたいんじゃなくて,ただ楽しみたい&楽しませたいだけなのに。お金が関わらない楽しみ方ができないように,システムが迫ってくるのです(´Д` )

とりあえず,無料で出版&無料で公開してくれるところを探さないといけない。ひとまずこのサイトには上げておいて(ただしWordpressはepub形式を異端と見なすので,このサイトを参考に設定ファイルの書き換えが必要でした。),あとはGoogle Play Booksが無料でアップ・ダウンさせてくれそう(DRMフリーで)なので登録申請中。他にも探してみるつもりだけど,ちょっと望み薄かなあ。

いやいや,なかなか道のりは遠いものです…。

 

追伸 ちなみに,あたかも俺が奮闘しているように書いてしまいましたが,実際手を動かしたり色々調べたりしてくれてるのは,同僚の押江先生です。お世話になってます。



【まとめ】電子書籍に関するこれまでの奮闘

iBooksAuthorが出たときに,これだ!と思ったのよ。

書籍を,電子媒体として出すことができる,しかも個人レベルで出すことができるとなると,大分気が楽じゃないかと。

一つはボリューム。別に薄いペラッペラの本を出してもいいわけで,「出すからにはちゃんとせにゃあ」という気合いが少し減る。これは「後に残るものだからちゃんとしないといけない(孔明様も「やはり書物に嘘は書いてないものじゃ」って言ってた)というプレッシャーからの開放にもつながる。もちろんちゃんとしたものを出さないと行けないんだけど,技術が進歩することもあれば,誤字脱字は出版した後も見つかるものでね。そういう意味で,電子書籍にしたらアップデートしやすかったりするからいいよなあ,というのがある。

もちろん,ちゃんとした出版社でちゃんと出すことのメリットがあって,最大の利点は編集がちゃんと入るってこと。言葉のチェックだけじゃなくて,レイアウトの美しさまで考えた校正をしてもらえる。しかも,宣伝してくれるし,本屋さんに自分の本が並んでいると嬉しいっていうのもある。もちろん,印税ももらえるわけです。

逆に,売れない本は出してくれないし,印税で儲けることがねらいじゃないから,もうちょっと気楽な・・・という情報公開がしたいこともあるよね。

 

で,iBooksAuthorが出たときに,これだ!と思ったのよ。

実際,統計の授業で使っている自分のノートを清書して,Rの使い方なんかも交えて買いて,ePubにして学生に配布してやろうと思っていたんだけど,さてこれがなかなか筆が進まない。というのも,元はTeXで書いていた原稿があるていどあるので,それをiBooksAuthorがそのまま読み込んでくれりゃあ問題ないんだけど,そういう機能はまだついてない。で,コマンドを消したり加筆修正したりして書いていたんだけど,やっぱりアプリとしての使い勝手は合う合わないがあるわけで。

iBooksAuthorは悪くはないんですよ。WYSIWYGがいい人にとっては,便利難じゃないかなあ。でも個人的には,それよりも数式の美しさ,図表の美しさ,レイアウトの美しさが欲しいのです(Macなのでフォントの美しさ等は問題ない)。

で,やっぱりTeXか,LaTeX -> HTMLやLaTeX->ePubの変換かなあ,とか考えていたけど,そこから意外な方向に路が分岐していったわけです。

まずPandocというのに出会った。これはいろんな書式のデータを相互に変換してくれるアプリで,LaTeXからePubも作れたりする。でも,日本語LaTeXの時にはスムーズに行かなくて,現在進行形で対応中のよう。

次に,構造化されたテキストから様々な形式にファイルを吐き出す,SphinxとReVIEWというのに出会った。

最初に好きになったのはSphinx。インストールが比較的容易で,quick-startを使うとコンパイルに必要な基本設定ファイルを自動生成してくれ,あとはmakeコマンドでhtmlやTeX,ePub形式に出力してくれる。元のソースはreStructured Textという書式で書くんだけど,これはまあ慣れてしまえばそれほど面倒でもない。

次にReVIEW。これもインストールは比較的容易。yamlという基本設定の書式ファイルは自動生成じゃなく,サンプルをみて(ダウンロードして)自分なりにカスタマイズしていく必要があるけど,それができればSphinx同様,html,TeX,ePub形式に出力可能。元のソースはReVIEWフォーマットに従って書くんだけど,書式自体はreStructured Textよりこっちの方が慣れるのは早かった。出来上がった出力結果,LaTeX経由のPDF を比較すると,どちらかというとReVIEWがつくるファイルのほうが美しいと感じたし。開発者が日本人なので,日本語の対応もスムーズにいってると思います。

で,スイスイ書いていたんだけど,ReVIEWには一つ問題が。数式がうまく出ないんですよ。@<m>というコマンドはあるんだけど,ePubやhtmlでは奇麗に出ない。LaTeX書式で出すとちゃんと出るんだけど,今回はePubが欲しかったわけで,これには困った。ReVIEWが今後更新されていったらもう少し対応してくれるのかしら。それに期待するしかないけど,現状は無理。

で,Sphinxはその点,比較的対応が上手。デフォルトでmathjaxという仕組みを使っているみたいで,htmlレベルではこれで奇麗に出る。ePubにする場合は全然だめだったんだけど,mathjaxのエクテンションを外せば,dvipngを使って数式を図として取り込む。これを使えば,いいePubができました。

できあがった書籍については近日公開予定です。ちょっとまってね。

 

ということで,結論から言えば,数式の入ったePubが欲しければSphinx,数式がなく文章主体のePubならReVIEW,数式が入ったPDFでいいなら当然LaTeXというところでしょうか。Sphinxはコンパイルのときに所々失敗するところがあって(例えばコードブロックなのにハイライトできてない箇所があったりする),最終的にはSigilなんかで整えていかないと駄目っぽいけど。

ReVIEWもSpinxもまだまだ開発途上で,これからもっと良くなっていくだろうし,なっていってほしい。優劣つけがたいけど,自分の中でePubにするルールというか,一つのテキストから複数の書式を作るという今風のドキュメント作成が理解できたのはよかったなあ。

なにより,構造化された文章を,プレーンなテキストで,マークアップして書いていくのって軽くていいね,なんだか書くのが楽しいな,という気になりますね。研究者も結局は文筆業だからね。

 

ちなみに,Mac/Linuxユーザだから,コマンドラインでSphinxやReVIEWを導入しやすかったというのがあると思う。SphinxはPython,ReVIEWはrubyで動かすから,コマンドライン必須になる。Windowsの場合はCygwin経由でやるのかな?ようわからん。もうみんなMac使えばいいじゃない。



上三角行列のデータから対象行列を作る

MDSを実際のデータでやってみよう,という演習をした時の話。

学生には距離行列をmatrix型で全部入れさせたんだけど,自分でやる時は効率が悪いなあとおもっちゃう。だって,対象行列だもん。

上三角分のデータだけ入れたら,対角は0なんだし,自動的に対象行列にしてくれるように関数を書きたいなあ,とおもって書きました。たいしたことはない関数ですが,どこかにニーズがあるかもしれないのでさらしておきます。

 
[crayon-5bc702dfd9db2971961182/]
 

ちなみに,青木先生のページにも同様の関数があるんだけど,これは対角にもデータが入っちゃうのでちょっと今回の狙いとは違う。
一応,ご参考までに>>三角行列の要素を与えて対象行列を作る




top