最終レポート

初版公開日

2022年8月1日

最終更新日

2026年8月2日

キーワード

R, 多変量解析, 因子分析, 構造方程式モデリング, 項目反応理論, マルチレベルモデル

課題1

「この講義を受けようか迷っている京都大学の学部生」を想定して,本講義で扱った因子分析・構造方程式モデリング・項目反応理論・マルチレベルモデルのいずれかについて,その概要をA4の紙1枚にて説明してください。

  • フォーマットは自由です。文章で説明しても良いですし,イラストや図を巧みに使いこなしてもOKです。余白なども何も指定しませんが,とにかくA4の紙1枚におさめてください。
  • 文字や図のサイズの目安としては,印刷してちゃんと読めるくらいでお願いします。
  • 提出するファイルは必ずPDFにしてください。
    • 提出フォーマットがPDFではない場合に,OS・フォントの違い等で(私の手元の環境において)表示が崩れて1ページに収まらない状態で表示されてしまった場合は,残念ながら減点とします。

課題2

本講義で扱った因子分析・構造方程式モデリング・項目反応理論・マルチレベルモデルのいずれか(少なくとも1つ)のうち,課題1で取り上げなかった手法を用いた分析を行い、レポートを作成してください。 なお分析に使用するデータは

  • こちらで用意したデータ
  • 自分で集めたデータ
  • 自分でインターネットから探してきたデータ

のどれでも構いません。

やること

以下の内容について、結果のレポートを作成し、分析に使用したRコードと合わせて提出してください。

  • データのクリーニング(すでにある程度スクリーニングされているかもしれませんが一応ざっと確認して,「確認した」という事実を示してください)
  • 項目分析(異常な項目がないか確認)
  • 分析
    • 探索的因子分析の場合
      • 因子数もデータから決定してください(Rで実行したコードを見せてください)
      • (既存の論文のデータを利用する場合)因子構造は元論文と合わせる必要はありません(前処理などでデータが変わると同じ因子構造にならない可能性もあるので)
      • (既存の論文のデータを利用する場合)因子の名前も元論文と合わせる必要はありません(前処理などで…)
      • 尺度得点として和得点を用いるならば、単純構造を仮定したCFAに進んでも良いと思います
      • 最終的に得られた個人特性値と別の変数の関係について分析してみるのもありですね。
    • 構造方程式モデリングの場合
      • (既存の論文のデータを利用する場合)モデルは元論文と合わせる必要はありません
      • 変数を見て「こんなモデルありじゃないか」と思ったものを作成して、パス図をレポートに含めておいてください
      • 想定しているパス図のモデルがRで正しく実行できたかをチェックします。
      • 適合度をチェックしたりモデルを改善したり…
      • 余裕があれば多母集団同時分析もやってみてください
    • 項目反応理論の場合
      • モデルの設定はおまかせします。もともと多値の項目を適当に二値にしても良いですし、多次元モデルにしても構いません。
      • 項目パラメータを推定し、適合度などをチェックして項目・回答者を必要に応じて除外して再分析したりして…
      • 最終的に得られた項目パラメータをもとに「どの項目が難しい」などを論じてみたり?
      • テスト情報量をもとに推定精度に関して論じてみたり?
      • 最終的に得られた個人特性値と別の変数の関係について分析してみるのもありですね。
    • マルチレベルモデルの場合
      • どういう形であれ,データの階層性を考慮したモデルであれば,回帰分析でもSEMでもOKです。
      • モデルの設定はおまかせします。
      • できるならベイズ階層モデルでも大丈夫です。

提出方法

LMSに提出フォームを作成します。そちらから提出してください。

締め切り

8月19日(水)23:59

  • 成績評価締め切りが8月21日なので,ギリギリまで提出できるようにしておきます。
    • 履修登録者が多くないもので……
  • 締め切り後の提出はいかなる理由であっても認められません。
  • 提出されたものは,とりあえず必要なものが揃っているかだけ確認して何かしらの方法で連絡します。
    • 締め切り前3-5日くらいは,なるべく1日1回は確認するようにします。
    • 提出したのに数日経っても連絡が来ない場合は締め切り前に対応できるだけの余裕を持ってお知らせください。
  • システムトラブル等が疑われる場合はメールなどの代替手段での提出を指示しますが,いずれにしても必ず締め切り前に提出されなかった場合は認められません。
  • したがって「締め切り直前に提出した」ものの「システムトラブルによって提出に失敗していた」ことが「締め切り後に判明した」ような場合は,システムトラブルが発生したという証拠を提出しない限り未提出扱いといたします。

提出するもの

  • 分析過程・結果のレポート(論文みたいな流れで書いてもらえればOK)
    • すでに別の授業や研究会や論文で分析をしたことがある場合には、引用を明記した上でその時の文書をそのまま貼り付けて提出しても構いません。
    • ただし分析はRで実行してください(結果の確認ができないので)
    • 当時の分析内容に不足があったと感じた場合には再分析しても構いません。
    • 仮説の根拠などについて,引用文献でガチガチに固めるまではしなくても大丈夫です(あくまでも「分析法」の講義なので)。
  • 分析に使用したRコード
    • 出力まで提出するのは大変なので、コードだけで構いません。
    • 提出してもらったRコードをこちらで回しながら、出力とレポートの内容に齟齬が無いかをチェックします。
    • 授業で使っていない関数・パッケージの使用はもちろんOKです。むしろ私が知らない便利パッケージ・関数を教えてもらえると喜びます。
    • ※(わかる人は)RmarkdownやQuartoでコードとレポートを(講義資料のように)まとめて一つのファイルにして提出しても構いません。
  • 分析に使用したデータ
    • 個人情報などがある場合は事前にその部分を加工した状態のデータにしておいてください。
    • 自分で集めたデータを使用する場合、送っていただいたデータはレポートの評価終了後責任を持って削除します
警告生成AIの利用について

分析用のRコードを生成AIに作成してもらうことは許容しますが,以下の点に注意してください。

  • この講義においては,生成AIの出力をそのまま提出することも許容します。
    • ただし,必ず生成AIを使用した旨(どのように・どの程度使用したか)を示してください。
    • 生成AIの出力をそのまま提出するというのは本当は権利的にもあまりよくないことが多いと思うので,あくまでも(レポートの内容を公開する予定がまったくない)この講義においてのみのルールであることにご注意ください。
    • 特にほかの講義において使用してよいかは必ず担当の先生に確認してください。
  • もしも良い出力が得られた場合には,ぜひプロンプトを教えてください。
  • 生成AIの利用それ自体による成績の減点はありません。ただし,レポートの内容が正しくない場合には当然減点なので,生成AIの出力の正しさは最終的には自分で確認してください。

データ

こちらで3種類のデータを用意しました。 一応それぞれの分析手法に適していると思われるものを探しましたが、自分の好みに合わせて分析手法は選んでください。 (例:因子分析コースのデータに対してIRTを適用してもOKです。)

因子分析コース

元論文

Firstborn Personality Scaleという尺度。

内容

出生順(初子か否か)によって異なる(とされている)性格特性を尋ねる項目を集めることで、回答者が初子かどうかを判断できる尺度(らしい)。

変数の説明

※元データから一部の項目を除外しています。

変数名 説明
Q1-26 尺度項目(5件法、逆転項目に注意)
age 年齢
engnat 英語ネイティブか(1がネイティブ、2が非ネイティブ)
gender 性別(1が男性、2が女性、3がその他)
birthpos 自分が何番目の子どもか
birthn 自分の親には何人の子どもがいたか
country 国籍(どの国からアクセスしたか)
introelapse テストの説明画面の滞在時間(秒)
testelapse テスト全体にかかった時間(秒)
surveyelapse テスト後のデモグラフィック項目(age, gender, engnat)の回答にかかった時間(秒)

回答者はbirthn人のうちbirthpos番目に生まれた子どもだということです。 とりあえずbirthposが1ならば初子だという判断で良いのでしょう。

データ本体はEFA_data.csvというやつです。 詳細な尺度および項目の説明はこのページにあります。またEFA_codebook.txtにものっています。

補足事項

  • データが結構大きいので、マシンスペック的に分析ができない場合にはsample()関数などを使ってデータを間引きするのもありです。
    • 間引きした場合には、「間引き後のデータ」を提出してください。

構造方程式モデリングコース

元論文

Marlier, M., Van Dyck, D., Cardon, G., De Bourdeaudhuij, I., Babiak, K., & Willem, A. (2015). Interrelation of sport participation, physical activity, social capital and mental health in disadvantaged communities: A SEM-analysis. PLOS ONE, 10(10), e0140196. https://doi.org/10.1371/journal.pone.0140196

内容

貧困地域の住民について、スポーツ・身体活動とソーシャル・キャピタルがメンタルヘルスに及ぼす影響を調べた。

変数の説明

変数名 説明
Commu コミュニティ
Sex 性別(0が男性、1が女性)
Age 全体平均で中心化された年齢
SES 学歴(0は大卒、1は高卒以下)
Civ_St 婚姻状況(0は既婚/パートナーあり、1は未婚)
Own_Rent 家賃収入の有無?(tenancy; 0はあり、1はなし)
Ethn 親の代からベルギー生まれか(0はYES, 1はNO)
Sport (Flemish Physical Activity Questionnaire; 週当たり時間)
PA 週当たり量(MET-minutes per week; 活動負荷×活動時間)
MH1-12 メンタルヘルス尺度(GHQ; 2件法12項目)
GSC1-3 ソーシャル・キャピタル(social capital community benchmark survey; 11件法3項目)
CSC1-5 コミュニティのソーシャル・キャピタル(5件法5項目)

データ本体はSEM_data.csvというやつです。 各尺度の項目の内容は元論文(特にFig. 2)に載っています。

項目反応理論コース

元データ

Multifactor General Knowledge Testというテストみたいなもの(論文はない?)。

内容

  • 全32問からなる、様々なジャンルの知識を問うテスト。
  • 各設問には10個の選択肢があり、そのうち5つが正答選択肢であることは知らされている。
  • 出題順はランダム(選択肢の順番までランダムかは不明)。

変数の説明

  • 元データから一部の項目を除外しています。
  • 変数名のXには数字が入ります。例えば「項目1の得点」であれば,変数名はQ1Sです。
変数名 説明
QXS 得点(正答選択肢を選んだ数から誤答選択肢を選んだ数を引いたもの。0-5点)
QXA どの選択肢を選んだか。例えばA0A2A1となっている場合、A0, A2, A1の3つの選択肢を選んだことを意味する。
QXE その問題の解答にかかった時間(ミリ秒)
QXI その問題がその回答者に何番目に出題されたか
age 年齢
gender 性別(1が男性、2が女性、3がその他)
engnat 英語ネイティブか(1がネイティブ、2が非ネイティブ)
country 国籍(どの国からアクセスしたか)
introelapse テストの説明画面の滞在時間(秒)
testelapse テスト全体にかかった時間(秒)
surveyelapse テスト後のデモグラフィック項目(age, gender, engnat)の回答にかかった時間(秒)
screenw テスト実施時の画面(ブラウザ?)の横幅
screenh テスト実施時の画面(ブラウザ?)の縦幅

データ本体はIRT_data.csvというやつです。 また各設問の内容及び選択肢はIRT_codebook.txtにのっています。

補足事項

  • データが結構大きいので、マシンスペック的に分析ができない場合にはsample()関数などを使ってデータを間引きするのもありです。
    • 間引きした場合には、「間引き後のデータ」を提出してください。
  • 元のテストは0-5点で採点されていますが、どのように扱うかは自由です。例えば選択肢ごとに分解して「10項目のテストが32個ある」という見方をしても良いです。
    • ヒント:「選ぶと減点になる選択肢」は逆転項目として扱うか、識別力が負の項目として扱うかのどちらかだと思います。後者の方法を実現するためのモデル記法は?mirt.modelを参照してください。

マルチレベルモデルコース

講義資料に記載しておいた方法で,PISAデータをダウンロードして何かしら二次分析してみるのが良いかもしれません。 ちょっとクセのあるデータですが,大規模調査なだけあってデータサイズも変数の数も多いのでかなりいろいろなことができると思います。 (特に教育社会学などを専門とするならいつか必要となるスキルかも?)

あるいはe-statのデータも,都道府県>市区町村のように階層性のあるデータがいろいろあると思います。 というか大抵のデータには何らかの階層性があるので,その階層性を考慮したモデルを作ることができればOKです。