因子分析のブックガイド

因子分析の参考書のブックガイドを書いておきたいと思う。

誰も教えてくれなかった因子分析: 数式が絶対に出てこない因子分析入門

誰も教えてくれなかった因子分析: 数式が絶対に出てこない因子分析入門

因子分析の入門はこの本がよいと思う。

数式が出てこないのは取っ付きがよいし、かといって、記述がさっぱりしすぎているということもない。 この1冊で因子分析とは何か、ということは理解できる。

僕自身も最初に読んだのはこの本である。

因子分析入門―Rで学ぶ最新データ解析

因子分析入門―Rで学ぶ最新データ解析

豊田先生の本なのでそのうち購入するつもり。 因子分析はRのpsychoパッケージ(もしくはMplus)を使うのが良いので、Rの参考書は持っておいて損はないと思う。

M-plusとRによる構造方程式モデリング入門

M-plusとRによる構造方程式モデリング入門

MplusとRで潜在因子を含んだ分析を一通り掲載した本。因子分析を解説した章がある。因子分析にかかわらず、この本は非常に良い本だと思う。

心理学・社会科学研究のための構造方程式モデリング: Mplusによる実践 基礎編

心理学・社会科学研究のための構造方程式モデリング: Mplusによる実践 基礎編

未購入。心理学の本のようだが読んでみたい。

Data Analysis with Mplus (Methodology in the Social Sciences) (English Edition)

Data Analysis with Mplus (Methodology in the Social Sciences) (English Edition)

Mplusでの分析方法が掲載されている本。一応読んでるが、ほとんど参考になったことはない。 Mplusは公式マニュアルがしっかり整備されているので、それで十分という理由もある。

Factor Analysis: Statistical Methods and Practical Issues (Quantitative Applications in the Social Sciences)

Factor Analysis: Statistical Methods and Practical Issues (Quantitative Applications in the Social Sciences)

SAGEの緑本。SAGEの緑本は必携か。

Introduction to Factor Analysis: What It Is and How To Do It (Quantitative Applications in the Social Sciences)

Introduction to Factor Analysis: What It Is and How To Do It (Quantitative Applications in the Social Sciences)

  • 作者: Jae-On Kim,Charles W. Mueller
  • 出版社/メーカー: SAGE Publications, Inc
  • 発売日: 1979/03/28
  • メディア: ペーパーバック
  • 購入: 1人 クリック: 1回
  • この商品を含むブログを見る
上の本と同じ著者による入門書。後に出た本の方がわかりやすいので、この本は不要だと思う。

Latent Variable Models: An Introduction to Factor, Path, and Structural Equation Analysis, Fifth Edition (English Edition)

Latent Variable Models: An Introduction to Factor, Path, and Structural Equation Analysis, Fifth Edition (English Edition)

未読。よくあるコンセプトの本だが面白そう。

Factor Analysis (English Edition)

Factor Analysis (English Edition)

古典的な参考書。Gorsuch本は今でもよく参照されている。必携の書(読まなかったとしても引用で使うので)。引用には第2版を使おう。

因子分析入門 (1979年) (サイエンスライブラリ統計学〈12〉)

因子分析入門 (1979年) (サイエンスライブラリ統計学〈12〉)

古典的な入門書。昔の日本人はこの本で勉強した人が多いらしい。 掲載されている技法は古い。しかし、因子分析の基本的な考え方が書いてあるので、今でも参考になりそうだ。

ヒトラーとパーキンソン病

少し前に「ヒトラーは“ジャンキー”?」というBSドキュメンタリーがあり、興味深かったので、購入した本。

ヒトラーの震え 毛沢東の摺り足―神経内科からみた20世紀 (中公新書)

ヒトラーの震え 毛沢東の摺り足―神経内科からみた20世紀 (中公新書)

ちなみにBSドキュメンタリーはこちら。

ヒトラーは“ジャンキー”?」 https://www.nhk.or.jp/docudocu/program/253/2145614/index.html

小長谷の本では、ドキュメンタリーとは異なり、パーキンソン病と投薬について書かれてあり、これまた大変興味深かった。

ドイツではエレン・ギッベルスという神経学者の本が有名だそうだ。

ギッベルスによると、『ドイツ週間ニュース』にみられるふるえは、左手では四二年にはあらわれており、右手で左手を握りしめたり、からだにピッタリとくっつけていたことも観察されている。左足のふるえを抑えるために、テーブルに押しつけることもあった。

f:id:iDES:20190410163318p:plain

あまり重要なことではないかもしれないが、abラインが少しおかしい気がする(そもそも切片0というのは奇跡に近い)。切片は正の値をとるように見えるので、1939年から症状があったのたろう。

運動障害

ヒトラーに長いあいだ仕えた参謀将校によると、最後のころの様子は次のようなものだ。「総統は肉体的にみるからに恐ろしげな様子であり、苦しそうに、ぎこちなく足を引きずって歩きまわっていた。地下壕の自分の居聞から会議室へ行くときには、上半身を前方に投げ出すようにして、足を引きずって歩いていた。バランス感覚はなくなり、ごく短い距離(たかだか二〇~三〇メートル)を歩く途中で、立ち止まらなければならないときは、壁の両側に置かれた総統専用のベンチに腰を下ろしたり、話し相手にしがみついたりしていた。目は充血していたし、提出された文書はみな特製の『総統専用タイプライター』で普通サイズより三倍も大きな字で打つであったが、それでも拡大鏡を使ってやっと読めるようだった。しょっちゅう、口の両端からよだれが垂れていた」

かなり典型的なパーキンソン病である。

現代ではパーキンソン病に対して病気の進行を遅くする治療法がいろいろとあるが、当時は病気のメカニズムも治療法もよくわかっていなかった。パーキンソン病患者の線条体ドパミンが著しく低下していることがわかったのは1960年である。

小字症

運動障害の一つとしてあげられる症状である。パーキンソン病では病気の進行とともに書く字が小さくなっていく。ヒトラーのサインは次第に小さくなっていったようである。

保続(ほぞく)

また、この病気の精神的特徴の一つに保続という現象がある。一つの考え方や、やり方に固執することである。新しい事態がおこっても、途中から方針を修正することができない。融通がきかなくなるのだ。開戦当初、それまでの常識をやぶる用兵で、ヒトラーは華々しい戦果を次々と挙げていたが、途中からそれが通じなくなった。軍の参謀の進言にも耳を貸さなくなった。彼は作戦会議の最中でも地図の一点をじっと見つづけたままであり、軍の司令官や参謀の話などはかったように、最初からの自分の作戦遂行を命令する。失敗した作戦への反省もなく、ワンパターン化した作戦で戦争指導をつづけ、負け戦の連続となってしまった。スターリングラードの攻防戦などで、死ななくてもよかった若い兵士たちが何十万人単位で犠牲となった。精神の保続症状がこのような結果をもたらしたのだ。

これは確かにありそうな話である。

ヒトラーのパーキンソン症状が映像から確認できるのは1940~41年だそうだ。ロシア侵攻も同じ1941年である。ナチスドイツが戦略的に大きな失敗をし敗退をし始める時期と重なる。スターリングラードの攻防戦は1942~43年であり、この時期にはパーキンソン病はかなり進行していたはずである。 パーキンソン病や保続がドイツの戦略的失敗と関係しているというのは仮説になりうるだろう。

ヒトラーの運動障害についての将校の回顧からは、1944年にはかなりひどい状態になっていたことがわかる。スターリングラード攻防戦は映像でパーキンソン病が確認できる時期との間なので、わりと病気は進行していたはずである。

小長谷の本では記述がないが、ホロコーストが本格化(ガス室の使用等)したのは1943年である。

モレルの処方

モレルはヒトラーの主治医として有名な医師である。

テオドール・モレル https://ja.wikipedia.org/wiki/%E3%83%86%E3%82%AA%E3%83%89%E3%83%BC%E3%83%AB%E3%83%BB%E3%83%A2%E3%83%AC%E3%83%AB

ヒトラーはモレルから77種類の薬を処方されていたようである。「ヒトラーは“ジャンキー”?」と言われるのはその薬に麻薬が含まれているからである。

アンフェタミンメタンフェタミン、コカイン、モルヒネと主要な麻薬をヒトラーは摂取していたようである。アンフェタミンのような中枢神経刺激薬を飲むと眠れなくなる。その副作用のためにバルビタール(睡眠・鎮静薬)が併用されていたのだろうか。

メタンフェタミンドパミン

パーキンソン病ドパミン不足で起こる病気である。 アンフェタミンメタンフェタミン、コカインを飲んでいたのはジャンキーというよりも、パーキンソン病対策と理解できるようなのだ。

ヒトラーの飲んでいた覚醒剤メタンフェタミンである。これはヒロポン、つまりアンフェタミンと同じく、ドパミンによく似た化学構造をしている。もともとこれらの覚醒剤は脳の中ではつくられていないが、外から入ると、ドパミンが作用する細胞に、似たような効果をあらわす。またコカインは、化学構造式は似てはいないが、脳の中のドパミンの量を増やしたり、効果を強める作用がある。

アトロピン

もう一つ、ヒトラーへの処方でパーキンソン病と関係がありそうなのは、アンチガスという薬だ。これの主成分は、アセチルコリンの作用を抑えるアトロピンである。アセチルコリンは胃腸のはたらきを活発にしたり、汗を分泌させるはたらきがある。ヒトラーは、よくおならをしていて、またひどい汗かきでいつも臭かったという。彼の前では、悪臭の話題をもちだしてはいけないことになっていた。アセチルコリンのシステムがはたらき過ぎているので、それを抑えるためにアトロピンを飲んでいた。 アトロピンは自にも作用して、瞳孔を広げる。戦争末期のヒトラーが、異様に輝く目をしていアンチガスの成分のアトロピンのためだという。

アセチルコリン抗コリン薬のアトロピンも摂取していたようである。ベラドンナも成分はアトロピンなので、同じ目的で摂取していたのだろう。

カイザー基準についてのメモ

因子分析の勉強メモ。

カイザー基準は、カイザー・ガットマン基準と呼ぶこともある。これはKaiser(1960)よりも先にGutttman(1954)が先に指摘があったため、連名での表現である。

固有値が1以上のものを因子とする方法である。それは、1つの因子にしか負荷しない因子(独自因子)は最大1であるためである。

f:id:iDES:20190319093630p:plain

先のエントリーで描いたScreeの1のところに引いてあるラインが固有値1のカイザー基準である。

カイザー基準は標本誤差の問題を無視したもので, サンプルサイズが無限のときに正しい(Horn,1965)。標本誤差を含む時,基準は因子数を多く推論してしまう。(堀 2005)

因子間相関が高いと因子数を過小に推測してしまうことがある。 Cattell& Vogelmann(1977)の人工データにおいてはカイザー基準が15中9も過小推定している。(堀 2005)

サンプルが多い研究というのはそれほど多くないので、代替の場合、標準誤差という観点から見ると、因子数が多く推論し、因子間の相関が高いと少なく推論するという特徴があるようだ。であれば、最低基準にも最高基準にもならないということになる。

相関行列の固有分解から得られる固有値を大きいものから順に1.0以上の値を示す個数を因子の数とするのがGuttman 基準あるいはKaiser-Guttman基準であった(Kaiser, 1960; Guttman, 1954)。Cattell(1966)によるScreeは、固有値の値を最大から最小へとグラフで表し、前後の落差の大きいところで因子数を決める方法である。これらの方法の問題点は、対角項に共通性ではなく、1.0を置いた相関行列を対象としていることにある。  主因子解の第1因子は、対角項が共通性からなる相関行列の固有値固有ベクトルから計算される。第2因子は、第1因子の残差行列を対象とした固有分解から計算される。以降の因子も残差行列から固有値固有ベクトルの計算により抽出されることになる。これに対して、観測変数の独自性ではなく、観測変数にランダム誤差を仮定した主成分分析法 による第1主成分は、対角項が1 からなる相関行列から計算される。  固有値の値を手がかりとするKaiser-Guttman基準やScree は、このようにみてみると、因子ではなく主成分を対象としていることになる。(清水 2018)

Screeの話も出てきているが、両方の技法とも対角項に1を置いた相関行列で計算されている点が問題のようだ。引用に書いてあるように、これは主成分の分析である。

簡単に言えば因子分析をして妥当な因子数を探っているにも関わらず、その手法が主成分を対象にしているのであれば、ちぐはぐである。

主成分分析と因子分析は別の分析ですと言いながら、因子数をカイザー基準で決めるというのは、ダブルスタンダードとも言える。Screeには使い道があるようだが、カイザー基準はあまり役に立たないようだ。

柳井晴夫「因子分析法の利用をめぐる問題点を中心にして」

因子分析について少し勉強をしているところである。因子分析は心理学の人が使うことが多く、心理学徒ではない僕は因子分析をほとんど使ったことがなく、勉強もろくにしたことがないので自分の勉強を兼ねてのエントリーである。

今日、取り上げるのは下記の文献である。

柳井晴夫「因子分析法の利用をめぐる問題点を中心にして」 教育心理学年報 39(0), 96-108, 2000 https://ci.nii.ac.jp/naid/130004572326

この論文は1998年から1999年にかけて教育心理学研究や心理学研究に掲載された論文や学会大会の発表抄録に掲載された論文を対象にしている。それらの論文で、因子分析が適切に使われているかなどを調査している。技法の使用頻度をまとめたのか以下の表である。

f:id:iDES:20190405015444p:plain

1965年からの論文の間違いをチェックしたわけではないようだが、過去1年間の論文について柳井は次のように述べている。

因子分析の主因子法,または主成分分析の結果をバリマックス回転して得られた因子負荷量の平方和を固有値と記述してある論文が最近1年間に発行された教育心理学研究の4論文と心理学研究の1論文に見られた。これは明白な誤りであるが,この誤りは,ここ10年来跡を絶たない。

この誤用パターンはあるあるネタかもしれない。 歴史的に主因子法・主成分分析が使われてきたことが原因なのだろうが、SPSSの推定法の初期値?が主成分分析になっているのも関係しているかもと思ったりもする。

f:id:iDES:20190405015459p:plain

推定方法

因子分析にかける変数を規定する因子があらかじめ仮定されていたり,変数間の相関関係をできる限り少数の因子で説明したい場合には,主成分分析でなく,因子分析モデルを仮定した因子の推定法を適用すべきである。こういった場合の因子負荷量の推定法としては,これまで主因子法が多く使われてきたが,SASSPSSといったソフトウェアが利用可能な場合には,最小二乗法,重みつき最小二乗法,最尤法などをもっと利用し,可能であれば,異なった手法の適用が分析結果にどのような相違をもたらすかについて考察してほしい。

データの特性を把握して、可能性のある推定法を一通り行うのは当たり前のことだが、意外にそうでもないようだ。現在だと主因子法+プロマックス回転を何も考えず採用している論文が多そうだが、それが正しいとは限らないということことだろう。

回転

リマックス回転が多いことが指摘されている。

因子分析を用いたとみられる論文数は19編あった。そのうちバリマックス回転を行った論文は13(66%),斜交回転はプロマックス回転(4)・オブリミン回転(1)・斜交プロクラステス回転(1)であり,いまだにバリマックス回転が主流であることがわかる

最近では、プロマックス回転が使われることが多いように思う。バリマックス回転を使わなくなっているので、ずいぶん改善してきたのではないかと思う。論文ではバリマックス回転が適切ではない研究について具体的に指摘されている。

1997年に因子分析の権威マイケル・ブラウン教授が来日された際,斜交回転の方法としてプロマックス回転法とオブリミン回転のどちらが優れているかという質問をしたことがある。このとき,ブラウン教授はためらわずオブリミン法が優れていると回答し,プロマックス回転法については批判的であったことが印象的であった。

プロマックス回転も批判されている。具体的にマイケル・ブラウンが何を言ったかは知らないが、プロマックス回転が簡便法であるところが問題なのではないかと推測している*1

標準誤差

2000年でもある程度、標準誤差の算出が試みられており、筆者は因子パターンとの併記が望ましいと述べている。まったくその通りだと思う。現在では手技も発達しているかもしれないので、どの方法をとれば標準誤差が出せるのかを調べてみたい。

信頼性係数

(何も考えず)クロンバッハのαを使うことへの批判である。

質問紙による尺度構成の手順としては,因子分析(回転を含む)により抽出された各因子に高い負荷量を有する項目をまとめてα係数を算出するという手続きがかなり定着しているが,村石・豊田(1998)は,尺度に含まれる項目のτ等価(項目得点が真値を共有している)や平行性(τ等価に加えて,誤差分散も等しい)を無視してα 係数を求めることは,必ずしも好ましくないことを警告し,因子負荷量を用いた精密な計算式の利用を推奨している。一方,高木・柳井(1998)はα 係数と同時にθ係数を求め,ある特定の尺度のなかに他の項目と比較してきわめて因子負荷の低い項目が含まれている場合には,θ 係数はα 係数に比べ0.2~0.4増加する事例を報告している。

感想

柳井論文は2000年に公刊されており、1999年までに執筆された論文が対象となっているので今から20年前ほど前の状況が描かれてある。心理学の論文はほとんど読まないので、的外れかもしれないが、争点となるトピックは違っても、同じようなことが起こっている気がする。

僕が最初に因子分析というものを統計パッケージで走らせたのは、大学の3年(だったと思う)の演習授業である。2003年のことだ。担当教員は林直保子先生で、その時に最尤法や最小二乗法を習った記憶がある。バリマックス回転も習ったが、ほとんどのケースではプロマックス回転がいいと習ったように思う。学生に教えるくらいだから、研究者はそのくらいはしていると思い込んでいたが、今回論文を読んで、そうでもなかったことがわかった。確かに林直保子先生は新しい技法を取り入れるスタイルなので、学部の演習でできる範囲で最新のもの教えてくれていたのだろうと思う。

最後に、因子分析とは直接的な関係はないが標準化偏回帰係数についての記載があったので引用しておこう。

喜岡・柳井(1997)は上記,および,Newman,T.B.& Browner,W.S.(1991), Greenland,S.etal.(1991)といった計3つの論文の要旨を紹介したあと,心理学や社会学の行動科学においても同様なことがあてはまることを指摘し,重回帰分析を用いる場合,説明変数の尺度の原点や単位が任意でかつ意味が明確でないときには標準偏回帰係数の利用を,原点や単位の意味が明確な場合には偏回帰係数の利用を薦めている。教育心理学研究で用いられる性格尺度・態度尺度が説明変数となる場合は標準偏回帰係数,医学や疫学で用いられる最大血圧値と血清コレステロール値を用いてある疾患の進行度を予測するような研究の場合には偏回帰係数を用いるべきということになる。例えば,最大血圧値を10下げた場合,最大血圧に与えられた偏回帰係数を10倍した分だけ進行度が改善されることになる。いずれにしても,偏回帰係数と標準偏回帰係数のいずれを選択するか,あるいは回帰分析の使用を止めて他の手法を選択するかは,研究目的・データの収集法・研究結果を実際の現場にどのようにフィードバックすべきかといった様々な要因に影響されるものであることを指摘しておこう。その意味で,判別分析,重回帰分析やパス解析,共分散構造分析において変数の単位や意味に無関係に標準偏回帰係数を利用することは慎むべきであるといえよう。

この主張に反対というわけでもないが、社会学の論文では標準化偏回帰係数は使わないことが推奨されている。 推奨と書くとやや誤解があるが、少なくとも英文で刊行される論文では使われていない。

単位・意味といった点では、社会学の論文は回帰式の結果で従属変数の推定値を出すことが目的ではないこと、モデル間の比較をすることが多いので単位を揃える必要がないことなどが理由である。また、推定値標準化というのは平均が0、分散が1となるようにデータを変換することであり、変数が正規分布がに従うことが仮定されている。しかし、社会学の分析では正規分布が仮定できる変数が少ない。柳井が想定するリッカート尺度を中心とした心理学とは大きな違いだろう。正規分布が仮定できないのに無理やり標準化をすると、当然、偏回帰係数が正しく計算できない。

単位・意味だけではなく、変数を標準化していいのかを考えるべき、という主張であれば、賛同ができるが、このままでは賛同できない、といったところだろうか。

*1:プロマックス回転はバリマックス回転を施した因子負荷行列に斜交プロクラステス回転をかけるという方法

WordPressを利用して授業の出席をとる

今年度の後期(の後半)から、大学での出席のとり方について見直してみた。 今まではマークシートで出席をとっていたが、スマホを利用する方法に変更した。

基本的な手順は以下である。 1. Webで出席フォームを用意する。 2. アドレスをQRコードにしてレジメに印刷、配布。 3. 学生はカメラでそのQRコードを撮影して、スマホWebブラウザで出席確認を行う。

出席のとり方は大学によってかなり異なるようだ。知人に聞く限りの話では、Blackboardを使用している大学や、学生証を機械にかざすといった方法があるようだ。Blackboardが便利だとは思えないし、なにより使い勝手が悪すぎる。ログインすると、これからCMSの構築をするぞ!という雰囲気で、一般的な教員に使いこなせるレベルだとも思えない。どこかの企業が作成した出席システムを使用する大学もあるが、高価なのにに使用場面限られるなどコスパが合っているようにも思えない。

僕の好みは、誰でも持っているハードウェアで、フリーのソフトウェアを使い、かつ、効率の良いもので実行できることだ。

阪大の場合、CLEという名前のBlackboardが導入されているが、授業によって出席機能が使えないという不思議な設定がされているクソ仕様である。ということで、自前で出席確認のシステムを構築しようと考えた。 Webを利用しての出席確認をする方法はおそらく多くの選択肢があるので、このエントリーで紹介する方法がベストではおそらくないだろう。とりあえず忘備録代わりに書いておこう。

スマホで出席確認をするために必要な条件

システム構築のために学生に簡単なアンケートを実施してみた。

  1. 大学生はスマホを持っているか
    今年度の後期の学生は全員持っていた。スマホで出席をとっても問題はないと判断した。スマホを持っていない学生も今まで受け持った学生の中にはいたが、スマホは大学生の必須アイテムになっているので、スマホを持っていない学生はかなり少ない。そういった学生には手書き用の出席カードを用意しておけば対応できそうである。

  2. 文章を書くのはスマホと手書きのどちらが速いか
    授業の感想も出席と同時にとりたい。これをWebブラウザの入力フォームで行っても問題ないか、を確かめてみた。 スマホの入力速度が手書きに比べて遅ければ、感想は手書きの用紙を別に用意した方がよい。 口頭で聞いて回った時には、スマホの方が速いという意見が多いように感じたのだが、アンケートをとってみると、そうでもなかった。手書きを1とした時にスマホが1) スマホの方が遅い(0.6~0.7)、2)ほぼ同じ、3)スマホの方が速い(3~5)という3つの回答にだいたい均等に分かれた。 スマホ入力の腕が鍛えられるのは、LINEなどのSNSだと思うので、人との付き合い方が多い方が入力速度も速いのだろう。あとは、高校時代からバリバリ入力してきたか、によっても入力速度は変わってきそうだ。

自分の授業で聞いただけなので、偏りがるかもしれないが、スマホを利用した出席確認は学生側にとっても許容できると判断した。 名前・学籍番号・感想の3つのフォームを用意することにした。

具体的な実施方法

では、どのような方法で実行するか、である。

  1. プログラミングをする
  2. Googleなどのクラウドを使用したサービスを利用する
  3. 自分のサーバーでツールを使ってフォームを作る

授業の出席情報をクラウドに送るのはさほど問題ではないので、2でもよいのだろうが、今回は3にした。ツールはWordPressを使用した。WordPressを選んだ理由は以下の3つである。

  1. 使い慣れている
  2. スマホ/PCブラウザ両対応はテーマが用意されているのでデザインの手間が省ける
  3. WordPressプラグインが多く、データベース的な作業が得意(と期待)

他のツールを調べていないので、他にも適切なものはおそらく存在しているだろう。 ざっくりと調べたところでは、わりと有料サービスが多かった印象である。

Contact Form 7

https://ja.wordpress.org/plugins/contact-form-7/
作者: Takayuki Miyoshi

プラグインは2つ使う。Contact Form 7はコンタクトフォームのプラグインである。コンタクトフォームからのメッセージはメールで受信する。 おそらく、出席用のメールアドレスを用意しておいた方がよい。

Flamingo

https://ja.wordpress.org/plugins/flamingo/
作者: Takayuki Miyoshi

Contact Form 7の内容をcsv出力できるプラグインである。出席のデータとして使用するのはこのcsvである。

出席フォームの作成

2つのプラグインをインストールするとWordPressの管理画面の左メニューバーに「お問い合わせ」と「Flamingo」の項目が加わる。

まず、Contact Formの設定から行うので、メニューの[お問い合わせ]→[新規追加]で新しいフォームを作成する。

f:id:iDES:20190320171137p:plain

僕は上記のように名前・学籍番号・感想の3つのフォームを作成した。

<label> 名前 (必須)
    [text* your-name] </label>

<label> 学籍番号 (必須・<b>半角</B>で記入してください)
    [text* StudentNumber] </label>

<label> 感想
    [textarea your-message] </label>

[submit "送信"]

f:id:iDES:20190320171148p:plain

1点注意するところがある。 [メール]タブでは送信先のメールアドレスを入力するが、ここに自分の普段使いのメールアドレスを入れてはいけない。 出席確認メールであふれかえるので、上に書いたように専用のメールアドレスか、デタラメなメールアドレスに変更しておく必要がある。

出席フォームの表示

出席フォームを表示させるには、WordPressの固定ページを使用する。

アドレスのパーマネントリンクは「授業日」+「科目名」を使うのが後々整理しやすいように思った。例えば2019年の3月20日社会学の授業であれば"20190320socio"といった感じだ。ただ、単に授業日+授業名だと、欠席している学生でも、出席フォームの場所が用意に推測できるため、日付の後ろに4ケタのランダムな英数字をつけることにした。もちろんこれは好みである。

固定ページには、Contact Form(お問い合わせ)で指示されたように、以下のようなコードを記入すればよいだけである。xのところは変化するところである。

[contact-form-7 id="xx" title="xx"]

スマホでみると下記のような感じに仕上がる。

ちなみにテーマは"Dan"を使用している。
https://wordpress.org/themes/dan/

出席フォームの場所をレジメに印刷

固定ページでパーマネントリンクを作成して、それをQRコードに変換する。

変換はWebを探せばいくつもサービスが見つかるので、どこでもよい。例えば以下のようなサイトである。

QRのススメ https://qr.quel.jp/

画像で出力したQRコードのレジメなどに貼って配布する。 配布資料がない場合には、QRコードをスライドに映すなどして学生に出席フォームの場所を知らせることができる。

作成したQRコードは一度分析して「余分なもの」がつけ加わってないか確認しておいた方が良いだろう。

その他

遅刻の扱い

遅刻を記録したいという先生方もおられるだろう。コンタクトフォームはだいたいそうだが、Contact Form 7はタイムスタンプが記録される。出席確認をした時刻がわかるので、遅刻の判別がつけられる。その場合、出席は授業の最初にとるとよいだろう。

代返対策

僕はあまり気にしていないが、このシステムは代返は可能である。 というよりも、少人数クラス以外ではどのような方法をとっても代返は可能である。

このエントリで書いた方法でも可能である。例えばQRコードを撮影して、LINEで送れば、出席していなくても、出席フォームのアドレスがわかる。どの時代も持つべきものは友人といったところであろう。ただ、学生の協業を阻止したいという先生方もおられるだろう。その場合にはロケーション・データの取得を行えばよい。

ただ、ロケーション・データはわりと簡単に偽装ができる(Android/PC)。 学生側の対策としては、最初の授業の時に学校の教室のロケーションデータを確認しておくとよいだろう。そうすれば、家で寝ていたとしても出席したかのように偽装できる。

Rで因子分析 基礎

この原稿は統計学勉強会のためにかかれたもので、学校で習うあたりまでの簡単な解説である。

因子分析とは

(探索的)因子分析とは、観測できる変数から観察できない因子(潜在変数)を見出す探索し発見する方法である。このように説明してもよくわからないので、実際に実例を使いながら説明をした方がよさそうである。

Rで因子分析をする際にはpsychパッケージを使用する。psychパッケージにはサンプルデータも入っているため、入門にもちょうどいいと思う。

library("psych")
library("GPArotation")

GPArotationパッケージは回転をするためのパッケージ。 分析の際に使用するので一緒に読み込んでおく。

psychパッケージにはパーソナリティの5因子モデル(IPIP-NEO)のデータが含まれている。 パーソナリティの5因子モデルのデータは"bfi"という名前である。

data(bfi)

5因子モデルの議論にはあまり詳しくないが、IPIP-NEOというのは、人のパーソナリティを5つの因子で分ける試みの一つである(https://sapa-project.org/)。パーソナリティの5因子モデルの試みはいくつもあり、精神医学ではNEO-PI-Rを見かけることがあるが、サンプルデータなので細かいところは措いておこう。

調べたところIPIP-NEOには日本語の定訳がないようだ。変に日本語に翻訳してしまうと、正式な日本語訳だと誤解されると迷惑をかけるので、質問文は原版通りに、それぞれの因子の邦訳だけしておく。

Agreeableness 協調性・調和性
A1 Am indifferent to the feelings of others. (q_146)
A2 Inquire about others’ well-being. (q_1162)
A3 Know how to comfort others. (q_1206)
A4 Love children. (q_1364)
A5 Make people feel at ease. (q_1419)

Conscientiousness 勤勉性・誠実性
C1 Am exacting in my work. (q_124)
C2 Continue until everything is perfect. (q_530)
C3 Do things according to a plan. (q_619)
C4 Do things in a half-way manner. (q_626)
C5 Waste my time. (q_1949)

Extraversion 外向性
E1 Don’t talk a lot. (q_712)
E2 Find it difficult to approach others. (q_901)
E3 Know how to captivate people. (q_1205)
E4 Make friends easily. (q_1410)
E5 Take charge. (q_1768)

Neuroticism 神経症傾向・情緒〔不〕安定性
N1 Get angry easily. (q_952)
N2 Get irritated easily. (q_974)
N3 Have frequent mood swings. (q_1099)
N4 Often feel blue. (q_1479)
N5 Panic easily. (q_1505)

Openness 開放性・経験への開放性
O1 Am full of ideas. (q_128)
O2 Avoid difficult reading material.(q_316)
O3 Carry the conversation to a higher level. (q_492)
O4 Spend time reflecting on things. (q_1738)
O5 Will not probe deeply into a subject. (q_1964)

gender 性別 Males = 1, Females =2
education 教育 1 = HS 高校入学, 2 = finished HS 高卒, 3 = some college 大学入学, 4 = college graduate 大卒 5 = graduate degree 院卒
age 年齢 age in years

この質問文の中から5つの「まとまり」(因子)を導くのか因子分析の目的である。 データは確証的因子分析のものだが、今回はそのデータを探索的因子分析を用いる。

d1 <- bfi[1:25]

26列目以降は性別・教育・性別のデータが入っているので、1-25列だけを使用する。

res01 <- fa(d1, nfactors = 5, fm = "ml", rotate = "promax", scores=TRUE)
print(res01, digits = 3, sort=TRUE)

データ: d1、因子数: nfactors、推定方法: fm、回転方法: rotate、因子得点を表示scores=TRUEで表記する。データを最初に持ってくる以外は順番が入れ替わっても問題ない。

printのオプションは小数点を第3位まで: digits = 3、ソートを指定する。 以下が因子負荷(パターン行列)である。

ここではプロマックス回転、最尤法を使用する。最もよく使われる回転方法と推定法のペアである。最尤法には問題はない。データが正規分布から大きく逸脱している場合には、最尤法がむしろ望ましい。問題は、プロマックス回転の方だろう。プロマックス回転は簡便法であり、必ずしも良い選択肢とはならない。代わりにジオミン回転や独立クラスタ回転(ハリス・カイザー回転)などを使うのが良いだろう。

Standardized loadings (pattern matrix) based upon correlation matrix
  item    ML2    ML1    ML3    ML5    ML4    h2    u2  com
N1   16  0.862  0.224  0.041 -0.266 -0.097 0.705 0.295 1.37
N2   17  0.834  0.168  0.054 -0.247 -0.036 0.657 0.343 1.28
N3   18  0.721 -0.003 -0.012 -0.019 -0.007 0.525 0.475 1.00
N5   20  0.502 -0.159  0.026  0.147 -0.150 0.338 0.662 1.59
N4   19  0.492 -0.321 -0.102  0.054  0.084 0.478 0.522 1.93
E2   12  0.119 -0.709  0.046 -0.019 -0.005 0.548 0.452 1.07
E1   11 -0.055 -0.647  0.159 -0.015 -0.044 0.369 0.631 1.15
E4   14 -0.014  0.608 -0.043  0.274 -0.113 0.519 0.481 1.48
E5   15  0.158  0.480  0.237 -0.008  0.167 0.405 0.595 2.00
E3   13  0.075  0.480 -0.067  0.238  0.251 0.441 0.559 2.15
C2    7  0.141 -0.114  0.662  0.076  0.062 0.427 0.573 1.20
C4    9  0.152  0.029 -0.644  0.053 -0.039 0.465 0.535 1.14
C3    8  0.039 -0.098  0.585  0.088 -0.058 0.317 0.683 1.13
C5   10  0.187 -0.090 -0.562  0.015  0.093 0.435 0.565 1.34
C1    6  0.058 -0.050  0.542 -0.014  0.158 0.321 0.679 1.21
A3    3  0.036  0.203  0.011  0.621 -0.008 0.511 0.489 1.22
A2    2  0.048  0.099  0.082  0.567 -0.005 0.401 0.599 1.12
A5    5 -0.089  0.278 -0.039  0.546  0.013 0.483 0.517 1.56
A4    4 -0.024  0.075  0.196  0.425 -0.169 0.286 0.714 1.84
A1    1  0.151  0.106  0.044 -0.394 -0.036 0.150 0.850 1.50
O3   23  0.037  0.239 -0.037  0.080  0.594 0.473 0.527 1.37
O5   25  0.096  0.025 -0.025  0.052 -0.522 0.274 0.726 1.10
O1   21  0.015  0.155  0.028  0.025  0.508 0.324 0.676 1.20
O2   22  0.174  0.022 -0.075  0.153 -0.450 0.244 0.756 1.62
O4   24  0.158 -0.257 -0.020  0.170  0.381 0.257 0.743 2.627

表の見る部分は、数字の大小である。 因子負荷 は1~-1までの値をとり、1もしくは-1に近ければ非常に関連が高いという意味で、0が関連が低いという意味である。相関係数と同様の解釈の方法でよい。ちなみに、直交回転の場合因子負荷と相関係数は一致するが、斜交回転では一致しないので、斜交回転の際には、値が異なることに注意が必要である。

項目N1のML2(第2因子)は0.862であり、関連が高いことがわかる。他のN項目も同様にML2と正の関連があることがわかる。ML3は0.041と関連が低くなっており、N項目と第3因子(ML3)には関連がないことが確認できる。

printコマンドで"sort=TRUE"にすると自動で並び変えてくれるため、解釈が非常にやりやすくなる。ただし、試行錯誤の段階では、この例のように明確に分かれないため、ソートをしない方が解釈しやすいということもあるので、適宜使い分けが必要だ。

原因はわからないが、RStudioのRMarkdownからでは因子得点は出力できなかった。RStudioのコンソールから直接コマンドを入れると出力される。ノーマルなRであれば、このような問題は起きないので、RStudioを使用する際にだけ注意が必要だ。

次のブロックに表示されるのは統計量である。

                      ML2   ML1   ML3   ML5   ML4
SS loadings           2.651 2.389 1.944 1.875 1.493
Proportion Var        0.106 0.096 0.078 0.075 0.060
Cumulative Var        0.106 0.202 0.279 0.354 0.414
Proportion Explained  0.256 0.231 0.188 0.181 0.144
Cumulative Proportion 0.256 0.487 0.675 0.856 1.000

SS loadings: 因子負荷量平方和
Proportion Var: 寄与率
Cumulative Var: 累積寄与率
Proportion Explained: 説明率
Cumulative Proportion: 累積説明率

論文に書くときにはは、因子負荷量平方和、寄与率、累積寄与率の3つがあればよい。

次のブロックは因子間の相関が表示される。

With factor correlations of
      ML2    ML1    ML3   ML5   ML4
ML2  1.000 -0.272 -0.231 0.014 0.025
ML1 -0.272  1.000  0.375 0.335 0.153
ML3 -0.231  0.375  1.000 0.243 0.211
ML5  0.014  0.335  0.243 1.000 0.187
ML4  0.025  0.153  0.211 0.187 1.000

ほとんどの相関係数が絶対値0.35以下であり、5つの因子間の相関がそれほど高くないことがわかる。

次のブロックが最後で適合度などが表記される。

The degrees of freedom for the null model are  300  and the objective function was  7.228 with Chi Square of  20163.79
The degrees of freedom for the model are 185  and the objective function was  0.628

The root mean square of the residuals (RMSR) is  0.03
The df corrected root mean square of the residuals is  0.038

The harmonic number of observations is  2762 with the empirical chi square  1474.696  with prob <  1.29e-199
The total number of observations was  2800  with Likelihood Chi Square =  1749.883  with prob <  1.39e-252

Tucker Lewis Index of factoring reliability =  0.8721
RMSEA index =  0.0551  and the 90 % confidence intervals are  0.0526 0.0573
BIC =  281.469
Fit based upon off diagonal values = 0.979
Measures of factor score adequacy             
                                                    ML2   ML1   ML3   ML5   ML4
Correlation of (regression) scores with factors   0.929 0.904 0.881 0.868 0.835
Multiple R square of scores with factors          0.863 0.816 0.777 0.754 0.698
Minimum correlation of possible factor scores     0.727 0.633 0.553 0.508 0.395

スクリープロット法とカイザーガットマン基準

因子数を決定するために一般的に使われている方法。この方法は他の方法で代用した方がよいが、普及率が高いので記載しておく。

scree(d1,factors=TRUE,pc=TRUE,main="Scree plot",hline=NULL,add=FALSE)
VSS.scree(d1, main = "scree plot")  

f:id:iDES:20190319093630p:plain

スクリープロット法は図にしてガクッと落ちているところを探して、落ちる前の数を因子数として採用する方法である。 この図では、明確にわからない。2~3でガクッと落ちているものの、固有値はそこまで低くなく、ここで切っていいかは判断しづらい。

次に一般的によく使われるのが、カイザーガットマン基準である。固有値を「1」と決めて、それ以上のものを採用するという基準である。

図の1のところに線が横に引いてあるのが、カイザーガットマン基準である。カイザーガットマン基準に従えば、6因子構造を採用することになる。

ただ、このデータは5因子モデルなので、カイザーガットマン基準の6因子という結果とは異なる。また、スクリープロット法もあまりよくわからないので、探索的因子分析で、このデータをこの2つの方法で、5因子と決定することは難しい。

MAP基準、平行分析、BICの使用が現在では推奨されており、上の2つの方法は参考程度にするのがよいだろう。

クロンバッハのα係数

クロンバッハのαとは内的妥当性の係数の一つである。信頼性係数とも呼ぶ。外的妥当性とは計測したいものをどのくらい計測できているか、他の方法と比較してどのくらい妥当なのかをみるが、内的妥当性は質問項目が因子を導くのにどのくらい妥当かというものである。質問項目にノイズが多くあれば、クロンバッハのαは低くなる。

クロンバッハのαはpsychパッケージに含まれており、以下のコマンドで出力される。

alpha(d1)

各項目の統計量まで出力されるが、論文で使用する際には、以下値さえあればよい。

lower alpha upper   95% confidence boundaries
0.51  0.53  0.56

使用するのは中央の0.53である。95%信頼区間が表示されているが、この値の表記を求められることはないと思う。

0.53という数字だが、これは高いとは言えない数字だと思う。表記が主観的になっているので、いくつであれば良いかというのが明確に決まっていないためである。因子分析を使用している人たちにも意見のばらつきはあるだろうが、0.7以上くらいは求められるのではないだろうか。

クロンバッハのαず最も使用頻度の高い方法だが、もう少し良い指標である「ω係数」などもあるため、そちらの表記の方が望ましい。ただ、クロンバッハのαがまだ主流なので、ω係数とは何か?と質問がでる所(例えば学会など)では、両方の併記が望ましいだろう。

この記事はRでの基本的な因子分析の方法しか扱っていない。 残したお題は、次回研究会で扱うので、その際にまた記事を書くつもりである。

コマンドの複製

何度も同じような分析をするときには

統計処理を行うとき、クロス集計表や相関係数などの基礎分析を山のようにしなければならない時がある。

SPSSのようにマウスでポチポチしていると大変な手間*1コマンドだと、同じような分析を何度もする際に非常に楽だと言われている。

しかし、それでも、問番号を書き換えるのはめんどくさいし、ヒューマンエラーも発生する。

そういうときには、コマンドを複製していくのが合理的だと思う。 いくつか方法があるが、誰でもできるExcelを使った方法を紹介しようと思う。

サンプルコード

ここでは例示としてRのクロス集計表のコマンドを使ってみよう。

ct01<-table(d1$gender,d1$Q04_01)
ct01
res01<- chisq.test(ct01)
res01

性別とQ04が20問くらいあって手で打つのがめんどくさい、と仮定してコマンドを複製してみよう。

f:id:iDES:20190309233535p:plain

Exxelは"ct01"の右下を掴み、下方向へドラッグ&ドロップすると"ct02""ct03"と自動的に番号を振ってくれる。この性質を利用し、数字を書き換えなくてもExcelに自動でコマンドを複製させることができる。

区切りは「変化するところ」「変化しないところ」「変化するところ」と交互に入れていくだけである。

改行をするところには、<BR>タグを入れておく。 htmlで使う改行(break)の記号である。 最後は、 改行をするところには、<BR>タグを2回いれる。そうすると、前後を1行あけることができる。

エディタへコピー

エクセルで複製したコマンドをエディタへコピーする。 Windowsであればメモ帳でよい。

f:id:iDES:20190309233553p:plain

ここでする作業2つである。

  1. tabの置換
  2. html形式での保存

1. tabの置換

Excelからコピーすると妙な空白がある。 これはExcelがtab区切りという形式でデータがコピーされるためである。 このtab(空白)を取り除く必要がある。

まず、tabを範囲指定してコピーする。

f:id:iDES:20190309233623p:plain

そのあと、メニューから置換を選ぶ

f:id:iDES:20190309233641p:plain

検索する文字列に貼り付けでtabを入れる。

f:id:iDES:20190309233658p:plain

置換後の文字列には何も入れない。つまり何も入れないとtabの空白が詰められるのである。 最後に[すべて置換]を押す。 そうすると、以下のようになる。

f:id:iDES:20190309233729p:plain

空白がなくなぎゅっと埋まった感じになる。

2. html形式での保存

このファイルを[名前をつけて保存]する。

f:id:iDES:20190309233710p:plain

この際に、ファイル名を"〇〇.html"とする。文字コードUTF-8に変えておく。

html形式ファイルを開ける

保存したhtmlファイルをブラウザで開けると次のように表示される。

f:id:iDES:20190309233754p:plain

これをRかRStudioに張り付けるとコマンドとして使用できる。 SPSSシンタックスやstataなどにも使える。

*1:SPSSはクロス集計表は一気に出力できるので例外として