Top
個別メモ
Latest update on 2012年3月5日 (月) at 10:54:46.
【第1906回】 1時間で人類生態学を語れるか(2011年6月22日)
- 来週月曜の公衆衛生学講義は,1コマ目の1時間で人類生態学,2コマ目の1時間で老人保健の法律と制度を説明する他に,再来週の見学実習発表会の準備についての説明と,期末試験の時刻変更についての説明をしなくてはいけない。中でも最大の問題は,1時間で人類生態学を語れるかということだ。8月には岡山で丸3日かけて語るのに,今回は本当に1時間,つまり60分しかない。教科書的に人類生態学のアプローチを説明したら,それだけでも時間が足りない。さてどう絞るか。
- /.Jのmasakunという方の日記エントリでFirefox 5のリリースを知ったのでインストールした。アドインのReminderFoxとTotalValidatorは問題なく動作した。
- 昼食はとよだに行ったら臨時休業だったので,天壇まで足を伸ばした。食べながら,高橋 誠『かけ算には順序があるのか』岩波科学ライブラリー,ISBN 978-4-00-029580-2(Amazon | bk1 | e-hon)を読了。小学校で長方形の面積を求める公式は縦×横と教えられていて,逆だと式にバツがつくという話を思い出したが,本書を読んで,公式偏重という以上に根深い問題であることがわかった(本書が書かれたきっかけはkikulogのスレッドだそうだが,1600以上ついたコメントを眺めるだけでも根深さはわかる)。本書は表題の問題を扱った第1章,掛け算九九の歴史を追った第2章,離散量と連続量の違いを扱った第3章からなり,どれも興味深く読めた。著者は「算数教育史家」だそうで,膨大な資料に基づいて,これらのテーマが非常に丁寧に論じられていた。いまだに,小学校では,「6人に4個ずつミカンを配ると,ミカンは何個必要ですか」という問題に,「6×4=24。答え 24個」と解答すると,答えはマルだけれども式はバツになる場合があるということは驚きだ。本書第1章によると,おそらく,その原因は,遠山啓や森毅や銀林浩が属していた数学教育協議会が,掛け算を,「1あたり分×いくつ分」という順序で書くべきとしたことにある。その方式に形式的に従った内容が,どの検定教科書の教師用指導書でも推奨されているらしい。遠山らが,この場合の立式は「6×4=24」でもよいが,その場合の意味は,「6(個/回)×4(回)」であって,「4(個/人)×6(人)」とは考え方自体が異なるとしていることも初めて知ったし,英語のmultiplied byとtimesの違いなども興味深かったが,結論としては,著者が示唆している通り,件の問題の立式を「6(人)×4(個/人)」と単位ごと入れ換えた考え方で「6×4=24」と書いても何の問題もないと考えることに同感だ。著者あとがきによると,kikulogのスレッドも大勢はそれで決しているらしいが,小学校教育ではそうではないというのは唖然とする。九九の歴史も知らないことばかりだった。とくに総九九導入の最後の障壁となった割り算九九という話は意外だった。第3章は,離散量と連続量の違いが1から始まるか0から始まるかの違いになる点を強調しているように読めたが,幅があるかないか(というか,日時を離散量としてみるのは,ある幅をもった量を1つの値で代表させていることになる)という点も重要だと思った。つまり,2時から5時といった場合は,2時0分から5時0分まで,つまり2時台の始点から5時台の始点を指すから3時間だが,2日から5日といった場合は2日目の始点から5日目の終点までを指すから4日間になるという説明も可能ではなかろうか。
- 月曜の勉強会の関係で,Rで因子分析を行う場合の補助関数が含まれたパッケージはないだろうかと検索した結果,FAiRという統合パッケージらしいものを見つけたのだが,多数のパッケージに依存しているうち,Rgraphvizが2.13.0に対応していないようで,うまく実行できなかった。統合パッケージじゃなくても,factanal()の結果からscreeplotとKMOやMSAの計算とBartlettのspherical testをしてくれる補助関数が提供されていれば,それで十分なんだが。やはり作るしかないか。
- その後,いろいろ調べてみたら,psychパッケージのfa()関数が素晴らしく多機能なことがわかった。relaパッケージのpaf()関数は,因子分析に関してはfa()関数のオプションfm="pa"と同じ動作をするのだが,fa()がnfactorsオプションで抽出する因子数を指定しなくてはいけないのに対して,paf()では(渡すデータがデータフレームではなく行列でなくてはいけないので,as.matrix()で括る必要があるのと,結果オブジェクトにsummary()を適用していろいろな情報が表示される点に注意すれば)自動的に最適な因子数を決めてくれるし,KMOとMSAも計算してくれるし(調べた限りではこれらを計算してくれるパッケージは他にない。青木先生が開発されたものをパッケージ化してCRANに投稿してくださるといいのだが),結果オブジェクトのEigenvalues[,1]をbarplot()すればスクリープロットになるので,指定することが少なく,便利だと思う。fa()でfm="ml"かつrotate="varimax"とした場合の結果は,factanal()でrotation="varimax"(デフォルト)と同じ最尤法で求められるが,fa()にはfm="minres"というオプションもあり,残差を最小化する推定法も可能で,データの相関構造が変な場合にはこちらの方が向いているらしい。"minres"の結果と"ml"の結果が一致すればよし,一致しない時は"minres"の結果を使うべきと書いてある資料もあったので,それなら最初から"minres"でやればいいかもしれない。fa()はBartlettのspherical testもやってくれるし(p値は表示されないが,自由度とカイ二乗値が表示されるので1-pchisq()で計算できるし,cortest.bartlett()関数に元データを渡せばp値も出てくる),因子の共通性も表示されるし,"Tucker Lewis Index of factoring reliability"の値も計算してくれるし,scores=TRUEと指定すれば因子得点も出せる(ただし,factanal()ではscores="Bartlett"も可能だが,fa()のscores=TRUEで得られる因子得点は,factanal()のscores="regression"に相当するものだけである)。rotateのオプションもfactanal()のrotationに指定できる"none","varimax","promax"だけではなく,"quartimax","bentlerT","geominT","oblimin","simplimax","bentlerQ","geominQ","cluster"が指定できる。また,factanal()ではデータに欠損があってはならないが(na.actionというオプションで対処可能らしいが詳細不明),fa()ではimpute="median"とかimpute="mean"と指定することで欠損値を推定して分析可能である。さらに,fa.parallel()関数を元データに適用すれば(fm="ml"などはfa()と同じだけ指定可能),平行分析(parallel analysis)を実行して(図も勝手に描画される)適切な因子数を示唆してくれるので,因子数を自動的に決めたければ,fa()関数のnfactorsオプションに渡す値を,fa.parallel()関数の結果オブジェクトの$nfactとして得ることができる。fa()などの結果は,Graphvizを使って美しい図にすることが可能らしいが,疲れたし,本当は講義準備もしなくてはならないので,今日はこの辺で追求を止める。
- 上記はあまりに読み難いので,後でRのページにまとめて転載しよう。いつになるか不明だが。
- 21:00を過ぎたので帰途に就く。人類生態学の講義は,まだどうやって圧縮すればいいのか,構想がまとまらない。
- 帰宅後,テレビを消そうと思ったら,ウィンブルドンのクルム伊達公子vsヴィーナス・ウィリアムズ戦が凄いことになっていて,結局,クルム伊達選手が8-6で第1セットを取るまで見てしまった。しかしLiveではなかったので,ネットで結果を見たら第3セットまでもつれこんで,しかも最後は8-6という惜敗であったことがわかり,眠ってしまった。体格が全然違うのに,40歳であそこまでプレーできるクルム伊達選手は本当に凄い。
▼前【1905】(教室ミーティングと疫学勉強会と講義準備(2011年6月21日)
) ▲次【1907】(とりあえず方針決め(2011年6月23日)
) ●Top
△Read/Write COMMENTS
Notice to cite or link here | [TOP PAGE]