Inleiding tot de R-statistiek

統計学全般に関する備忘メモの書庫(三中信宏)

RとRコマンダーのフシアワセ除霊報告いろいろ

人間環境大学総合環境学部フィールド自然学科の必修科目「環境データの可視化技法」では、Windows 版の「R」と「Rコマンダー」を使って演習を行う。学生のPCに「R」と「Rコマンダー」のインストールをする際には、さまざまなフシアワセが憑依した。下記にその除霊の顛末を書き記しておく。


  1. 「Windows 版 R をインストールする際に OneDrive を使わない方法はあるだろうか?」:Rをインストールしたのち、「GUI プレファレンス」で変更した「Rconsole」が手元のローカルPCではなく、遠くの OneDrive に飛んで行ってしまって変更が反映されないというフシアワセに多くの学生が泣いた。そこで、冒頭の質問を ChatGPT に投げたところ、「非常に良い質問である」と、下記の解決策を示してくれた:
    1. エクスプローラで「ドキュメント」フォルダを右クリック →「プロパティ」→「場所」タブへ。
    2. 「場所」タブの「既定値に戻す」ボタンを押す。
    3. 表示されるメッセージで「ファイルを元の場所に移動しますか?」→「はい」を選択。
    4. Windows を再起動してから、R を起動する。これでシアワセになれるはず。

  2. 「R コマンダーが起動しないフシアワセを除霊したい」:少なくともうちの学科の学生が持っている Windows PC (ASUS あるいは Fujitsu)では、下記の手順ですべて除霊できた(R本体はすでにインストールされているものとする):
    1. R を起動し、プロンプトから「library(Rcmdr)」とキー入力する。これでRコマンダーが起動すれば、すでにアナタはシアワセ者。
    2. Rコマンダーが起動せず、「〜〜〜のパッケージがない」というエラーメッセージ(英語)が出たときは、その「〜〜〜」というパッケージを手動インストールする。具体的には下記のスクリプトを実行する。

      install.packages("〜〜〜", dependencies = TRUE)
    3. library(Rcmdr)」を実行する。ふたたび「………のパッケージがない」というエラーメッセージが出たら 2 へ戻る。
    4. 2 と 3 を何度か繰り返せば、最後には Rコマンダーが起動してシアワセになれる。

  3. 「R 起動時に R コマンダーを自動読み込みしたい」:R起動時に特定パッケージを自動読み込みするには、Windows 11 でも macOS でも同じだが、R起動時に読み込まれる設定ファイル「.Rprofile」(C:\Users\<ユーザー名>\Documents
    に置かれている) に「library()」を記述すればよい。具体的には、下記の手順に従う:
    1. R を起動して「file.edit("~/.Rprofile")」をキー入力し、
      .Rprofile を開く。
    2. .Rprofile に、下記を入力する:

      if (interactive()) {suppressPackageStartupMessages(library(Rcmdr))}
    3. あるいは
    4. local({
      old <- getOption('defaultPackages')
      options(defaultPackages = c(old, 'Rcmdr'))
      })
    5. .Rprofile を保存したのち、R を再起動すると R コマンダーが自動的に開かれる。

  4. 「macOS で英語環境で R コマンダーを自動読み込みしたい」:これは学生のフシアワセではなく、ワタクシが M4 MacBook Pro にしてからずっと悩んでいたフシアワセだ。どういうわけか日本語フォント設定のトラブルで、R コマンダーの日本語版が立ち上がらなかった(起動中に強制終了)。ためしに、「.Rprofile」 に下記スクリプトを保存して、Rを再起動したところ、英語版 Rコマンダーを自動起動することができた。

    Sys.setenv(LANGUAGE = "en")
    library(Rcmdr)
    とりあえず “半分シアワセ” というところか。なお、macOS の R ミラーサイトを変更する際には下記のスクリプトを R から入力すればよい:

    chooseCRANmirror()

  5. 「RやRStudioのインストールの際、Windows 10以前の環境だと、マルチバイト文字(たとえば全角仮名漢字)がパス上にあるとインストールできなかったが、現在のWindows 11 ではそういうエラーは発生しない。その理由はどこにあるのだろう?」:この疑問はかつて “マルチバイト文字地獄” に喘いだ経験があるワタクシにはずっと疑問だったのだが、ふと思い立って、冒頭の質問を ChatGPT に問い合わせてみたら、「極めて鋭い質問である」とくわしく説明してくれた。「結論から言えば、Windows 11(および Windows 10 21H2 以降)では、RやRStudioがマルチバイト文字(日本語など)を含むパスでも正しく動作するのは、Windowsの「UTF-8対応」がOSレベルで標準化されたためである」「旧WindowsはShift_JISで、R内部のUTF-8との齟齬がエラーの原因だった。現在のWindows 11ではOS全体がUTF-8ロケールを標準化されている。また、R 4.2以降+RStudio新バージョンはUTF-8ネイティブ化済み」とのこと。だから、マルチバイトの沼に溺れなくなったのか。そうだったのかー。

RとRコマンダーをフシアワセなくインストールする前準備

R と R Commander (Rcmdr)パッケージをインストールする際に憑依する “フシアワセ” を除霊するための手順を備忘メモとしてまとめる.

    Windows環境】
  1. ユーザー名はもちろんパスやフォルダーの名称に「全角文字(マルチバイト文字)」は絶対に使用しない.[2022年4月8日加筆]
  2. R起動時には「一般ユーザー」ではなく「管理者」としてログインする(マウスの右クリックで選択する).[2022年4月8日加筆]
  3. R本体とパッケージは一つ残らず最新バージョンにアップデートする.そしてリモートディスク(たとえば OneDrive)ではなく,手元のPCのローカルディスクにインストールする.[2021年4月13日加筆]
  4. PCをいったん再起動する.
  5. それでもダメなら,最後の手段として,RとRcmdrが正常に起動しているPCから「library」フォルダーを丸ごとコピペ( “生体肝移植” )する.

    macOS環境】
  1. Xcodehttps://developer.apple.com/jp/xcode/ をインストールする.ただし,Xcode は巨大(4GBほど)なので要注意.
  2. 「XQuartz(X11)」 https://support.apple.com/ja-jp/HT201341 をインストールする.
  3. R本体と関連パッケージ群はすべて最新バージョンにアップデートする.
  4. PCをいったん再起動する.

ただし,Rのメジャーアップデートの際には,上記の防御策では太刀打ちできない巨大なフシアワセが降臨することがある.メジャーアップデートをしばらく見送るという穏健な方針もありだが,どうせいずれはアップデートしなければならないのだから,積極的に “人柱” として身投げしてみてはどうか.

確率分布Viewer

これは便利な確率分布可視化ツール:

確率分布Viewer
statdist.ksmzn.com


ネットに繋がっているのなら講義にも使える.

開発者による記事:
Dimension Planet Adventure 最終章 最終話『栄光なる未来』
「確率分布をさわれるShinyアプリ「確率分布Viewer」に新機能を追加しました! 」
(2018年2月4日)
https://ksmzn.hatenablog.com/entry/shiny-ProbabilityDistributionsViewer

「全人類に告ぐ。セル結合をやめろ。」

hibitの技術系メモ(2018年12月9日)
 →
deux-hibi.hatenablog.com

九州統計巡業で何度も強調したことのひとつは「エクセルでのデータ入力は正しく使いましょう」という一点だった.スプレッドシートを「readXL()」のような関数でスプレッドシートを丸ごとインポートできないようではそもそも困るよと機会があるごとに強調した.しかし,現実問題としてエクセルのスプレッドシートに,純粋なデータ行列のみならず,「セル融合」を伴う「テキスト文」だの「図表」だのを縦横無尽に貼り込んだ “ネ申エクセル文書” が蔓延る現状を見れば,必要部分だけクリップボードにコピペし R にインポートする方がより現実的なワザかもしれない.

上の記事では「Excel表計算ソフトです。けして版組ソフトではありません。セル結合やオブジェクト配置を使ってあなたの芸術を表現するキャンバスではありません」と正しく指摘されている.確かに,そういう体裁のエクセル用法はどこでも頻繁に遭遇するんだけど,データとしてはまったく “アウト” なので,R にインポートしようとするときには,いちいち書き換えてもらうしかない.ワタクシの統計高座の受講生たちには,つねづね「こーいうエクセルのワルい使い方をすると地獄に落ちますよ」と戒めている.

数理統計研修2018質問回答集

農研機構短期集合研修「数理統計」(基礎編)2018年11月5日(月)〜9日(金)@農林水産研究情報センター・電農館VCホールならびに同(応用編)2018年11月12日(月)〜16日(金)@農林水産研究情報センター・電農館3階セミナー室にてワタクシが受けた質問とそれらに対する回答は下記の通り:

  1. 【質問】「県のエライサンたちが “ビッグデータがぁ〜” とか “AIがぁ〜” とか下におろしてくるんですけど,アレってほんとうにどうすればいいんでしょうか?」/【回答】「悪魔祓いしてもらった方がいいですよ」.[三中信宏:2018年11月8日記]
  2. 【質問】「正規分布帝国の正規分布は何が正規分布しているんでしょうか?」/【回答】「確率分布は母集団の “モデル化” です.正規分布帝国とは母集団が正規分布をするという一神教です.このとき,正規母集団から抽出された無作為標本の平均値もまた正規分布することが証明されています」.さらに,任意の確率分布をする母集団からの無作為標本の平均値もまたサンプルサイズが無限大になると正規分布になるという「中心極限定理」があります.[三中信宏:2018年11月8日記]
  3. 【質問】「パラメトリック統計学とノンパラメトリック統計学とはなぜ対立するんでしょうか?」/【回答】「パラメトリック統計学」は母集団がある確率分布に従っていると仮定して抽出されたデータに基づく母数(パラメーター)に関する推定や検定を行います.確率分布の仮定が正しいかどうかが決めてです.他方,「ノンパラメトリック統計学」では特定の確率分布を仮定せず,データの無作為化や並べ替えあるいは順位付けなどを踏まえて統計解析を行います.確率分布の仮定には制約されませんが,一般的に精度が低くなることがあるので,注意が必要です.また,「等分散性」の有無はパラメトリック統計学とノンパラメトリック統計学の両方で問題になります.自分のデータが正規性や等分散性を満たしているかどうかは事前に確認するべきでしょう.[三中信宏:2018年11月7日記]
  4. 【質問】「等分散性がなくても使えるノンパラメトリック法の方が農学研究には使いやすいのではないでしょうか?」/【回答】「「等分散性」の有無はパラメトリック統計学とノンパラメトリック統計学の両方で問題になります.データが等分散性を満たしているかどうかは事前確認が必要です」.[三中信宏:2018年11月7日記]
  5. 【質問】「計算機統計学とはどのようなものなのでしょうか?」/【回答】「計算機統計学」については基礎編の統計研修では言及されませんが,たとえばブーツストラップ法のようにデータから無作為再抽出(リサンプリング)して統計量の確率分布を数値的に構築したり,あるいはベイズ統計手法のように事後確率分布をMCMCマルコフ連鎖モンテカルロ法)によって計算するときには,数学的なリクツではなく実際にコンピューターの高速演算があって初めて可能になる統計手法です.「論よりラン」ですね./Rについてはできるだけ最新のバージョンを使った方が安心ですが,バージョンアップの際にR本体とRパッケージの整合性がないとフシアワセが降臨するので要注意です.[三中信宏:2018年11月7日記]
  6. 【質問】「Rのバージョンアップはした方がいいのでしょうか?」/【回答】「Rについてはできるだけ最新のバージョンを使った方が安心ですが,バージョンアップの際にR本体とRパッケージの整合性がないとフシアワセが降臨するので要注意です」.[三中信宏:2018年11月7日記]
  7. 【質問】「賞味期限の切れた統計手法ってあるんでしょうか?」/【回答】たとえば,正規分布を満たさないようなデータに対して,かつては「変数変換」を施すことで正規分布に “近づける” ことが公然と行われていました.しかし,現在では一般化線形モデル(GLM)のようなより新しい統計手法が手軽に使えるようになったので,かつての変数変換は「時代遅れ」と言えるでしょう.多重比較の例を取るならば,「ダンカン法」や「最小有意差法」は古すぎて現在ではもう使われないでしょう.賞味期限を過ぎた統計手法であってもそのまま使われている場合は少なくないと考えられます.要注意です.[三中信宏:2018年11月7日記]
  8. 【質問】「分散分析が有意でも多重比較が有意でない場合はどのように解釈すればいいんでしょうか?」/【回答】分散分析で要因が有意になっても多重比較では有意差が出なかったり,その逆に分散分析では有意にならなくても多重比較で有意差のあるペアが見られることもあります.いずれの場合もはっきりした結論が出せないグレーゾーンと考えるべきでしょう.[三中信宏:2018年11月9日記]
  9. 【質問】「交互作用が有意である場合の多重比較はどうすればいいのでしょうか?」/【回答】「交互作用が有意でなければ主効果の水準間で多重比較ができます.一方,交互作用が有意である場合は水準の組み合わせに関する多重比較をすることになるでしょう」.交互作用が有意でなければ主効果の水準間で多重比較ができます.一方,交互作用が有意である場合は水準の組み合わせに関する多重比較をすることになるでしょう.[三中信宏:2018年11月9日記]
  10. 【質問】「分散分析をせずにいきなり多重比較をしてもいいのでしょうか?」/【回答】分散分析と多重比較ではそもそも分析の目的が異なります.分散分析は要因の有意性を検定するのに対し,多重比較は処理水準間の差異の有意性を検定するからです.もしも要因の有意性が事前に自明であることがわかっているならば,最初から多重比較をしてもぜんぜん問題ではないでしょう.[三中信宏:2018年11月9日記]
  11. 【質問】「主成分分析の分散集約が思わしくないときはどうすれば?」/【回答】主成分分析によって多変量データがうまく説明できるかどうかはデータしだいです.元変量の線形結合として計算される主成分軸がデータのばらつきをどれくらいシンプルに説明できるかどうかはケースバイケース.[三中信宏:2018年11月14日記]
  12. 【質問】「クラスター分析で平方ユークリッド距離はどんな場合に用いられますか?」/【回答】クラスター分析の場合,連続変量では「ユークリッド距離」が,離散変量では「マンハッタン距離」が用いられることが多いです.平方ユークリッド距離を用いる典型的な例として,集団遺伝学で対立遺伝子の頻度データによって集団間の距離を表すとき,平方ユークリッド距離が用いられることがあります.[三中信宏:2018年11月14日記]
  13. 【質問】「クラスター分析のデンドログラムで末端間の距離はどのように表示されているのでしょうか?」/【回答】クラスター分析の任意のふたつの末端点どうしの距離を「d」とするとき,デンドログラムの上でそれらをつなぐ二叉(フォーク)の分岐点までの距離を「d/2」として描きます.したがって,ある末端点からもう一方の末端点までデンドログラムの枝に沿って距離を足し算した合計が末端点間の距離と一致します.[三中信宏:2018年11月14日記]
  14. 【質問】「データセットに欠測値がある場合は?」/【回答】データセットに欠損値がある場合は,それを含む「行」と「列」を除去する場合が多いと思います.もし,元のデータセットの情報をできるだけ活かしたいということであれば,隣接するデータから補間することにより,欠損値を “修復” することはできないわけではありませんが,あくまでもそれは緊急措置です.[三中信宏:2018年11月14日記]