おわりに

ver.0.4.4.7.1(2026/9/6)

  • Shinyのアプリケーションを貼り付けていた部分を修正し、shinyliveで表示できるようにしました。
  • 12章の標準誤差の表記を少しいじり、新しく作ったShinyアプリで説明できるようにしました。
  • Quarto Pubとshinyapps.ioが2026年12月末でアカウントを作成できなくなるので、代替となるPosit Connect Cloudに説明を書き替えました。
  • 誤記を修正しました。

Webスクレイピングを説明するつもりで6月ぐらいから52章を準備していたのですが、あんまり進捗がよくなく、書いては日本語を見直しているところです。あまりやる気が起こらないのでShinyアプリを見直してshinyliveに置き換える作業を始めたところ、Shinyアプリ作成が面白くなってしまって夢中になっていました。以下のアプリはすべてShinyで作成し、shinyliveでWebRベースにした後、Claudflare Pagesで公開しています。

他にも勤め先の業務上利用できそうなものなどを作成していたら、2か月ほど経っていました。全然動画も作れておらず、52章は書き進められず、どうもあんまり調子が乗りません。52章作成はやや行き詰っているので、もうしばらくかかりそうです。最近のマイShinyブームが終わったら動画を作成したいと思います。100本作るのに2年ぐらいかかりそう。

Shinyは後発(StreamlitやDash)に押されるのかなあと思っていましたが、案外Streamlitが大流行りしている、ということは(僕が知らないだけかもしれませんが)聞きません。これらの簡単Webアプリケーションフレームワーク(っぽいもの)はシンプルなものは作成しやすいのですが、商用のカッチリとしたアプリの作成には向かないので、思っているよりビジネス的には相手にされにくいのかもしれません。AIが使えれば、フレームワークが難しかろうが、あまり大きな差はありません。デバッグは大変になるかもしれませんが、無理に簡単なツールで複雑なものを作るよりも、複雑なことがきちんとできるフレームワークを使うことがAI時代には優先されているような気がします。

とは言え、趣味のアプリを作るのであればこれらのツールは有用です。Shinyは初めに開発されたツールだけあって、イイ感じに周辺ツールがそろい、ノウハウも蓄積されています。AIも割とShinyのことを把握しており、簡単にアドバイスを受けることができます。ですので、楽しく統計のおもちゃを作るのであれば、RとShinyの組み合わせはまだしばらく生き残る道がありそうです。実際にアプリを作るのはパズルを解いているようで面白いです。

shinyliveというお金をかけず公開できるツールも揃ったので、ややダウンロードが重いのが気になるところではありますが、簡単に作成したアプリを共有することもできるようになっています。業務用アプリでもWebサーバーに(意図的にそのように組まなければ)ファイルを送付しないので、セキュリティ面でも比較的安全なように思います。

Shinyとshinyliveに飽きたらWebスクレイピングと欠測データについて書きたいところですが、また脇道に逸れるかもしれません。openxlsx2やofficerも今回使ってみて面白かったので、この2つのパッケージについてもTipsに何か書いて残したいところです。


最近ショーペンハウアーの「自殺について」を読みました。始めは言っていることがいまいちよくわからないものでしたが、目に止まる説が多く、読む価値のある本だと感じました。ニーチェを読んだときのような、鬱屈した精神の反動、みたいなものを感じないのもいいところです。

文中では、特に「死んだ後の状態は生まれる前と同じである」というのが納得がいく言葉でした。

小さいころから、夜ベッドで寝る時に、ときおり死について考えることがありました。死ぬことは存在が失われることであり、小学生ぐらいのころはそのことを想像すると恐ろしくて寝れなくなることもありました。しかし、恐ろしかったのは死ぬことそのものではなく、存在が失われる前の今の状態、生きているということは何なのかということでした。死が無に帰ることであるなら、今生きている自分はいったい何なのか、今実在していると思っている自分は実際には存在があやふやなのではないかと思うことが恐ろしかったのです。生物学を大学で学んでいたのは、この根源的な恐怖から生きていることに興味を持ったからかもしれません。

生物学から考えると、ヒトが老いて死ぬのは当然のことです。もし老いがなく、ヒトが自分を生存させ続けようとするなら、自分の食糧を確保し、立場を維持するためにヒトは子孫を残さないでしょう。老いて死ぬことで新たな世代を生み、子孫を残し、遺伝子を更新することができるのです。ですので、おそらく老化は(次世代に資源を譲るために)プログラムされていると思います。そうでなければ強い者がずっと強いままで、世代交代を起こすことができず、種としては失われてしまうでしょう。

ヒトとして生きていると、自分の精神であったり、その精神の大本である脳が自分の本体であると思いがちです。しかし、我々の本体は生殖細胞です。ヒトの体の大部分は生殖細胞を生かし、次世代を残すために存在しています。ですので、生殖細胞が本体で、体は生殖細胞の入れ物であり、乗り物です。乗り物を乗り変えることで我々の本体は長く生きるのです。マジンガーZの本体がパイルダーオンする方(パイルダー)で、ロボットはただの乗り物であるのと同じです。

体は入れ物側、ロボット側ですから、死は故障と同じです。ロボットと同じと考えることで、自分の存在に対する恐怖は減ったように思います。

生殖細胞を残すことで我々は永遠、とは言わないものの長く生きることができます。とは言っても、私のように独身であれば子孫を残せないので、入れ物側が死んだら本体も死んでしまいますが。

ニーチェは哲学者は結婚しないと言っていますが(実際にニーチェも結婚はしていない)、子孫がいなくなれば我々の遺伝子、つまり我々の本体は失われるわけです。ニーチェを含め、哲学者は皆能力が高く、非常に自尊心が高い人たちです。私はただのアンダードッグ、負け犬なので比べようもないですが、結婚していないことに思考の自由や幸せを感じることもあるし、コンプレックスを感じることもあります。小難しいことを考えてよくわからないことを言う人は、なかなか人とはうまくやってはいけないのでしょう。「哲学者は結婚しない」という言葉から、ニーチェのような偉人にも自分と同じようなコンプレックスがあったように感じ、そのことは私を安心させてくれます。


同じく、「自殺について」には以下のような言葉も書かれています。

「かつてあったものは今はもう無い。かつて一度もなかったものほどにもない。ところが、今あるすべてのものも、次の瞬間には既に、あったものとなる。」

これを読むまで、過去は(ちょうどビデオテープを巻き戻せるように)存在し、現在まで連綿とつながっているものだと思っていました。だからドラえもんやマーティがタイムマシンで過去に戻れることに、シュタインズゲートで過去を変えれば今が変わることに(不思議ではありますが)特に疑問を抱いたことがありませんでした。

でも、過去が存在するなら、過去の状態がどこかに記録、保存されていないといけません。しかし、過去の世界という情報量の多いものを記録しておけるものがこの世界にあるとは到底思えません。つまり、過去は世界に記録されていない、記録されていないから存在しない、ということに恥ずかしながら今更気が付きました。皆さんはもうご存じだったのかもしれませんが、タイムマシンで過去には行けません。だって過去は存在しないのですから。

未来が存在しないことは何となく理解できます。しかし、過去があると自分が認識できるのが、世界ではなく、自分やモノに過去が記録されているからだとは思ったことがありませんでした。つまり、過去は思い出補正の中にしかないのです。

未来がなく、過去がないということは、一瞬前の過去はもうなく、一瞬先の未来はまだないわけです。つまり、現在の時間の「厚み」は0です。厚みが0のものを重ねても厚みは0にしかならない、つまり時間は進みません。だから、時間は飛び飛び、つまり量子的であるということになります。速度が光速に近づくと、飛び飛びの時間の間隔が広くなります。そして、間隔の如何に関わらず、現在が消えると共に、一瞬後の現在が生成されることになります。この一瞬後の現在の生成のことを我々は「因果」と呼んでいるのでしょう。

また、過去の状態は1つしかないのに対し、未来の状態は量子力学的に無数に存在します。世界が過去に進もうとすると、どこにも記録されていない1つの状態のみを世界が取り続けないといけません。つまり、未来に進む方がエントロピーが大きいことになります。時間が未来に進んでいるのか、現在が遷移していることを未来と呼んでいるだけなのかはよくわかりませんが。

過去が無いということを想定すると、こう考えることで辻褄があうように思います。「過去が無い」というのは世界の解像度が上がったような気付きでした。これが本当かどうか確かめるすべは私にはありませんが、こういう気づきが物理学の本じゃなくて哲学書から得られるのだから、いろんなことを勉強した方がよいのだろうと思います。

ただし、なぜ現在が生成され続けるのか、厚み0の時間にどうやって世界の空間のすべてが収められているのか、など、世界にはまだまだ意味がわからないことだらけです。

世界に存在するのは現在だけで、過去も未来もありません。その現在も一瞬で過ぎ去っていきます。この薄っぺらで飛んでいくような現在に自分が存在すること、そしてなぜか思考できる生き物に生まれたことは何とも気持ち悪く、理解しがたいことのように思います。

Ver.0.4.4.7(2026/7/3)

  • TipsとしてmallでのLLMの利用方法について記載しました。
  • 誤記を修正しました。

Publilius Syrus(ローマ帝国時代の高級知識奴隷)の名言集を理解したくて、何とかLLMで一度に訳して意味を理解できないか、と思っていたので、mallについて勉強し、Tipsを書いてみました。

ラテン語は格変化が多く、語句の順番の自由度が非常に高く、日本語と同じく主語を略すことができる言語です。単語を調べるのも大変で、Onlineのまともな辞書を見つけるのも難しいです。ですので、ページに記載されている名言をすべて翻訳するのは大変ですが、mallを使えば少しは楽に翻訳できそうです。ただ、リモートLLMを使うとお金がかかり、ローカルLLMを使うととても時間がかかります。パラメータ数が少ないと精度が下がるので、なかなかうまくLLMを使うのは難しいなあと感じます。


研究者をやっていた時にも、企業に入った後にも、常に気になっていた点は「誰がリスクを取り、その責任を負うのか」ということです。研究者では、自分がやっている研究のリスクが高ければ成功した時に得るものは大きく、失敗すれば将来の自分の収入はなくなります。つまり、研究所でも大学でもなく、個人がリスクを取り、その責任を負います。

企業では、リスクを取るのは企業で、その責任を負うのも企業です。従業員個人はリスクの責任を負わないため、(企業内での立場を考えなければ)それなりに大きめのリスクを負うことができます。ただ、執行役員はそうはいきません。執行役員はリスクを取り、その責任を負う立場にあります。ですので、執行役員の給与は高く、失敗のリスクを背負うことになります。

ただ、基本的に日本の企業はリスク回避的です。1960年代ぐらいまでは大きめのリスクを取って成功した企業が多く、現代でもソフトバンクや楽天のようにかなり大きめのリスクを取っている企業もありますが、基本的には大きなリスクは取らない傾向が強いです。

ですので、日本では研究者は大きなリスクを取ると将来に不安が残り、企業はリスクを取れても取ろうとしていないわけです。研究者がリスク回避的になれば、社会全体でリスクを取るものはいなくなり、新しい発見やシステムは生まれなくなります。

中国では学者にリスクを大きく取らせる方法を取っています。学者は給与はある程度保障されており、大きめのリスクを取りやすい状況にあります。予算も大きく、研究開発での失敗の責任はある程度は国が取ってくれます。中国企業もかなり大きいリスクを取っています。これは経済の成長が大きいから、一発当てようという方が多いのでしょう。

アメリカでは学者が起業することで大きなリスクを取っています。アメリカではエンジェル投資家のような方も多く、海のものとも山のものとも知れないようなものでも投資が行われ、ベンチャー企業がどんどん生まれては消えていきます。ベンチャーが成功すればさらにリスクを取るために上場し、企業をさらに大きくするためにリスクテイカーになります。

日本も研究開発がうまくいっていたときには、学者が(人生のリスクを負うことなく)研究でリスクを取れたのでしょう。また、経済が成長していた時には企業もリスクを取れたのかもしれません。現在では研究者はリスクを取るのを恐れざるを得ず、経済成長がないので企業はリスクを取りません。リスクを取るものがいなければ新しいものは生まれず、今あるものを改良するのが精一杯になってしまいます。

ですので、学者か企業がリスクを取ることができる状況を作りだすことが研究開発においても、ビジネスにおいても重要だと思います。ただし、日本では官僚という、極限までリスク回避的な方たちが「リスクを取らせる方法」を考えて、実行しています。そもそもリスクの責任も報酬も得ない人たちが考えていては、うまくリスクを取らせることなどできないのでしょう。リスクを取ることのできる人がどんどん海外に行ってしまうのも仕方のないことのように思います。


最近、正義とか道徳のことが何なのかよくわからなくなり、自分の正義感を疑う部分が増えてきました。そこで、ニーチェの「道徳の系譜学」を読んでみています。クラウゼヴィッツの戦争論を手に取ったときにも思ったのですが、この時代のドイツ人はしつこく、修辞を添えて繰り返し同じような文章を書く癖があったようです。内容よりずっと修辞が多くて、読みにくくて困ります。

道徳の系譜学では、以下のようなことが心に残りました。

  • 正義とは復讐であり憎悪である
  • 罪を犯した者への罰、つまり復讐は快楽である
  • 道徳とは人の本能を抑え込むための檻であり、「疚(やま)しい良心」の原因である
  • 無欲は優越のための欲の一つである。

正義についての洞察は、確かにその通りだと思います。正義とは自分と違う正義を持つ人への復讐と憎悪であるということは、日ごろ過ごしていても感じることだと思います。

ニーチェは生き方が南方熊楠に似ていて、よほど偏屈な人だったんだろうとは思いますが、なかなかいいこと言うなあ、と感じました。

Ver.0.4.4.6(2026/6/17)

  • TipsとしてS7クラスについて記載しました。
  • 6章に関数の...についての説明を追記しました。
  • 誤記を修正しました。

R6とS7についてそれぞれTipsとして追加しました。R6は正統派のOOPのクラス、S7はバリデーションに力点を置いたシンプルなS4という感じで、それぞれ特徴が異なります。現状ではPythonを主に利用する方であればR6が使いやすく、S7はレアなS4使いには受けそうな感じです。個人的にはR6が一番シンプルでいいんじゃないかとは思いますが…。S3、S4、S7のいずれもジェネリック関数の設定がやや複雑で、いずれもどういう仕組みで動いているのかピンと来ないのが微妙なところです。

S3、S4、R6、S7を順番に勉強したので、かなり使い方への理解が深まったような気がします。最近ラテン語を少しかじっているのですが、まさに「Docendō discimus.」という感じがします。

RのOOPのクラスには他にReference Classやaoosなどがありますが、S3、S4、R6、S7を押さえておけば当面困ることはないと思いたいです。これらのクラスの使い勝手が気持ち悪くて新しいクラスを作ってしまう人が出てくるかもしれませんが。

このテキストの検索の使い勝手が悪いので、ぼちぼちAlgoliaの利用を検討してみたいと思います。ただ、こういうサービスはだいたい使い始めに苦労するので、実際に採用するかどうかは手元で試してからになりそうです。


ココの文書は誰も見ないと思っているので、好きなことを書き込んでいます。どんなことでも、書き出して公表してしまうとなんだかすっきりします。告白は許しである、とは言わないですが、少なくとも告白は心を軽くします。懺悔を許しとしたキリスト教徒はそのことをよく理解していて、宗教の仕組みに組み込んだのでしょう。皆さんもどしどし好きなことを書いて公表していくとよいと思います。それが教科書なら僕のためにもなって非常にありがたいです。

Ver.0.4.4.5(2026/6/9)

  • TipsとしてR6クラスについて記載しました。
  • 誤記を修正しました。
  • 47章:Shinyに/Rフォルダの記載を追加しました。

Ver. 0.4.4.4(2026/5/29)

  • TipsとしてWebRとshinyliveについて追記しました。
  • 誤記を修正しました。

WebR(というよりはquarto-webr)とshinyliveについて調べ、サンプルアプリを作成しました。shinyliveは面白い技術ではあるのですが、現状ではちょっと重すぎてObservableに太刀打ちできないように思います。サーバーを用いたShinyもshinyliveよりはるかに計量ですので、まだまだハードルは高いなあと感じます。とは言え、shinyliveを使えば簡単に、静的なページでShinyを動かせるので、使い方によっては面白いことができそうです。

ver.0.4.4.3 (2026/5/17)

  • TipsとしてS4クラスについて記載しました。
  • Tips:並列演算にprogressrパッケージについて追記しました。
  • Tips:並列演算のdoMCの記載が間違っていたので修正しました。
  • 10章:devtools::install_githubがパッケージから取り除かれたので、pak::pakで書き換えました。
  • 37章:リストテーブルについての記載を追加しました。
  • 48章:mixexpパッケージがCRANから取り除かれたので、githubのレポジトリからインストールするよう追記しました。いずれはなくなってしまうかもしれません。Mixture Experimentのライブラリはあまりないため、しばらくはpak::pkg_install("https://cran.r-project.org/src/contrib/Archive/mixexp/mixexp_0.5-1.tar.gz")などの方法でアーカイブからインストールして用いるのがよいのかもしれません。

S4についてまとめて記載しました。S4については長くRに備わっている割には日本語の資料がありません。というか、英語の資料も新しいものはほとんどありません。S4よりよくできたOOPのクラスであるR6や、新しいS7の方が最近はよく使われているのかもしれません。

そもそも私はノンプログラマーで、統計家でもなく、もちろんデータサイエンティストでもありません。Rユーザーには私のような方が多い(と思う)ので、S4を学ぶニーズがあまりないのでしょう。私も長くRを使っていますが、スクリプトを書いていて突然S4クラスを設計したくなることは今までありませんでした。

R6はShinyに使えるそうなので、R6とShinyへの適用についてどこかに記載したいと思います。また、ShinyをWebAssambly(というかWebR)でサーバーレスのWebブラウザ内で実行できるshinyliveというパッケージがあるようですので、使い方を記載したいなあと思っています。

ただ、Shinyの使い方を忘れてしまったので、適当なShinyアプリを作るのが大変です。少し苦戦しそうです。

また、このテキストも随分長くなってしまって、理解が難しくなってきました。文字を読むのが苦手な方もいるので、もう少し簡単な資料が欲しい、ということで動画を作ってみています。

5分の動画を作るのに2時間ぐらいかかるうえ、ライセンスフィーも発生します。持ち出しが多くて困ったものです。とりあえず1年ぐらいで100本ほど作成してみて、良さそうならYoutubeに上げてみようかと思います。

【立ち絵素材】

坂本アヒル様(ずんだもん)

坂本アヒル様(四国めたん)

ver.0.4.4.2 (2026/4/19)

  • Tipsとしてシステム関連の関数について記載しました。
  • TipsとしてS3クラスについて記載しました。
  • ライブラリとパッケージの記載が曖昧だったので、修正しました。
  • 文献をいくつか追加しました。
  • 4章にrm関数の記載を追加しました。
  • 16章にattachdetachの説明を追記しました。
  • 34章に一般化Wilcoxon検定の演算方法を追加しました。
  • pryrパッケージがCRANからRemoveされたので、後続のsloopパッケージで書き直しました。

並列演算について書いた後、何を書くか考えるために初心者用の教科書を読んだり、Advanced Rを読んだり、RのReferenceを読んでいました。まだまだRには知らないことが多いです。S3について書いたので、S4やS7についても勉強して書いてみたいところです。Webスクレイピングや欠測について書くはずだったんですが、書き始めてから3年経っても書けていません。どこかからやる気が湧いてきて、書けるといいんですが、余計なことばかりやってしまいます。

ver.0.4.4.1 (2026/3/20)

  • Tipsとして並列演算(Parallel Computing)について記載しました。
  • 誤記等を修正しました。

並列演算について、futurefuturizeという使いやすいライブラリが開発されているので追記してみました。futurizeを用いれば繰り返し演算を簡単に並列化でき、モンテカルロ計算やブートストラップを用いる際には役立ちそうです。

ver.0.4.4(2026/3/14)

  • 49、50、51章(因果推論)を追加しました。
  • 13章のstringr::str_cstringr::str_flattenの違いの記載を修正しました。
  • 20章のdplyrの説明にmutate_ifmutate_atmutate_allの説明を加えました。
  • 26章にexpand_limitsの説明を加えました。
  • 29章にbroomについて追記しました。
  • 32章にfactoextraについて追記しました。
  • 34章にsurvminer::ggforestsurvminer::ggsurvplot_facetについて記載しました。
  • 誤記等を修正しました。

因果推論についての章を追加しました。難産、というかまだ生まれていないという感じで、書き始めてしまったことを後悔し、書くのに大変苦労しました。数年前から教科書を買ったり読んだりしていたので、考えをまとめるために書き始めたのですが、ちょっと書くととたんに手法の意味がわからなくなり、勉強したり現実逃避したりしていたらあっという間に半年以上が過ぎていました。

正直、内容はまともなものではなく、便所の落書きかチラシの裏のなぐり書きみたいなものです。「なんとなくこういう手法がある」ということが伝わればいいなと思います。

あちこちに書いているように、私には統計の知識はあまりなく、下手の横好き・素人に毛が生えたぐらいなので、間違いがたくさん含まれています。統計について書いているのは、自分の勉強であること、自分のためのメモという以外には、「R-tipsにも書いてあったから」ぐらいの理由しかありません。各手法については参考文献を参照してよく勉強し、理解した上で利用していただければと思います。

「因果推論」というのは手法としても難しいですが、言葉としても難しいものです。そもそも「因果」というのが実態としてどういうものなのかわからない。科学哲学の本を取ると「因果は存在するのか」というところから話が始まってしまいます。因果の定義というものはなく、定義のないものを推論するというのもよくわかりません。

科学で取り扱うものは大体「因果を推論している」ため、特定の手法に「因果推論」という言葉を当てはめるのもあまりピンときません。実際に教科書を読むと、あれも因果推論、これも因果推論といった形でいろんな手法が紹介されています。文中には因果推論の手法としてよく紹介されるものを記載しています。


私は理学部出身です。理学部というのは、「実学をしない」ことがアイデンティティである学部です。実学をするなら工学部や薬学部、医学部に行けばいいわけです。したがって、理学部はすぐには役に立たない研究をすることに特化しています。

そういうわけで役に立たない研究をするわけですが、研究では何をやってもいい、というわけではありません。研究には美しい研究とそうではない研究があります。理学では、研究者個々人が美しいと思う研究をしようとしてします。

「美しい研究」の定義は人によって異なりますが、少なくとも私にとっては以下を満たすことが美しい研究です。

  • 仮説が明確で論理的であること
  • シンプルな実験系であること
  • 結果が明確に仮説を支持していること
  • 研究結果が今までの常識とは異なること

ニュートンのプリズムの実験や万有引力、アインシュタインの相対性理論などはこの条件を完全に満たしています。生物学では、ニュートンやアインシュタインと比べるのは難しいですが、個人的には以下の2つがシンプルで美しいと思います。

  • F1-ATPaseが回転していることをアクチン繊維をくっつけて証明した論文(Noji et al. 1997)
  • 体表面の色がシグナルの拡散から説明できることを魚の縞模様の移動で説明した論文(Kondo and Asai 1995)

これらの研究に共通しているのは、基本的に要素還元的であることです。要素還元的、つまり部分的に要素を切り取ることでシンプルな系とし、実験で評価できる形にしています。また、シンプルな系はわかりやすく、理解が難しくありません。

私も研究は要素還元的であるべきだとの考えのもとで、生物学のうちの生理学を対象として研究をしていました。しかし、生理学というのは生物というブラックボックスに処置という入力を加えて出力を評価する学問です。ブラックボックスの中に無数の要素が含まれており、要素還元的とは遠い存在です。RCTをすると因果がわかる、みたいなことを文中には書きましたが、実際にはRCTを使って結果を得てもブラックボックスの中身が不明でいまいち因果がわからない、なんてことはザラにあります。

生物学で要素還元を突き詰めるとタンパク質の立体構造研究に至ることになります。タンパク質は生物学の根源的な要素の一つであり、ブラックボックス的ではないからです。しかし、立体構造を調べるとなるとタンパク質の精製と結晶化、X線回折やNMRなどの手法を用いた、少し毛色の違う研究になります。立体構造の研究はどちらかというと予算や人手によって成果が出る分野であり、生理学のようなアイデア勝負のような研究ではなくなります。たくさんの生物種の中から1生物種を選び、1生物種に数千〜数万個あるタンパク質から1つを選んで評価することの意味も(実学的な意味を省いてしまうと)いまいちわかりません。要は、私には立体構造の研究は面白そうには見えませんでした。

生理学のブラックボックスを正しく理解するには、要素還元的アプローチだけでなく、複雑な系を複雑なまま受け入れる、複雑系的なアプローチもあり得ます。ちょうど因果推論のRubinのアプローチとPearlのアプローチがそれぞれ要素還元的アプローチと複雑系的アプローチに近いと思います。

複雑系的なアプローチではブラックボックスをそのまま受け入れるため、真のメカニズムに近づくことができるかもしれません。しかし、複雑系的アプローチを取ると結果を解釈することが難しくなります。51章で紹介したベイジアンネットワークや構造方程式モデリングは数式的には(難しいですが)理解はできるんですが、結果を全体として解釈するのは難しいです。生理学では遺伝子発現や代謝、タンパク質間の相互作用のネットワークが示されることがよくありますが、これらも大体理解し難く、「美しい研究」と判断し難くなります。要は、私は美しさの要素として「ヒトとして理解できるかどうか」を評価していたようです。

研究としては要素還元的の端であるタンパク質の構造解析と反対の端にある複雑系的アプローチしか取らなくていいはずですし、理解可能性に重点を置く必要はないはずなのに、(少なくとも私は)研究的に面白かったり美しかったりするもの、理解できるものに囚われてしまいます。このあたりはヒトが感じる美的感覚、面白い研究をしたいというエゴ、ヒトとしての理解可能性と、研究本来の目的である知識の蓄積との整合性が取れていないことが原因のように思います。

また、ヒトは収入を得て食べていく必要があります。研究者もこの仕組みから逃れることはできません。ですので、収入を得るための研究という、本来の目的からずれたことを始めてしまいます。科学者をやっていた最後の頃は、このあたりの矛盾にずっと悩んでいたように思います。

美的感覚やエゴ、理解すること、収入を得ることから開放されたAIのほうが、ヒトよりも研究に向いているのかもしれません。ヒトとしてのカルマがない、つまりAIは生まれながらの如来、ニルヴァーナに至ったものなのです(と思ったのですが、どうもAIはヒトからカルマも吸収してしまうようです。ヒトの業の深さを感じます)。

ヒトが研究する時代が終わり、AIのみが研究を始めるようになった時、ヒトのカルマから解放された真のサイエンスが始まるのかもしれません。統計やAIの研究者の方にはぜひ頑張って、真のサイエンスの時代の始まりに貢献してもらいたいものです。

ver.0.4.3.1 (2025/10/1)

  • 48章(実験計画法)を追加しました。
  • plot関数とifelse関数でグラフの要素を調整する方法を24章に追加しました。
  • 効果量とCohen’s dについて29章に追加しました。
  • 34章に記載していたsurvivalAnalysisパッケージがCRANからRemoveされたので、coxphの機能でフォレストプロットを作成する方法に書き直しました。
  • 誤記等を修正しました。

実験計画法には昔から長らく興味はあり、手元に数冊教科書もあったのですが、いまいち勘どころがわからず放置していました。実験計画法というと、Lにいっぱい数値がくっついていて、ラテン方格や魔法陣、直交表といった言葉がちりばめられた教科書が多く、勉強しても煙に巻かれたような気持ちになったものでした。今回自分で少しまとめてみて、ちょっとだけその意味について理解が深まったような気がします。章はAdvancedな手法に記載していますが、全然Advancedな内容ではないので、章立てを見直すかもしれません。

最近(2024年)、Optimal Designの教科書(Goos and Jones 2011)を購入したので少しずつ読み進めていました。対話篇みたいになっていてやや読みにくく、全然読み進められない上に、実際のOptimal Designの作成については「ラップトップを颯爽と取り出し、計算をさせると…」といった記載になっています。Optimal Designの意味は丁寧に説明してありますが、Optimal Designの計算ができるソフトウェアがないとどうにも実感がありませんでした。実験計画法は工学と密接にかかわっていて工学的に重要であるため、企業が使うことを想定した有料のソフトウェアが多く、生かしどころが分からなかったのですが、skpr(Morgan-Wall and Khoury 2021)を見つけて少しやる気になり、せっかくなのでfactorial designやfractional factorial designの勉強にも手を出してみました。もう少し勉強をすすめ、理解を深めたいところです。

生物学の徒であった頃、実験計画法を使っている人は周りにほとんどいませんでした。今回実験計画法を学んでみて、どうもばらつきが大きすぎると利用するのが難しい、というのがなんとなく理解できました。工学の世界で実験計画法が使われているのは、生物のようによくわからない過剰な複雑系ではなく、系がシンプルで比較的素直にばらつきなく説明変数に対して目的変数が応答するからかもしれません。生物学のような超複雑系では、どちらかというと力業でデータを取りまくるか、シンプルな実験系を用いる方がよいのでしょう。私の周りにいた優秀な生物学者たちもみなシンプルな系を生かした力業でなんとかしていたように思います。

ver.0.4.3 (2025/6/30)

  • R markdown、Quartoの章を拡充し、9章分(35~43章)に記載しました。
  • 章の変更に伴い、44~47章をずらしました。
  • tibbleの記載に不足があったため追記しました。

思っていた以上にQuartoの章が長くなりました。特に小分けにしたわけではないのですが、Quartoの内容拡充に伴い中身が長くなりました。思っていたより知らないYAMLやchunkの機能があり、勉強になりましたが、内容の確認等でもう少し修正が必要です。これ以上内容のあるものを書くのであれば、1冊丸々をQuartoに捧げないとダメそうですので、より詳細を知りたい方はQuartoのGuideReferenceを参照いただければと思います。文章も書いたばかりで読みにくいかと思いますので、少しずつ修正いたします。

ver.0.4.2.3 (2025/5/2)

  • 3章を5つ(3~8章)に分けました。
  • 章の変更に伴い、各章の番号をずらしました。
  • faviconを作成し、本のimageを追加しました。

章立てを変更したため、リンクの接続を大幅に見直しました。リンク先が間違っている箇所があるかもしれません。Web上でチェックし、修正していく予定です。Quartoに関する部分を38章から独立させ、39章あたりに置こうと思っています。少し長くなりそうなので、Quartoだけで2~3章ぐらいになってしまうかもしれません。Quartoの章立てに従い、Shinyの章もずれる予定です。

ver.0.4.2 (2025/4/22)

  • 25章にbinom.testprop.testを追加しました。
  • 26章のlm関数の記載、線形混合モデルの記載を修正しました。
  • githubへのリンク、twitter・facebookへのリンクを追加しました。

文書をGithub Pagesにデプロイした結果、自分で文章を見直す機会が増え、修正がはかどるようになりました。また、Google Analyticsへの接続の方法が分かりましたので、Google Analyticsでアクセスを確認できるようになりました。大体自分がアクセスしているようです。Google search consoleに登録はしているのですが、sitemapをGoogleが読みこんでくれず、Google検索でまだ引っかかってきません。人に見てもらえるようになるにはもう少しかかりそうです。

教科書を書くのはなかなか大変ではありますが、自分で書いた教科書ほど自分で読むものもありません。読めば読むほど理解と疑いが膨れていくため、非常に勉強になります。オンラインで見れるようにすると、いつでもどこでも自分専用の、自分が最も読みやすく感じる教科書が読めます。一連の手法についてまとめて学ぶのであれば教科書を書き、公開し、自分で何度も読むのが最もよいのではないかと思います。

その昔(2000年頃)、Googleで検索すれば何でもわかるようになりました。検索すればなんでもわかるのだから、記憶することに意味がなくなる、記憶の外部化が起こるんじゃないかと思っていました。2025年になっても未だに記憶することは重要で、記憶は外部化できていません。

2015年頃、Teslaが中心となって自動運転技術が進展しているように見えました。10年後には自動車はすべて自動運転になり、渋滞はなくなり、タクシーやバス、トラックの運転手はいなくなるんじゃないかと思っていました。2025年になっても自動運転は夢の技術で、未だに渋滞でブレーキペダルを踏んで時間をつぶしています。タクシーはともかくバスやトラックドライバーは人手が全く足りていません。

2025年現在、AI開発は花盛りで、AIを使いこなせなければ仕事がなくなる、AIが代替できる仕事はすべてなくなるとされています。正直、仕事などすべてAIに丸投げして、みんながベーシックインカムで生きる世の中になればハッピーなので、是非私の仕事など置き換えてもらいたいところではあります。しかし、上記の通り、思っているよりも技術をうまく使いこなすのは難しく、将来を予測するのはもっと難しいです。無意味な仕事を生み出しては消費していく社会はなかなか変わらず、記憶の外部化もなかなかできず、しばらくは今と大きく変わらない世の中のままなのでしょう。

そもそもAIに仕事を全部任せてしまうと、AIの契約を打ち切られたときに仕事が全く回らなくなります。アメリカのAIを使うにしても、中国のAIを使うにしても、AIが使えなくなるリスクがある限り、なかなか人を切ることはできないのかもしれません。

したがって、しばらくはAIに色々教えてもらいながら、ブレーキを踏み、この教科書を読み、知識を内部化し、生きていくことになりそうです。つらいので偉い人には早く何とかしてほしいところです。

ver.0.4.1 (2025/4/7)

  • 19章(コーディング規約)を追記しました。
  • リンクの修正、関数の記載の間違い等を修正しました。

ver.0.4 (2025/3/18)

  • 文書を修正し、github pagesで公開しました。

この文書をどうするべきか、しばらく悩んでいました。著作権的にはちょっと怪しげな部分があり(helpで表示されるコードとほぼ同じ部分がある、文献は引用はしているはず)、収益性のあるようなものにはできず、自分が勤めている企業のために作成したものであるものの、企業のコンプライアンス的に企業名などを出すのは難しい、しかし自社には読んでくれる人がいない。間違いがあるのも気になるところで、このまま放置してもよかったのですが、せっかく作ったものですので、公開してみることにしました。

この文で収益をあげる意思は全くなく、できればこのテキストをきっかけに参考文献・教科書を購入してRコミュニティに貢献してくれる方が増えるとよいなと考えています。

PythonがRの役割をほぼこなせるようになり、Rの居場所はなくなっていくのかもしれません。しかし、過去のプログラミング言語もなんだかんだで生き残っているものが多いです。Rがしぶとく生き残るために少しでも貢献できるとうれしいです。

ver 0.3 (2024/10/19)

  • 33章(ネットワーク解析)を追加しました。
  • 34章(Rmarkdown・Quarto)を追加しました。
  • 35章(Shiny)を追加しました。
  • 全体を読み直し、修正しました。

ネットワーク解析、Rmarkdown・Quarto、Shinyの解説を書くのに4か月、はじめから読み直して文書やコードを修正するのに2か月かかりました。特にネットワーク解析は一から勉強したのでなかなか大変でした。文章のボリュームが多すぎて、一度読み通すだけでもなかなか大変です。一から学ぶような場合を除けば、興味のある部分から読み進めてもらった方がよいかもしれません。特に地理空間情報、ネットワーク解析、Shinyあたりは使う人・使わない人が大きく分かれる分野のように思います。

この教科書は元々社内教育のために作成し始めたものです。大分ボリュームも大きくなりましたが、社内には読んでくれる人がほぼいません。せっかく作ったものですので、オンラインで公開する準備を進めたいと思います。

2024年のノーベル化学賞・物理学賞にAI関連の技術が選ばれたように、AI開発が花盛りといったところです。AIについては不勉強でよくわからないのですが、基本的には言語モデルであると理解しています。どのAIもGithubなどを学習していると思うので、RのスクリプトもAIに聞けば教えてくれる時代になっていくのだと思います。そのうちAIが機械語を直接書き出すかもしれません。そうなるとAIのやっていることが完全にブラックボックスになってしまうので、未来は面白いことになりそうです。

将来的にAIで直接統計ができるようになるのは間違いないですが、もうしばらくは統計を行うためにRのスクリプトを教えてもらうような使い方が続くんじゃないかなと思います。また、秘密情報の関係でデータをAIに教えられない場合も多々あります。大企業であれば秘密情報を投げられるAIを契約できても、中小企業や個人経営者、大学の研究者などがそのような契約に大金を支払うのは難しいでしょう。

そもそもAIはとてつもなく計算力を食います。つまり全くエコではないので、大企業がエコを歌いながらAIを使い倒す、というのも何だか矛盾しているように思います。早く仕事も研究もAIにバトンタッチしたいところではありますが、そこらへんにいるヒトはArtificialではないですが、運動機能付きのIntelligenceです。精々2000 kcal/日ぐらいで動くIntelligenceであるヒトを使う方がエコなので、まだしばらくはヒトが働く時代が続くのでしょう。まあ、エネルギー面以外ではヒトは非エコですが…。

特に大学の研究者などは、分析をAI任せにはなかなかできません。データを説明可能にすることも研究者の役割の一つです。AIが吐き出してくれた統計のためのスクリプトを理解するために、しばらくはこのような教科書も有用なのではないかと思います。

ver 0.2(2024/4/14)

  • 31章(purrr)を追加しました。
  • 32章(地理空間情報)を追加しました。
  • 26章にspline回帰と加法モデルについての内容を追記しました。

一般化加法モデル(Generalized Additive Model)については名前は知っていたものの、内容がよくわかっていなかったため以前は記載していませんでした。教科書を読んでわかったことを簡単に表記しています。ただし、スクリプト上ではOzoneが正規分布していないのに正規分布しているようなモデルになっています。いずれ修正します。また、同様によくわかっていなかったpurrrと地理空間情報の取り扱いについても学習し、入門の内容程度のものをまとめました。正直purrrを活用しきれる気があまりしません。apply関数群ですらいまいち使えていないのに…。あと3章(ネットワーク解析、Quartoとrmarkdown、Shiny)ほど書いたらどこかにデプロイしようと思います。

ver 0.1(2024/2/19)

とりあえずRプログラミングの基礎、統計の基礎について最低限の内容は記載したので、公開することとします。内容には(特に統計に関わる24章以降は)間違いがあると思います。できれば手元に統計の教科書(少なくとも統計学入門(基礎統計学Ⅰ)(東京大学教養学部統計学教室 1991))を置いて、統計的な正しさを確認しながら読んでいただければ幸いです。

Rではここ10年ぐらいで様々なことができるようになりました。このテキストにはまだ記載していませんが、RmarkdownやQuartoといったライブラリを用いればhtmlやwordの文章を、Shinyというライブラリを用いればWebアプリケーションを、Plumberを用いればweb APIを作成することができ、やや「普通のプログラミング言語」に近づいた感じがあります。ただし、RStudioがPositという社名に変更になり、Pythonにも注力し始めたことから、Rが主要な統計プログラミング言語であり続けられるかどうかは微妙なところです。2010年ぐらいまではPythonは2.0から3.0への移行で躓いていたため、統計や機械学習をRで行うのはそれほど不自然ではありませんでしたが、2023年現在では機械学習はほぼPythonで行うものとなり、統計もかなりPythonでできることが増えています。Pythonは汎用言語であり、Rよりもずっと「何でもできる」言語です。RがPythonに立場を完全に奪われるのか、RはRなりに生き延びるのか微妙なところではありますが、このテキストがRを生き延びさせる一助になれば良いなあと考えております。

教科書を書いて思ったこととしては、我ながらRのことも統計のことも全くわかっていないということです。学べば学ぶほど、よくわからないことが増えるのはどの分野でも同じですが、Rと統計に関してはほとんど独学で、人に学んだ経験がほとんどないため、書けば書くほどよくわからなくなっていく感が強いです。自分の専門であった基礎生物学であれば、細胞の分子生物学を一冊読めばある程度の基礎はわかり、もっと専門的なことは論文を読んでおけば学習はできるのですが、統計は手法ごとに教科書があり、数学的なバックグラウンドを求められるため、なかなか学びを進めるのが難しいものです。

とはいえ、私が始めに統計を学んだときよりもわかりやすい教科書が増え、勉強がしやすくなったとは感じます。このテキストも入門としては必要最低限のところは抑えているつもりですが、できれば参考文献に記載した教科書や、Amazon等で検索し、教科書を数冊読んでみることをおススメします。このテキストを入口として、Rと統計を学ぶ人が増えればと感じます。

Back to top