|
・統計処理言語「R」と表計算ソフトをあわせてつかおう ・「R」を使う準備をしよう ・「電子野帳」としての「Excelブック」を新規作成しよう ・「R with Excel」ステップバイステップ(仮) ・表5 「R」と「Excel」の違い ・スプレッドシートの使いかたのイメージです ・「「B2」から「C7」までを選択して「コピー」しましょう。」のイメージです ・「R with Excel」を体験してみよう ・「R」で「階層的クラスタリング」を試してみよう ・「R」で「クロス集計表(分割表)」をつくろう ・「正解データとのクロス集計表(分割表)」のイメージです(6変量・625個・7クラスター)
(約13000字)
あくまでドラフト(草稿)ですので、あしからず。「導入編」([3524])、「概説編」([3525])からの続きです。必ず、「導入編」([3524])から順にお読みください。
○統計処理言語「R」と表計算ソフトをあわせてつかおう
クラスタリングにはコンピューターを使いましょう。アルゴリズムの学習にはトランプやかるたが使えますが、前述した通り、クラスタリングは「多変量」のデータの分析に適用してこそ本来の役割が発揮できる分類の手法です。そして、「多変量」の分析にはコンピューターが大いに活躍します。
いま、オープンソースかつ無償で利用できる統計処理言語(統計的なデータ処理を行うためのソフトウェア)として「R」が広く知られています。わたしたちも、この「R」を使うことにしましょう。
※授業で活用するためには、現実的には教員があらかじめインストールを済ませることになりましょうが、「R」は学校だけで使える特別なものではなく、家庭のPCでもまったく同じように「R」が使えるのだという説明を省略してはなりません。この説明に必要な範囲で、オープンソースソフトウェアのライセンスについても概説する必要があります。このとき、単に無償であるということばかりに着目させるのでなく、研究成果や研究のための道具や方法を「公共財」とみなす、研究の世界での価値観について説明することが望まれます。
データの入力と整理、処理した内容の記録、考察のためのメモなどを記入するため、「Excel」や「Calc」などの表計算ソフトをあわせて使いましょう。複数のソフトウェアの間で「コピー&ペースト」を実現する「クリップボード」のしくみについて、先に学習してください。表計算ソフトでは、こまめに「上書き保存」することを忘れないように習慣づけましょう。
※「R」はオープンソースなのに、プロプライエタリな「Excel」を併用するというのは「矛盾している」と感じる児童・生徒がいるかもしれません。「R」は、統計処理という根幹の機能(およびユーザーがつくりあげた「パッケージ」)についてはすばらしいのですが、GUI環境での操作性には難があることが、少し使うとすぐにわかってきます。そして、その改善を「R」の開発者(たち)に求めることはできず、一方で、「Excel」という、既に操作性がじゅうぶんに向上されてきた製品があるのですから、わたしたちが操作性のよさを求めるならば、その相手は「Excel」であるのだというわけです。
※高学年や中学生に対しては、▼サーバーにTelnetやSSHで接続してCUI環境で使うこと、ひいては▼自動化されて「R」が使われるシーンを紹介してもよいかもしれません。
本来の算数・数学の授業との混乱を避けるために、「R」で使う変数名(「データフレーム名」・「列名」・「要素の名前」)には、「x」「y」「z」や「a」「b」「c」を使うことは避けたほうがよいでしょう。
また、プログラミング言語との混乱を避けるためには、慣例的にFOR文などで多用される「i」「j」「k」なども避けたほうがよいでしょう。
さらに、もとの意味が分からなくなるほど略した変数名をつけるのも困ります。かといって、不用意に打鍵数が増えるのも入力ミスが増える原因になります。「Excel」などの表計算ソフトを使うだけであれば特に気にしなくてよいことですが、「R」を使う、しかも小学校で使うとなれば、格段に慎重な検討をあらかじめ行なう必要があるとわかります。
「R」において「データフレーム名」は必ずつけなければいけません(省略できません)が、「列名(ヘッダー)」と「要素の名前」は省略できます。ここでは、これを積極的に活かし、原則として「データフレーム名」のみを命名することにしましょう。
※「列」と「要素」が無名の場合、これらは▼数字で指定し、▼数字で表示されることになります。
これに加えて、「R」に▼「標準で用意された「関数名」」と、これから行なうクラスタリングに関する▼「「パッケージ」に含まれる「関数名」」とも、混同しないように「データフレーム名」を命名することが望まれます。「R」の画面上で、文字だけを見て、その各々が「データフレーム名」なのか、「関数名」なのか、「引数」なのか(※)、一目でわかるようになるということを促す配慮を尽くすことが期待されます。
※IDEやエディタの色分け表示に頼らず、じぶんでわからなければいけません。あらゆるプログラミング言語(処理系)についてそのようなレベルで習熟しないといけないということはありませんが、少なくとも1つ、特に、最初に学ぶ言語(処理系)では、じぶんの手足のように熟知しておきたいという感触がございます。このような基礎があれば、知らない言語や新しい言語について、色分け表示に頼りながらいつでも新しく勉強していけるということでございます。
■表5 「R」と「Excel」の違い | R | Excel | 関数名 (機能や計算式を呼び出すための名前) | ・標準の関数 ・「パッケージ」で追加 | ・標準の関数 ・「ユーザー定義」 | データフレーム名 (一連のデータとその列名や要素の 名前を格納するための外枠の名前) | 必須 | (ない) | 列名 (表の上部に書くヘッダー) | 省略可 (省略時、1から始まる通し番号) | (並べ替えなどの操作時のみ 意識させる) | 要素の名前 (表の左側に書くIDや名前) | 省略可 (省略時、1から始まる通し番号) | (ない) | 要素(セル)の位置 (表の中での『番地』) | 縦・横とも数字で指定 (3次元以上にも対応) | 縦は数字、横は英字で指定 (2次元まで) |
※この表ではExcelについて、ごく一般的な利用のみを想定しています。
「Excel」で「多変量」のデータを扱いにくいのは、データ(セル)を2次元まででしか(直接には)扱えないからです。「R」では、データそのものを画面に表示しない代わりに、多次元のデータ(多変量)が扱いやすいのです。
表計算ソフトを先に学習し、後からプログラミング言語の学習に進む場合、その第一歩として、「R」の操作に慣れるというのも好適だと思われます。「Excel」で実現しようとすると七面倒くさいことが、「R」ではすぐに実現できる(こともある)というのは、「R」を利用しようという強力な動機の1つになることでしょう。
・「公式のR=たわし」説
https://image.slidesharecdn.com/japanr-121130145202-phpapp01/95/r-27-638.jpg
あえて「たわし」でいきます。「RStudio」には、まだ「tDiaryみたいなにおい!」がするのでね。うん。(※あくまでにおいです。)
・「tDiaryみたいなにおい!」付近(推定)
https://ja.wikipedia.org/wiki/TDiary
http://magazine.rubyist.net/?c=plugin;plugin=attach_download;p=0025-SapporoRubyKaigi01Report;file_name=41_detail.jpg
http://magazine.rubyist.net/?0025-SapporoRubyKaigi01Report
○「R」を使う準備をしよう
・「Rの入手」は、必ず「R」の公式ウェブサイトから行なってください。
といいながらも、諸事情により、日本国内からは統計数理研究所(統数研)が提供しているミラーサイトの利用が強く推奨されます。「R」を使ってみようと思い立って、初めて「統数研」なる国立(※<くにたち>ではなく<こくりつ>)の研究所(※<けんきゅうじょ>? <けんきゅうしょ>?)が存在していたことを知るということも、あることでしょう。
・統計数理研究所(統数研)が提供している「R」のミラーサイト
https://cran.ism.ac.jp/
> Download R for Linux
> Download R for (Mac) OS X
> Download R for Windows
「R」の開発者から見てのOSの優先順位は、この順であるということがうかがえます。
> Contributed extension packages
誰でもパッケージを「Contribute」できるとはいえ、ひどいパッケージを「Contribute」するような者は淘汰され、また、多くのユーザーが利用するパッケージでは(ユーザーからの指摘を受けて)デバッグが効率的に進み、ある段階で、ある程度の質を備えたパッケージのみが残ってゆく(だろう)という期待があります。
なお、パッケージのインストールは、「R」を起動してからコマンドラインで実行できますので、ウェブブラウザを使用してパッケージをダウンロードすることは通常ありません。
・「Rのインストール」については、お使いのPCにあわせた説明がされているページを参照してください。学校のPCで使いたいときは、必ず先生に相談してください。じぶんで勝手にインストールしてはいけません。
・(ここまでの参考)ウィキペディア「R言語」
https://ja.wikipedia.org/wiki/R%E8%A8%80%E8%AA%9E
・ぎひょー付近
http://gihyo.jp/book/2012/978-4-7741-5065-9/support
○「電子野帳」としての「Excelブック」を新規作成しよう
※「Calc」を使う場合も同様です。用語を適宜、読み替えてください。
デスクトップに「Excelブック」を新規作成して、ファイル名を「じぶんのなまえ_研究テーマ_20170801」のように変更しましょう。ファイルの作成日時は、後からわからなくなる場合があります。▼ファイル名に、作成日をつけておきましょう。▼一連の研究内容のメモは、すべて、このファイルに追記していくようにします。▼古い内容を書き換えたり、消したりしてはいけません。
▼別の日に追記するときは、Excelブック内で「新しいタブ」を作成し、タブの名前に、その日の日付を書きましょう。
▼前日までの内容に追記したいときは、そのタブごと「コピー」してから、コピーされてできた新しいタブのほうに追記するようにしましょう。
▼画面の解像度により、あまりたくさんのタブが追加できないように見えるかもしれませんが、左右のボタンをクリックすると、より多くのタブを使えます。20〜30枚ほどのタブを作成することはまったく問題ありません。気軽にタブを追加しましょう。
▼同じ日付でも、異なる内容を記入したい(データの種類や分析のしかたを変えたなど)ときは、別のタブに分けましょう。
▼研究がある程度、進んだ時や、分析結果を考察するときは、紙に印刷しましょう。
▼USBメモリーは簡単に壊れます。「Excelブック」の原本(オリジナル)は、PCの「デスクトップ」「マイ ドキュメント」「OneDrive」「iCloud Drive」など、PC本体の記憶装置(HDDやSSD)またはクラウドストレージに保存しましょう。印刷などのためUSBメモリーにファイルを入れて持ち歩く場合も、必ずPC本体またはクラウドストレージに保存したファイルをオリジナルとし(編集はPC本体またはクラウドストレージに保存したファイルのみを対象におこなうようにして)、USBメモリーに入れたファイルは編集しないようにしましょう。
「Excel」などの表計算ソフトは、英語では「スプレッドシート(spread sheet)」と呼ばれます。「いちめんのマス目」という意味で、わたしたちは、この広いスプレッドシートの、▼どの部分を、▼どのような順番で使っても、いいのです。
ただ、絶対に守るべきルールがあります。
▼1つのマス目には、1つのデータだけを入力すること。
▼一連のまとまりのあるデータは、途中に空白のマス目や空行・空列を挟まず、連続して入力すること。
▼縦方向には、同じデータの続きのみを入れること。意味や種類の異なるデータを、縦方向に並べてはいけません。(上下に2つの表を並べてはいけません。)
▼列の幅や行の高さは変えないこと。文字の大きさやフォントも変えないこと。
▼「セルの結合」「右寄せ」などは使わないこと。
スプレッドシートに「入力したデータ(生のデータの集まり)」と、「分析結果や基礎統計量(合計や平均など)をまとめた表」を区別しましょう。データに対しては、罫線などの装飾は不要です。一方、結果をまとめた表については、見やすく装飾しましょう。最小値や最大値を太字にしたり、マイナスの値を赤字にしたりすることもあります。
■スプレッドシートの使いかたのイメージです | A | B | C | D | E | F | G | H | I | J | K | L | M | 1 | No. | V1 | V2 | | R1 | R2 | | | V1 | V2 | | | | 2 | 1 | 6.4 | 145 | | =RANK(B2,B:B) | =RANK(C2,C:C) | | 合計 | =SUM(B:B) | =SUM(C:C) | | ここにメモやコメントを書く | | 3 | 2 | 5.1 | 132 | | =RANK(B3,B:B) | =RANK(C3,C:C) | | 平均 | =AVERAGE(B:B) | =AVERAGE(C:C) | | | | 4 | 3 | 7.9 | 147 | | =RANK(B4,B:B) | =RANK(C4,C:C) | | 最大 | =MAX(B:B) | =MAX(C:C) | | | | 5 | 4 | 3.7 | 149 | | =RANK(B5,B:B) | =RANK(C5,C:C) | | 最小 | =MIN(B:B) | =MIN(C:C) | | | | 6 | 5 | 5.5 | 138 | | =RANK(B6,B:B) | =RANK(C6,C:C) | | | | | | | | 7 | 6 | 6.3 | 144 | | =RANK(B7,B:B) | =RANK(C7,C:C) | | 相関 | | =CORREL(B:B,C:C) | | | | 8 | | | | | | | | 順位相関 | | =CORREL(E:E,F:F) | | | | 9 | | | | | | | | | | | | | | 10 | | | | | | | | | | | | | |
「Excel」の場合、「B列」と「C列」を選択(列のヘッダーを選択)して「挿入」から「散布図」を選ぶだけで、横軸に「V1」、縦軸に「V2」をとった散布図が描けますが、「Calc」では、もう少し面倒なようです。できることなら「Excel」を使うことが望まれましょう。そして、その散布図は(図の左上を)「L7」くらいの場所にずずっと移動しておきます。散布図などのグラフも、大きさを変更したり、細かい装飾をしたりする必要はありません。(最終的に印刷して論文や掲示物に使うときだけ装飾すればじゅうぶんです。)
※V(Variable):変数、変量。R(Rank):順位。
・マイクロソフト「Office Online」
https://www.microsoft.com/ja-jp/atlife/article/office-online/
> 保存先の初期設定時は「OneDrive」になりますが、PCのデスクトップなどにも保存可能です。
・各社「タブ」のイメージございます
https://www.kaunet.com/kaunet/images/goods/main/extra/K2105485.jpg
http://www.kokuyo-st.co.jp/stationery/hakadori/tackindex/slide/img/slide-1.jpg
○「R with Excel」ステップバイステップ(仮)
このスプレッドシートで、「B2」から「C7」までを選択して「コピー」しましょう。
■「「B2」から「C7」までを選択して「コピー」しましょう。」のイメージです6.4 | 145 | 5.1 | 132 | 7.9 | 147 | 3.7 | 149 | 5.5 | 138 | 6.3 | 144 |
「Excel」では、データの内容を説明する「V1」「V2」などの文字や、「No.」の列なども入力しますが、「R」での分析に必要なデータは、この「B2」から「C7」までの範囲だけなのです。
・「Excel」(「Calc」)では、画面で見える通り、「行と列が並んだ表」に、1マスに1個のデータが格納されます。まだデータを入れていないマス目(これからあなたがデータを入れるための入力欄)も表示されています。
・「R」では、「行と列が並んだ表」に、名前を付けて格納しています。「Excel」にはある「データの入っていないマス目(これからあなたがデータを入れるための入力欄)」はなく、データそのものだけを持ちます。1マスに1個のデータが入るのは、「Excel」と同じです。
「R」は、「統計処理に特化したプログラミング言語」とも説明されるように、データが直接には見えず、「関数」(プログラムでいう「コマンド」)を入力して、データを操作していきます。「R」で、データを見たいときには、データを見るための命令をしなければいけません。そもそも、「R」にデータを格納するには、データを格納するための命令をしなければなりません。
また、このような操作のため、「R」ではマウスはほとんど使わず、キーボードを使います。
■「R with Excel」を体験してみよう | Rでの操作 | Excelでの操作 | | | | データをRに取り込む | 「R Console」のウィンドウの「> 」と 表示されている場所をクリックし、 「mydata0=read.table("clipboard",h=0)」 と入力しておきます (Enterキーは、まだ押しません) | | | | セル「B2」から「C7」を選択して「コピー」 | | Enterキーを押します | | | 「mydata0」と入力してEnter ↓ 取り込まれたデータが表示されます (データの上に「V1」「V2」、 左に1から6の番号が添えられます) | | | | | k-meansを実行する | 「mykm3 <- kmeans(mydata0, 3)」と入力してEnter (何も表示されません) | | | 「mykm3$」と入力してTabキーを2回押します ↓ 「mykm3$cluster」 「mykm3$centers」 「mykm3$totss」 「mykm3$withinss」 「mykm3$tot.withinss」 「mykm3$betweenss」 「mykm3$size」 「mykm3$iter」 「mykm3$ifault」と表示されます 「mykm3」には、k-meansの実行結果として、 これらのデータが入りました | | | 続けて「cl」と入力しTabキーを1回押すと、 「uster」をじぶんで入力しなくても出てきます Enterキーを押します ↓ 「[1] 3 2 3 1 2 3」 1から6までの要素がどのクラスターに割り当てられたのか、 1から3のクラスター番号で表示されます 先頭の「[1]」は、要素の1番目からを表示していることを示しています | | | 「mykm3$iter」と入力しEnter(Tabキーも使って構いません) ↓ 「[1] 2」と表示されます (k-meansのアルゴリズムで計算の繰り返された回数が、 mydata0を使ってクラスター数3を指定した今回の実行では 「2回」だったことが示されています) | | | 「mykm3$centers」と入力しEnter ↓ 1から3のクラスターについて、 「V1」「V2」の平均が表示されます | | | 「mykm3」とだけ入力してEnter ↓ すべて1度に表示されます (簡単な注釈も付いています) 「Within cluster sum of squares by cluster」 「(between_SS / total_SS = 88.5 %)」(※1) | | | | | (多変量)散布図を描く | 「install.packages("mclust")」と入力しEnter (これは最初に1回だけ必要な操作です) ↓ パッケージのインストールを完了します | | | 「library(mclust)」と入力しEnter (これはRの起動後に1回だけ必要な操作です) ↓ (超訳)「ようこそ華麗なMCLUSTの世界へ! これでもうキミはりっぱなMCLUSTつかいだ。 歓迎するよ」 ※パッケージの作者がつくった おしゃれなメッセージが表示されます (作者はおしゃれだと思っています) | | | 「clPairs(mydata0, cl=mykm3$cluster)」と入力しEnter ↓ 「R Graphics」のウィンドウが開き、散布図が表示されます | | | 「R Graphics」のウィンドウ内を右クリックし、 「ビットマップにコピー」を選択 | | | | セル「L7」など余白部分をクリックしてから、 リボン(メニュー)の「貼り付け」をクリック ↓ 「R Graphics」と同じ散布図が Excelのシートに貼り付けできました | | | | RからExcelにデータをコピーする | 「write.table(mykm3$cluster, file="clipboard", sep="\t", row.names=FALSE)」と入力しEnter | | | | セル「D1」を選択し「貼り付け」 ↓ 「x」と、縦に6個のクラスター番号が貼り付けできました 「D1」の「x」を「mykm3」に書き換えます | | | | 同じ処理をやり直す | 矢印キーの「↑」を押すと、 それまでに実行した関数が新しい順に表示されます 矢印キーの「←」や「→」で移動し、 引数やデータフレーム名だけを書き換えて、 新しく実行することができます | |
※実際のレポートや自由研究で使用するときは、kmeans関数の引数「nstart」を適切に設定しましょう。
■「R」で「階層的クラスタリング」を試してみよう階層的クラスタリングを実行する (ウォード法) | 引き続きmydata0を使います | | 「myhie <- hclust(dist(mydata0),method="ward.D2")」と入力してEnter | | 「plot(myhie)」と入力してEnter ↓ 「R Graphics」のウィンドウが開き、 デンドログラムが表示されます | | 「mycut3 <- cutree(myhie, k=3)」と入力しEnter クラスター数3を指定しています | | 「write.table(mycut3, file="clipboard", sep="\t", row.names=FALSE)」と入力してEnter ↓ 「Excel」で「貼り付け」 (途中でほかの操作をすると「貼り付け」ができなくなります) (「R」で上記の関数を再実行します) | | | 散布図を描く | clPairs(mydata0, cl=mycut3) |
■「R」で「クロス集計表(分割表)」をつくろう | R | Excel | | | | 正解データをRに取り込む | | クラスター番号のリストと「正解データ」を並べた 2列×6行の範囲を選択して「コピー」 | | 「myvery0=read.table("clipboard",h=0)」 と入力しEnter | | | | | クロス集計表をつくる | 「ftable(myvery0)」と入力しEnter ↓ クロス集計表が表示されます (正しく作成できていることを確かめましょう) | | | | | RからExcelに表をコピーする | 「write.table(ftable(myvery0), file="clipboard", sep="\t")」 と入力しEnter | | | | シートの余白を選択し「貼り付け」 |
「正解データ」には、クラスタリングで指定したクラスター数(ここでは「3」)と同じ数に分けられたデータを使います。「A」「B」「C」などの(文字の)ラベルでも構いません。(クラスタリングに使った変量とは別の)ある変量の「低」「中」「高」のような階級(値の幅をとったもの)のラベルでも構いません。
「クロス集計表(分割表)」を「Excel」に貼り付けたら、クラスタリングで得られたクラスターと「正解データ」が一致しているマス目を見つけ(ここでは3つ)、太字にしたり罫線で囲ったりして強調します。そして、この3つのマス目の数字(データの個数)の合計を、データ全体の個数で割ります。これが「正解率」です。「%」で表示してもよいでしょう。
■「正解データとのクロス集計表(分割表)」のイメージです(6変量・625個・7クラスター)mykm7 | A | B | C | D | E | F | G | C4 | 15 | 0 | 0 | 0 | 0 | 0 | 0 | C5 | 0 | 12 | 0 | 0 | 0 | 0 | 0 | C6 | 0 | 21 | 2 | 0 | 0 | 0 | 0 | C7 | 0 | 6 | 56 | 0 | 0 | 2 | 0 | C3 | 0 | 0 | 105 | 6 | 1 | 18 | 4 | C2 | 0 | 0 | 38 | 13 | 38 | 38 | 49 | C1 | 0 | 0 | 3 | 5 | 99 | 18 | 76 |
※クラスター番号(ここでは1から7)は、クラスタリングを実行するたびに変わる場合があります。中身を見て対応関係を見定め、手作業で並べなおす必要があります。
ここでは便宜的に(機械学習など工学的な文脈にならって)「正解データ」と呼んでいますが、自由研究のテーマによっては、「正解」と呼ぶことがふさわしくないデータを使うこともあるでしょう。その場合は「一致率(一致度)」と呼ぶなど、適切な配慮をしてください。
「探索的な分析(exploratory analysis)」([3525])としての「クラスター分析」では、「正解データ」が用意できない場合に、クラスタリングで得られたクラスターに含まれる要素(例えばサッカー選手の例でいえば、個々の選手)を人の目で見て、その特徴をじぶんの言葉で述べるということをせざるをえない場合もあります。これは、研究の方法としてはきわめてナイーブ(naïve)であるため、とりわけ慎重に観察し、データや結果からはいえないことを絶対に述べないという態度が必要です。
・「naïve」
http://ejje.weblio.jp/content/na%C3%AFve
・Wikipedia「相互情報量」のイメージです
https://en.wikipedia.org/wiki/Mutual_information
https://upload.wikimedia.org/wikipedia/commons/thumb/9/91/Mutual_Information_Examples.svg/2000px-Mutual_Information_Examples.svg.png
・散布図1枚ごとに「F検定」と「相互情報量」を示す例です
http://scikit-learn.org/stable/_images/sphx_glr_plot_f_test_vs_mi_001.png
・「κ係数」の用例です
http://cogpsy.educ.kyoto-u.ac.jp/personal/Kusumi/datasem14/nisimura.pdf#page=19
> とても簡単な計算式なので、
> 手でも算出できます・・・が、一応やってみましょう。
まあまあまあ、そうおっしゃらず…ねぇ。
※一致(正解)を数えない(「率」で示さない)場合、クロス集計表(分割表)の縦と横の要素数は異なっていても構いません。(※いろいろなことをあきらめた上での「構いません」=「そこだけ『構って』も“しかたがない”(そもそも厳密でない)」という意味です。)
クラスタリングによって機械的に得られたクラスターに対して、「名前を付ける」ことは、自由研究では行なってはいけません。例えば、江戸時代の(うち、ある代の将軍の時代の)大名の分類をしたときに、得られたクラスターに「○○タイプ!」「××タイプ!」などと好き勝手な命名をしてはいけません。クラスタリングに使った変量の高低(大小)や、その組み合わせによってクラスターの内容が説明できるときは、「『A低・B高』型」のように便宜的に呼ぶことは許されるでしょう。(※便宜的な呼びかたであることが明確であるので容認されうるという意味です。)
一方、既に確立された呼びかたや分類がある場合、それを使うことを検討しましょう。大名の分類には「親藩」「譜代」「外様」という、定着した呼びかたが既にあります。これらの分類を直接には示唆しない変量を使ってクラスタリングした結果が、どのくらい、これらの分類を言い当てているのかを探るのは、おもしろい分析といえるでしょう。
「詳説編」([3527])に続きます。
| |