700 likes | 763 Views
「社会情報学部 へ の 満足度 調査」 の 分析. 寺尾 敦 青山学院大学社会情報学部 atsushi [at] si.aoyama.ac.jp Twitter: @ aterao. 問題意識. 2013 年度新入生は,青山学院大学社会情報学部での生活に満足しているのか? 社会情報 学部での満足感は,どのような要素から構成されているのか? 要素間の関係 は? 社会情報学部の総合的な満足は,これらの要素から説明できるか?. 分析を始める前に.
E N D
「社会情報学部への満足度調査」の分析 寺尾 敦 青山学院大学社会情報学部 atsushi [at] si.aoyama.ac.jp Twitter: @aterao
問題意識 • 2013年度新入生は,青山学院大学社会情報学部での生活に満足しているのか? • 社会情報学部での満足感は,どのような要素から構成されているのか? • 要素間の関係は? • 社会情報学部の総合的な満足は,これらの要素から説明できるか?
分析を始める前に • データの CSV ファイル(satisfy.csv)と,大津起夫先生自作の関数 twowayhist.Rのファイルを,「ドキュメント」の中に入れる. • ドキュメントの中に,授業用のフォルダを作って,その中に入れてもよい. • CSV ファイルの1行目に変数名が示されている • 各行は1人のデータ • twowayhist.Rは開かない(ダブルクリックしても中は見えない). • CSV から xlsxに形式を変更しないように!
R の起動 • [スタートボタン] から,[すべてのプログラム] を選択する. [スタート] ボタン
R 2.15.1 を選択する(2.15.1 は R のバージョンです)
作業ディレクトリの変更 • R は,どこか特定のフォルダで仕事をしている. • working directory と呼ぶ • 目の前に見えているのは,そのフォルダにあるファイルのみ. • そこで,仕事場所を変更する.
[ファイル] メニューから [ディレクトリの変更] を選択する.
Z ドライブの下にある,[マイ ドキュメント] を選択して,[OK] ボタンを押す. • データの CSV ファイルを他の場所(たとえば,授業用のフォルダ)に保存した場合は,その場所(フォルダ)を選択する.
getwd() と入力して [Enter] キーを押したとき,移動先のディレクトリが表示されれば OK.「マイ ドキュメント」の場合, "Z:/My Documents" と表示される.
twowayhist 関数を使う準備 • [ファイル] メニューから,[スクリプトを開く] を選択する.
twowayhist.R マイ ドキュメント,あるいは,授業用フォルダ(上図でのXP)に保存した,twowayhist.Rというファイルを選択して [開く] ボタンを押す.
twowayhist.R(twowayhistという関数を定義したスクリプト)が開かれる.twowayhist.R(twowayhistという関数を定義したスクリプト)が開かれる.
スクリプトを開いているウィンドウがアクティブになっている状態で,[編集] メニューから [全て実行] を選択する. R Console のウィンドウでスクリプトが実行される.エラーがなく終了すれば,twowayhist関数が使用可能になっている. スクリプトを開いているウィンドウを閉じる.
データの読み込みと確認 >data <- read.csv("satisfy.csv") > head(data) データの先頭6行が表示される > tail(data) データの末尾6行が表示される > attach(data) データを読み込み,data という名前の箱を用意して,しまっておく. おまじない
データ分析 • データをよく見る • まずは各変数ごと.次に2変数の組み合わせ. • データを図示する • 数値でデータを要約・記述する • 問題意識にそって,必要な分析を行う
データの図示(1変数・ヒストグラム) > hist(sleep) ヒストグラムを描く. ( )の中は,関数に与える引数(ひきすう)である. 上の入力では,sleep という変数(睡眠時間のデータが入っている)のヒストグラムを描く. 引数を変えて,各変数についてのヒストグラムを描く.
グラフの x軸範囲,y軸範囲,タイトルなどを調整するには,オプションを指定する. データを分類する階級の指定. 2.5 から 10.5 までを1きざみ hist(sleep, breaks=seq(2.5, 8.5, by=1), xlim=c(0,10),ylim=c(0,25), xlab="睡眠時間(hour)", ylab="度数", main="1日の睡眠時間") x 軸の範囲を 0 から 10にする. xlabは x 軸のラベル.mainは図のタイトル 改行すると自動的に +が表示される
[ファイル] [新しいスクリプト] でエディタを開き,そこにスクリプトを書いて実行することもできる. 実行したい部分をマウスで選択する
データの図示(1変数・箱ひげ図) > boxplot(data[,c(11:26)]) 箱ひげ図を描く. 各変数の分布が大まかに把握できる. data[,c(11:26)] は,data の11列目から26列目の変数(社会情報学部への満足感を測定するために,みんなで考えた項目)を意味する.必要に応じて変更する. コンマを忘れずに.c は小文字.
箱ひげ図はデータの分布を図示している. それぞれの変数において,箱の中には全体の 1/2 のデータが入っている. 箱の中にひかれている線は中央値(データを大きさの順に並べたときの中央の値)の位置を表す. 直観的には,「ひげ」は上位1/4 および下位 1/4 のデータが入っている範囲を表す. はずれ値(他とはかなり異なっている値)は,○で示されている.
データの図示(2変数・散布図) • 2変数間の関係を把握するためには,散布図を描く.散布図を描くために R に用意されている関数は plot である. • 今回のデータでは,plot 関数を使うと少し困ったことが生じる.そこで,twowayhist関数を使って散布図を描く.
> plot(wday_work, sleep) plot 関数で描いた散布図. sleep は1日の睡眠時間, wday_workは,平日(水曜日以外)1日平均での,授業に関連した学習時間. 2つの変数の値が同じ人については,○は重ねて描画されている.これでは2変数の関係がつかみづらいので,twowayhist関数を用いる.
> twowayhist(wday_work, sleep) データポイントが重なったところは,円を大きくして描画している.
2変数すべての組み合わせについて散布図を描いてみることが望ましい.2変数すべての組み合わせについて散布図を描いてみることが望ましい. • 変数が多くてそれが大変なときには,いくつかの興味ある組み合わせについて描く. • plot 関数は,引数(関数への入力)にデータセット全体,あるいはその一部を指定することが可能. • 指定された変数の組み合わせすべてについて散布図が描かれる.
数値によるデータの記述(1変数) • データを図示して,分布の確認を行ったら,データを数値で要約する. • 平均値 • 中央値:測定値を大きさの順に並べて中央の値. • 第1四分位数:測定値を大きさの順に並べて,下から ¼ に位置する値. • 第3四分位数:測定値を大きさの順に並べて,上から ¼ に位置する値. • 最小値,最大値
> summary(sleep) Min. 1st Qu. Median Mean 3rd Qu. Max. 3.000 6.000 6.000 6.167 7.000 8.000 連続型の変数(ある範囲の実数すべてを取りうる変数)の変数名を summary 関数への入力として指定すると,最小値,第1四分位数,中央値,平均値,第3四分位数,最大値が返される. 最小値,第1四分位数,中央値,第3四分位数,最大値の5つの数値でデータを要約することを,5数要約(5-number summary)と呼ぶ.
第3四分位数から第1四分位数を引き算して2で割った値は,四分位偏差(quartile deviation)と呼ばれ,データの散らばり具合を表す統計量となる. • データの散らばり具合を表す統計量としては,分散(variance)あるいは標準偏差(standard deviation)がよく用いられる.標準偏差は,分散の正の平方根である.
睡眠時間の分散の計算 • 睡眠時間の標準偏差の計算 > var(sleep) [1] 1.084906 > sd(sleep) [1] 1.041588 データが正規分布に従っていると見なせる場合, 平均±(標準偏差×2) の範囲に,おおよそすべてのデータが収まる.
数値によるデータの記述(2変数) • 2変数の間の関係は散布図で把握した. • 2変数間の関係を数値で記述するには,相関係数を計算する. • 散布図ですべての点が右上がりの直線上に乗れば,相関係数は+1. • すべての点が右下がり直線上に乗れば,相関係数は -1. • 2つの変数に直線的な関係がまったくないときには,相関係数は 0.
> cor(wday_work, sleep) [1] -0.03569063 睡眠時間と,学習時間(水曜日以外,授業関連)の相関. > cor(data) とすると,data に格納されている,すべての変数間の相関係数の一覧(相関行列)が得られる. > cor(data[ ,c(2:10)]) というように,一部の列(ここでは1列目から9列目の,時間データ)を指定することも可能.
> cor(data[,c(2:10)]) sleep work club wday_workwday_self sleep 1.000000000 -0.24519075 0.18181070 -0.03569063 0.06226942 work -0.245190754 1.00000000 -0.26352796 0.01799971 0.24325893 club 0.181810703 -0.26352796 1.00000000 -0.05221075 -0.16846853 wday_work -0.035690634 0.01799971 -0.05221075 1.00000000 0.08015232 wday_self 0.062269421 0.24325893 -0.16846853 0.08015232 1.00000000 wed_work -0.007550614 -0.15958835 -0.29307055 0.34623546 -0.01841939 wed_self -0.018530802 0.30800199 -0.13540597 0.11981612 0.84723058 end_work 0.038438066 -0.22880508 -0.25139595 0.52207280 0.15547334 end_self 0.119271482 0.24816133 -0.12985260 0.12019800 0.83021016 wed_workwed_selfend_workend_self sleep -0.007550614 -0.01853080 0.03843807 0.11927148 work -0.159588354 0.30800199 -0.22880508 0.24816133 club -0.293070546 -0.13540597 -0.25139595 -0.12985260 wday_work 0.346235465 0.11981612 0.52207280 0.12019800 wday_self -0.018419389 0.84723058 0.15547334 0.83021016 wed_work 1.000000000 -0.01743157 0.81870215 -0.01240399 wed_self -0.017431567 1.00000000 0.13145109 0.94801232 end_work 0.818702147 0.13145109 1.00000000 0.19278328 end_self -0.012403995 0.94801232 0.19278328 1.00000000
問題意識1 • 2012年度新入生は,青山学院大学社会情報学部での生活に満足しているのか? • 社会情報学部での満足感は,どのような要素から構成されているのか? • 要素間の関係は? • 社会情報学部の総合的な満足は,これらの要素から説明できるか?
総合的満足度を測定することを意図して用意した,2つの変数を検討する.総合的満足度を測定することを意図して用意した,2つの変数を検討する. • 「社会情報学部に入学してよかったと思う」(変数名:total1) • 「後輩に青山学院大学社会情報学部の受験を勧めたい」(変数名:total2)
社会情報学部への総合的満足度を測定するための2項目のうち,「社会情報学部に入学してよかったと思う」という項目への回答を分析してみる.社会情報学部への総合的満足度を測定するための2項目のうち,「社会情報学部に入学してよかったと思う」という項目への回答を分析してみる. • 最初に,データをヒストグラムで図示する.以下のようにスクリプトを書いて実行する. hist(total1, breaks=seq(0.5, 6.5, by=1.0), xlab="満足度", ylim=c(0,30), main="社会情報学部への総合的満足度(1)")
項目:社会情報学部に入学してよかったと思う項目:社会情報学部に入学してよかったと思う 1:まったくそう思わない 2:そう思わない 3:あまりそう思わない 4:ややそう思う 5:そう思う 6:非常にそう思う
データを数値で要約・記述する. > summary(total1) Min. 1st Qu. Median Mean 3rd Qu. Max. 1.000 4.000 4.000 4.093 5.000 6.000 > var(total1) [1] 1.104472 > sd(total1) [1] 1.050939
分析からわかること • 分布は左右対称から少し右側に頂上がずれた形をしている. • 6段階評定の中央値が4.0,平均値が 4.1,標準偏差が 1.1 であった. • 個人差はあるが,全体としては,社会情報学部に入学したことに満足感を抱いている人が多い.
社会情報学部への総合的満足度を測定するための2項目のうち,「後輩に青山学院大学社会情報学部への入学を勧めたい」という項目への回答も,分析してみよ.社会情報学部への総合的満足度を測定するための2項目のうち,「後輩に青山学院大学社会情報学部への入学を勧めたい」という項目への回答も,分析してみよ. • これら2項目を比較してみよ.
総合的満足度を測定する2変数の相関を検討してみよう.総合的満足度を測定する2変数の相関を検討してみよう. • まずは,散布図を描く • 次に,相関係数を計算する.相関係数は直線的関係の強さを表す.
> cor(total1,total2) [1] 0.6341197 2変数の相関係数は正の値で,かなり高い.つまり, 第1の項目で評定値の高い人ほど,第2の項目でも評定値が高い傾向が認められる.
問題意識2 • 2012年度新入生は,青山学院大学社会情報学部での生活に満足しているのか? • 社会情報学部での満足感は,どのような要素から構成されているのか? • 要素間の関係は? • 社会情報学部の総合的な満足は,これらの要素から説明できるか?
因子分析とは • いくつかの変数が相互に(ある程度)高い相関をもつとき,それらの変数は何か共通のものを測定していると考えられる. • それぞれの変数でのスコアは,この共通部分と,それぞれの変数に独自の部分からできていると考えられる. • 共通因子(common factor):共通部分 • 独自因子(unique factor):独自の部分
因子分析の目的 • 共通因子を用いて変数間の相関関係を説明する. • 共通因子との関係によって,各変数の性質をコンパクトな形で記述する. • 変数や個体を分類する.
国語独自 国語 文系能力 社会独自 社会 英語独自 英語 理系能力 数学独自 数学 理科 理科独自
満足感調査の因子分析 • 社会情報学部の満足感調査での項目(総合的な満足度の項目を除く)の背後に,どのような因子があるかを探索する. • これらの因子は,社会情報学部の満足感を構成する要素であると考えられる.
いくつの因子があるのかは不明のため,因子数も探索的に決める.いくつの因子があるのかは不明のため,因子数も探索的に決める. • 「授業への満足」のように,あらかじめ3つあるいは4つの因子を想定していたが,因子分析を行ってみないと,この想定が妥当であったかどうかはわからない. • 注意:この実習では60人程度のデータで因子分析を行うが,因子分析を行うためのデータとしてはやや小さい.