続・クロンバックのα
前回の記事で全ての折半法の平均がクロンバックのαであるということについて書いた。
nekomosyakushimo.hatenablog.com
今回は、内的整合性の意味をより理解するためにデータをいじって遊んでみる。
内的整合性とは乱暴に言えば、テストの中の項目がどれだけ同じ方向を向いているかを表している数値であるので、例えばテストの項目を逆転処理をすると信頼性係数は下がるはずだし、全部逆転処理すれば元の値と一致するはずである。
早速やってみる。
まず、逆転する項目を一つずつ増やしていくデータセットを作る。5件法なので6を引いて絶対値をとれば逆転される。
dat1 <- dat dat1[,2] <- abs(dat[,2] - 6) # 項目1を逆転したデータセット dat2 <- dat1 dat2[ ,3] <- abs(dat[,3] - 6) # 項目12を逆転したデータセット dat3 <- dat2 dat3[ ,4] <- abs(dat[,4] - 6) # 項目123を逆転したデータセット dat4 <- dat3 dat4[ ,5] <- abs(dat[,5] - 6) # 項目1234を逆転したデータセット
前回は計算式を直接書いたが、面倒なので信頼性係数を一発で出す関数を使う。ltmというパッケージに含まれる、cronbach.alpha()というのは信頼性係数を算出してくれる。(※データセットの1列目は氏名なので[,-1]で読み込まないようにしている)
cronbach.alpha(dat[,-1]) # オリジナルの信頼性係数 # alpha: 0.847 cronbach.alpha(dat1[,-1]) # 項目1だけ逆転 # alpha: 0.046 cronbach.alpha(dat2[,-1]) # 項目12を逆転 # alpha: -1.821 cronbach.alpha(dat3[,-1]) # 項目123を逆転 # alpha: 0.039 cronbach.alpha(dat4[,-1]) # 項目1234を逆転 # alpha: 0.847
項目を一つひっくり返しただけで大惨事である。まぁ項目が4つしかないわけだから言って見れば、全兵力の4分の1が一気に離反したようなもので、そりゃあ数値は下がるでしょう。項目の半分をひっくり返した場合だともはや訳のわからない数字になっている。しかし、全ての項目をひっくり返すと元の信頼性係数の値に戻る。
このことから、信頼性が妥当性を保証しないということの意味がよく分かる。というのは、オリジナルのデータセットと項目全てを逆転したデータセットでは、信頼性係数自体は一緒であるが、測定している概念は180度逆のものである。信頼性は何を計っているかについては何も教えてくれないのだ。
ちなみに、信頼性係数を算出する関数は他にもあり、psychパッケージに含まれるalpha()はより正確に情報を教えてくれる。例として、項目1だけ逆転したデータセットを読ませてみる。
library (psych) alpha(dat1[,-1]) # 項目1だけ逆転
結果を見ると、「逆転項目の処理忘れてない?」という警告が出たり、SPSSの出力と同じように項目が削除された場合にα係数が出力される(図中の赤枠)。項目1が削除されるということは、離反した兵士たちが全員処分されたということであるので、軍に秩序が戻り信頼性係数が再び回復することを示している。
クロンバックのαについて
友人からクロンバックのαについて質問を受けてあれこれ調べたことの記録。
クロンバックのαとは信頼性係数の一つで内的整合性を表すものだとされている。テキストなどには信頼性係数の推定には(1)再テスト法、(2)平行テスト法、(3)内的整合性などがあるとされている。再テスト法には練習効果があるとか、平行テスト法は2つの検査が同じものであるという保証がないとか、それらの欠点も合わせて紹介されることが多い。
内的整合性の一つに折半法というものがあり、これは一つの検査の項目を半分に分けてそれらの相関係数をもとに信頼性係数を求める方法だと説明されるが、これも折半の仕方によって値が変わってしまうなど、その欠点が合わせて紹介されることが多い。そして、その欠点をカバーできるものとして、全ての折半法の組み合わせでの信頼性係数を計算しその平均を求めたものがクロンバックのαであり、古典的テスト理論の枠組みではよく使われると紹介される。
さて、クロンバックのαの計算式を見ると、
のように書いてある。
妥当性と信頼性
この記事では、この式で求めた値が折半法の全ての組み合わせで求めた信頼性係数の平均に本当に一致するのか調べてみることとする。
サンプルとして扱うデータは、『外国語教育研究ハンドブック(松柏社)』の2章に乗っているデータで次のサイトに置いてあるのを使用した。
http://mizumot.com/handbook/wp-content/uploads/ch02motivation.csv
5件法の4つ質問項目からなる質問紙で15人から回答を得た仮想的なデータである。
まず、下準備として計算に必要になる折半した部分得点を計算しておく。
dat <- read.table(pipe("pbpaste"), header = T) goukei <- apply(dat[,2:5], 1, sum) # 合計得点 col12 <- dat[,2] + dat[,3] # 項目(12)の部分得点 col13 <- dat[,2] + dat[,4] # 項目(13)の部分得点 col14 <- dat[,2] + dat[,5] # 項目(14)の部分得点 col23 <- dat[,3] + dat[,4] # 項目(23)の部分得点 col24 <- dat[,3] + dat[,5] # 項目(24)の部分得点 col34 <- dat[,4] + dat[,5] # 項目(34)の部分得点
一つのテストに含まれる項目を折半したそれぞれの部分得点をとする。それらの相関係数をとすると、折半法による信頼性係数は次のように表せ、この式をSpearman-Brownの公式という(岡田, 2015)。※shはsplit-halfで折半の意味。
この式に基づいてそれぞれの折半の信頼性係数を計算し、その後平均を求める。項目数が4つでありその折半の全ての方法は通りであるので3つの信頼性係数を求めて、その平均を算出する。
rho_sh =numeric(3) soukan1 <- cor(col12, col34) #項目(12)(34)での折半による相関係数 rho_sh[1] <- (2 * soukan1) / ( 1 + soukan1) # [1] 0.8488912 soukan2 <- cor(col13, col24) #項目(13)(24)での折半による相関係数 rho_sh[2] <- (2 * soukan2) / ( 1 + soukan2) # [1] 0.8295949 soukan3 <- cor(col14, col23) #項目(14)(23)での折半による相関係数 rho_sh[3] <- (2 * soukan3) / ( 1 + soukan3) # [1] 0.8744027 mean(rho_sh) # [1]0.8509629
結果を見ると、確かに折半の方法によって信頼性係数は高くなったり低くなったりしていることが分かる。折半法の欠点として挙げられていた通りである。
次に、クロンバックのαの計算式で信頼性係数を求めてみる。
bunbo <- var(goukei) # 合計得点の分散を計算 bunshi <- sum(apply(dat[,2:5], 2, var)) # 項目得点の分散を合計 (4/3) * (1 - (bunshi/bunbo)) # [1] 0.8472642
あれ、合わないじゃないですか。
よくよく調べて見ると、Spearman-Brownによる折半法の公式で求めた信頼性係数の平均が、αと一致するのは部分得点の分散が等しい時のようである。分散が等しくない時にはSpearmanとBrownの公式を一般化したFlanaganとRulonによる次の公式を用いて計算した信頼性係数の平均がαと一致するらしい(岡田, 2015)。(※ここではテストの合計得点。)
この式に従って、全ての折半法による信頼性係数の平均を再度計算してみる。
new_rho_sh <- numeric(3) new_rho_sh[1] <- (4 * soukan1) * (sqrt(var(col12) * var(col34))) / var(goukei) new_rho_sh[2] <- (4 * soukan2) * (sqrt(var(col13) * var(col24))) / var(goukei) new_rho_sh[3] <- (4 * soukan3) * (sqrt(var(col14) * var(col23))) / var(goukei) mean(new_rho_sh) # [1] 0.8472642
結果を見れば分かる通り、無事にαの値と一致した。
ということで、統計のテキストとかだとざっとの説明で流されてしまう、「クロンバックのαが、全ての折半法による信頼性係数の平均である」ということの簡単な確認でした。
【参考】
岡田謙介(2015) 心理学と心理測定における信頼性についてーCronbachのα係数とは何なのか、何でないのかー 教育心理学年報, 54 , 71-83
Pythonの環境整理
色々な記事を参考にパッチワークのようにしていじっていたら、バージョン違いのPythonのどこに何が入っているのか訳が分からなくなったので整理することにした。その覚え書き。
そもそも、今のところ自分に必要なのは、実験をプログラミングするための2系のpython一つと、画像処理とかをやるための3系のpython一つなのでこの2つだけ使い分けができれば良いのである。
macにはデフォルトでPythonが入っているが、このPythonの環境をあれこれいじるのはあまり良くないようなので、デフォルトとは別に2系、3系を一つずつ導入ことにする。
OSはHigh Sierra。
まず、anacondaによって自分は混乱しているっぽくよく分からんので全部消した。次のサイトを参考にした。
で、次に2系、3系の最新を入れようと思いHomebrewを導入した。次のサイトを参考にした。
ここまでで、デフォルトとは違った2系、3系のpythonがインストールされた。ターミナル上で動かしたいときは、python2とpython3でそれぞれのpythonが動く。デフォルトのはそのままpythonで動く。
$ python Python 2.7.10 (default, Jul 15 2017, 17:16:57) [GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.31)] on darwin Type "help", "copyright", "credits" or "license" for more information. $ python2 Python 2.7.14 (default, Sep 25 2017, 09:54:19) [GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.37)] on darwin Type "help", "copyright", "credits" or "license" for more information. $ python3 Python 3.6.3 (default, Oct 4 2017, 06:09:38) [GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.37)] on darwin Type "help", "copyright", "credits" or "license" for more information.
新たに導入したPythonのパッケージ管理はpip2とpip3のコマンドで入れる。3の方に入れても、2の方では使えない。逆もまた然り。
pip3 install numpy
こんな感じで、3系に入れても2系ではエラーを吐き出す
$ python2 Python 2.7.14 (default, Sep 25 2017, 09:54:19) [GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.37)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import numpy Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: No module named numpy
とりあえずこれでやってみて不具合が出たらまた考えることにする。
Python版OpenCVによるpng画像と透過処理について
必要があって画像処理の技術に入門している。その覚書。
(出所:いらすとや)
このタヌキが今回の実験台である。かわいい。
opencvを使って画像を読み込む際はimreadを使う。
# coding:utf-8 import cv2 import numpy as np src = "test.png" img = cv2.imread(src, 0)
第1引数にファイル、第2引数には読み込みのオプションを指定する。0だとグレースケール、1だとカラー、-1だとアルファチャンネル等の追加のチャンネルを含んだまま読み込むらしい。読み込まれた画像はndarray、つまりN次元の配列データとして扱われる。
各次元の要素数を調べるためにnumpy.shapeのメソッドを使うと読み込みによって得られる配列の違いが分かる。
グレースケールだと2次元の配列として行列が得られる。カラーだと3次元の配列として色情報次元のデータもRGBで得られるが、追加チャンネルを含んだ読み込みだとこの次元の要素数が一つ増える。この場合では、不透明度を決定する4つ目の要素が得られる。(RGBA)
このような形で配列情報を得ると特定の画素値にアクセスすることも可能である。例えば、上から100ピクセル目、左から100ピクセル目の画素値へアクセスすると以下のようになる。
グレースケールでは、画素値は0を最小値、255を最大値とする値が一つ格納されている、カラーだとRGBの画素値が、追加チャンネル込みだと、そこにアルファチャンネルを追加した値が得られる。
ちなみにアルファチャンネルは0から255までの値をとりうるようで、0だと透明、255だと完全な不透明になる。ここの数字を変えると透明度合いをいじることができる。例えば、先ほどの画像を半透明にするには、すべての画素のアルファチャンネルに真ん中ぐらいの128の数字を代入すれば良い。
newimg = img3 newimg[:, :, 3] = 128
結果の画像は次の通り。
もともと透明だった背景の黒が透明じゃなくなり、透明でなかったタヌキが半透明化している。
今度は、タヌキの部分だけ半透明にしたい場合を考える。タヌキの部分の画素のインデックスを取得することができれば、今と同じ手順でアルファチャンネルをいじることができる。そこで、条件を満たす要素のインデックスを取得するnp.whereというものを使って、中身のインデックスを取得して、中身のアルファチャンネルのみ変更をする。
newimg2 = img3 hutomei = np.where(img3[:, :, 3] != 0) #アルファチャンネルが透明でないインデックスを取得 three = np.ones((len(hutomei[1])), dtype="int8") * 3 # 3だけからなる配列を作成 index = tuple((hutomei[0], hutomei[1], three)) #合わせたインデックスを作成 newimg2[index] = 128
なんか無駄が多いコードな気がするのだが、とりあえず試行錯誤の結果うまくいったのでよしとする。結果の出力画像は以下の通り。
背景は完全に透明なまま、中身のタヌキだけが無事に半透明化した。背景は画面上では白く見えているかもしれないが、画素値にアクセスするとさきほどまでの画像と同じように黒である。
今まで読んできた統計本・数学本
今年は統計ネタの記事が多くなってきたので、記事を描く際に参考にしている本をまとめて紹介します。数学本も一緒に紹介するのは、統計関連の本を読む際に、数学が全然分からなくて勉強しなおした関係です。ただ並べるだけだとあれなので主観的なオススメ度合い(★3つで評価)と一言コメントを書いておきます(本当はしっかりとレビューを書こうと思ったのですがたくさんあって面倒+全部読みきっていなかったり、理解が半端だったりするのもあるので)。本の難易度は、基本的に後ろにいくほど難しいです。
統計本関係
- 作者: 佐藤信
- 出版社/メーカー: 講談社
- 発売日: 1968/05/25
- メディア: 新書
- 購入: 33人 クリック: 209回
- この商品を含むブログ (8件) を見る
- 作者: 小島寛之
- 出版社/メーカー: ダイヤモンド社
- 発売日: 2006/09/28
- メディア: 単行本(ソフトカバー)
- 購入: 215人 クリック: 3,105回
- この商品を含むブログ (115件) を見る
- 作者: 山田剛史,杉澤武俊,村井潤一郎
- 出版社/メーカー: オーム社
- 発売日: 2008/01/25
- メディア: 単行本
- 購入: 64人 クリック: 782回
- この商品を含むブログ (68件) を見る
- 作者: 南風原朝和
- 出版社/メーカー: 有斐閣
- 発売日: 2002/06/01
- メディア: 単行本
- 購入: 9人 クリック: 89回
- この商品を含むブログ (26件) を見る
- 作者: 南風原朝和,杉澤武俊,平井洋子
- 出版社/メーカー: 有斐閣
- 発売日: 2009/09/01
- メディア: 単行本
- 購入: 2人 クリック: 61回
- この商品を含むブログ (8件) を見る
- 作者: 宮川公男
- 出版社/メーカー: 有斐閣
- 発売日: 2015/03/30
- メディア: 単行本
- この商品を含むブログを見る
- 作者: 和達三樹,十河清
- 出版社/メーカー: 岩波書店
- 発売日: 1993/02/22
- メディア: 単行本
- 購入: 1人 クリック: 38回
- この商品を含むブログ (5件) を見る
- 作者: 東京大学教養学部統計学教室
- 出版社/メーカー: 東京大学出版会
- 発売日: 1991/07/09
- メディア: 単行本
- 購入: 158人 クリック: 3,604回
- この商品を含むブログ (83件) を見る
続・心理統計学の基礎--統合的理解を広げ深める (有斐閣アルマ)
- 作者: 南風原朝和
- 出版社/メーカー: 有斐閣
- 発売日: 2014/12/13
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (4件) を見る
- 作者: 永田靖,棟近雅彦
- 出版社/メーカー: サイエンス社
- 発売日: 2001/04
- メディア: 単行本
- 購入: 2人 クリック: 9回
- この商品を含むブログ (1件) を見る
- 作者: 森敏昭,吉田寿夫
- 出版社/メーカー: 北大路書房
- 発売日: 1990/06/01
- メディア: 単行本
- 購入: 3人 クリック: 6回
- この商品を含むブログ (9件) を見る
- 作者: 金明哲
- 出版社/メーカー: 森北出版
- 発売日: 2017/03/25
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
数学本関係
- 作者: 遠山啓
- 出版社/メーカー: 岩波書店
- 発売日: 1959/11/17
- メディア: 新書
- 購入: 34人 クリック: 234回
- この商品を含むブログ (61件) を見る
- 作者: 遠山啓
- 出版社/メーカー: 岩波書店
- 発売日: 1960/10/20
- メディア: 新書
- 購入: 26人 クリック: 49回
- この商品を含むブログ (43件) を見る
- 作者: 永野裕之,岡田謙介,きたみりゅうじ
- 出版社/メーカー: ダイヤモンド社
- 発売日: 2015/09/11
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
- 作者: 高橋一雄
- 出版社/メーカー: 日本実業出版社
- 発売日: 2009/07/16
- メディア: 単行本
- 購入: 11人 クリック: 226回
- この商品を含むブログ (32件) を見る
- 作者: 志賀浩二
- 出版社/メーカー: 朝倉書店
- 発売日: 1988/03/01
- メディア: 単行本
- クリック: 3回
- この商品を含むブログ (8件) を見る
- 作者: 志賀浩二
- 出版社/メーカー: 朝倉書店
- 発売日: 1988/03/01
- メディア: 単行本
- 購入: 1人 クリック: 2回
- この商品を含むブログ (5件) を見る
- 作者: 小島寛之
- 出版社/メーカー: 講談社
- 発売日: 2001/04/23
- メディア: 単行本(ソフトカバー)
- 購入: 16人 クリック: 242回
- この商品を含むブログ (17件) を見る
- 作者: 小島寛之
- 出版社/メーカー: 講談社
- 発売日: 2002/05/10
- メディア: 単行本(ソフトカバー)
- 購入: 19人 クリック: 169回
- この商品を含むブログ (18件) を見る
- 作者: 佐野理
- 出版社/メーカー: 岩波書店
- 発売日: 1993/01/22
- メディア: 単行本
- 購入: 2人 クリック: 4回
- この商品を含むブログ (4件) を見る
バイク用ブーツカバーを買ってみた
ここのところ雨が多かった。わたしは平日はほぼ毎日バイクに乗る必要がある。となると防水対策をしないとQOLの低下は免れない。
ワークマンで昔買ったレインウェアはまだ防水性能を保っている。しかし、防水だったはずの靴に関してはもはやその機能が失われているようで、雨の日にバイクに乗るたびに中まで完全に浸水する。
毎日続く雨にかなりやられたので、これはいよいよ本格的に防水対策をしなければと思いブーツカバーたるものを導入してみた。
リード工業(LEAD) Landspout ハイカットタイプ 雨天用 シューズカバー ハーフソール ブラック RW-051A
- 出版社/メーカー: リード工業
- メディア: Automotive
- この商品を含むブログを見る
とりあえず、Amazonで安くて手頃なものにしたが、これはだいぶ快適である。装着もそこまで手間でないしハーフソールだから滑ったりもしない。
ただ、レインウェアの裾が短いとハイカットがウェアまで届かずに、すねのあたりから靴下を伝って浸水してくる。裾が長めのウェアと合わせて使うか、裾が短いウェアを使っている人はスネまで覆えるより高さのあるブーツカバーを導入すると良いと思う。
ともあれ、雨の日のバイクがだいぶ快適なったので値段の割には良い買い物だった気がする。あとは、この撥水と防水の機能がいつまで続くかが気になるところである。
川上康則編『通常学級でできる発達障害のある子の学習支援』
通常学級でできる発達障害のある子の学習支援 (特別支援教育がわかる本)
- 作者: 内山登紀夫,川上康則
- 出版社/メーカー: ミネルヴァ書房
- 発売日: 2015/04/10
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
久々に臨床的なものの紹介でも。オールカラーでイラストたっぷりで薄い。モノクロでイラストなしでいいから半分ぐらいの値段にならなかったのだろうか、というのが初めに読んだ時の感想(笑)
内容としてはほぼタイトル通りで、小学校の通常学級内で学習につまづきがある児童・生徒への支援の事例が14例紹介されている。どの事例に対しても支援の方針として、行動の背景にある要因に注目すること、クラスワイドで学級への支援や授業の組み立てを考えることを基本としている。
各事例は、こどもの典型的なつまずきのケースが紹介され、まずその場で出来る対応および子供のふるまいをみとる視点が紹介されている。その後、氷山モデルを用いてつまずきの背景となる要因が説明されたあと、クラス全体にできる支援、個に応じてできる支援、長期的な視野での発達的(あるいは治療的)支援等が紹介されている。事例および支援は見開き3ページで収まるようになっており、コンパクトにまとまっている。
通常級での学習支援をテーマとした本なので、個を詳しく見るよりも、クラスの雰囲気づくりなどの学級経営的な側面への対応が書かれており、特別支援教育コーディネーターや指導主事、主幹教諭など学級へのコンサルテーションを行う立場の人が読むと得るものがあると思う。
本書で紹介される事例は以下の通り。
- 授業への集中が続かず違うことをする
- 不注意なまちがいが多い
- 音読がうまくできない
- 説明文を読み理解するのがむずかしい
- 中心人物の気持ちの変化の読み取りが苦手
- 文字を覚えられない、形がととのわない
- 感じが書けない、まちがいが多い
- 作文が苦手で書くのをいやがる
- 繰り上がり・繰り下がりの計算ができない
- 割り算ができない
- 文章題になるとわからない
- 図形の問題がわからない
- 不器用なため学習が進みにくい
- 体育の時間が嫌い
気になったことだが、編者の名前があるのに著者の情報が無いこういう本は、出版社の人が何かを参考に資料をまとめて、それを編者がチェックしてゴーサインを出すみたいな作られ方をしているのだろうか。