猫も杓子も構造化

発達障害、特別支援などについて書いています。最近は心理学関係の内容が多めです。

服部 雅史ほか『基礎から学ぶ認知心理学』

基礎から学ぶ認知心理学 -- 人間の認識の不思議 (有斐閣ストゥディア)

基礎から学ぶ認知心理学 -- 人間の認識の不思議 (有斐閣ストゥディア)

認知心理学を浅く広く入門したいと思い読んだ。

著者らがはしがきで書くように、認知心理学のトピックとしての面白さを紹介するように書かれた入門書で、各章の分量も適度なため楽しく読むことができた。また各章に、より詳しく学びたい人へ向けた文献紹介がなされており、入門書としての配慮も良い。

値段も手頃ですし、認知心理学への軽い入門をしたい人はぜひ手に取ってみると良いと思う。

多変量正規分布の累積密度とか

以前の記事で多変量の正規分布に従う乱数を発生させるのにMASSというパッケージを紹介した。
任意の母相関を持つ多変量の生成 - 猫も杓子も構造化

多変量の正規分布を扱えるパッケージは他にもあって、mvtnormというパッケージがある。こっちのパッケージのrmvnormという関数でも乱数を発生できる。引数も平均ベクトルと分散共分散行列の指定でOKである。

library(mvtnorm)

mu <- c(0,0)
sigma <- matrix(c(1,0.9,0.9,1), nrow = 2, ncol = 2)

dat <- rmvnorm(1000, mean = mu, sigma = sigma)


このパッケージは、乱数の生成に加えて、任意の区間の累積密度を求めたり確率点を求めたりすることができる。例えば、次のような散布図で色分けした区間のそれぞれの累積密度(確率)を求めたいとする。(正確には2変量の確率密度関数の累積密度なので、散布図で考えるのは正しくないような気もしますが、3Dグラフは見辛くて好きじゃないので、、、散布図の上に正規分布の山が乗っているイメージで読み進めください)

f:id:nekomosyakushimo:20170812140956p:plain


パッケージ内のpmvnormという関数を用いれば計算してくれる。この関数は引数に、n変量の下限と上限をベクトルで指定すると、その範囲の累積密度を求めてくれる。例えば、上記の散布図の青い部分の累積密度を求めたければ次のように指定すれば良い。

blue.l <- c(-Inf,-Inf)
blue.u <- c(0,0)

pmvnorm(lower = blue.l, upper = blue.u, mean = mu, sigma = sigma)

そうすると次のような結果が返ってくる。

[1] 0.4282169
attr(,"error")
[1] 1e-15
attr(,"msg")
[1] "Normal Completion"

この一番上の値が、累積密度である。下の2つは、絶対誤差とステータスメッセージたるものを返してくれるらしいがあまり詳しく調べていないから、どういうときに"Normal Completion"じゃない値を返すのかはちょっとよく分からない。

実際に最初に乱数で発生させたデータ(n=1000)で青色部分のデータ数を数えて見ると次の通り。1000程度のデータ数だとそれなりに誤差があったりしますね。

> sum(dat[,1] <0 & dat[,2] <0)
[1] 415

ちなみに、デフォルトでは下限が-Infで上限がInfであるので、指定しないで実行すると累積密度は当然のことながら1になる。

> pmvnorm(mean = mu, sigma = sigma)
[1] 1
attr(,"error")
[1] 0
attr(,"msg")
[1] "Normal Completion"

十河宏行『心理学実験プログラミング』

当面の自分のやることに関係ありそうなところだけをつまみ読みした。

著者の前書きによると想定される読者は「心理学を専攻し、研究室に配属された学部4年生以上」と結構狭めであるが内容を読んでみると納得だった。実験心理学的な考え方やプログラミングの考え方について丁寧に解説している訳ではないので、そこらへんの知識なしに読み始めると沈没するかもしれない。

わたしは、プログラミングめいたことはRしかやったことがなかったのだけれども、どちらも似た雰囲気の言語だった(ように感じた)ので、Pythonが初めてでも特に抵抗はなかった。ただPsychopy Corderは非常に使いづらいので、ゴリゴリと実験プログラムの開発するなら環境は変える必要があると思った。

任意の母相関を持つ多変量の生成

例えば、母相関係数が0.9である変数xと変数yを生成したいとする。

google先生で調べると次のようなサイトが次のような資料を見つける。

Rで架空データの発生

なので、言われた通りにやってみる。

rho <- 0.9 
n=1000
z <- rnorm(n,0,1)
e1 <- rnorm(n,0,1)
e2 <- rnorm(n,0,1)

x <- sqrt(rho)*z+sqrt(1-rho)*e1
y <- sqrt(rho)*z+sqrt(1-rho)*e2


で、相関を確認するとこんな感じ。

> cor(x,y)
[1] 0.9003037


散布図を書いて見るとこんな感じ。

f:id:nekomosyakushimo:20170801004409p:plain

しかし、世の中には便利なものがあるもので、これを一発で出来るパッケージがあることを最近知った(正確には教えてもらった)。使うのはMASSというパッケージに入っているmvrnormという関数。最初から入っているらしい。

このサイトに紹介がある。
Colorless Green Ideas:R言語で二変量正規分布を扱う

library(MASS)


平均のベクトルと分散共分散行列を指定すれば、あとは勝手に作ってくれる。

mu <- c(0,0)
sigma <- matrix(c(1,0.9,0.9,1), nrow = 2, ncol = 2)

dat <- mvrnorm(1000, mu = mu, Sigma = sigma)


散布図書いてみると、良さそうな感じですね。

f:id:nekomosyakushimo:20170801060019p:plain


相関係数はこんな感じ。

> cor(dat)
          [,1]      [,2]
[1,] 1.0000000 0.9049674
[2,] 0.9049674 1.0000000


この関数を使えば、2変量に限らずそれぞれの変数間が任意の母相関を持つn変量を簡単に作ることができる。

mu2 <- c(0,0,0)
sigma2 <- matrix(c(1,0.9,0.7,0.9,1,0.6,0.6,0.9,1), nrow = 3, ncol = 3)

dat2 <- mvrnorm(1000, mu = mu2, Sigma = sigma2)


相関行列を見てみましょう。

> cor(dat2)
          [,1]      [,2]      [,3]
[1,] 1.0000000 0.9026331 0.6867450
[2,] 0.9026331 1.0000000 0.5882691
[3,] 0.6867450 0.5882691 1.0000000

f:id:nekomosyakushimo:20170801061420p:plain


大変便利な世の中ですね。

行動カスプとは何か

応用行動分析学(ABA)のマイナー用語を調べてみようのコーナー。今回取り上げるのは行動カスプ(behavioral cusp)。カスプとは先端とかとがった部分という意味です。

この概念の提唱者はRosales-RuizとBaerという研究者で、1996年だとか1997年だとかがおそらく初出。

著者らによる行動カスプを説明している論文を見つけた。

https://www.ncbi.nlm.nih.gov/pmc/articles/PMC1284066/

アブストラクトには次のように書いてある。

Certain behavior changes open the door to especially broad or especially important further behavior change, leading to the concept of the behavioral cusp. A behavioral cusp, then, is any behavior change that brings the organism’s behavior into contact with new contingencies that have even more far-reaching consequences.

人間の発達を行動分析の観点から考える際に、全ての行動が同じ重み付けでシステマチックに獲得されるのか、特定の随伴性の変化がその後の行動の変化において特に重要な意味を持つのかは、重要なテーマらしい。

行動カスプとは、その行動を獲得した個体は、新しい行動レパートリーを獲得する環境(強化子・弱化子・随伴性・刺激性制御)に導かれるという点で、その行動自体における変化を超えた結果をもたらすような行動のことである。

論文中では、その例としてハイハイが挙げられている。赤ちゃんはハイハイを獲得することにより、新しい環境への接触の機会が急激に増える。その結果として、様々な随伴性を獲得する機会を得て、行動レパートリーが広がる可能性が高まる。論文中で書かれる通り、赤ちゃんはハイハイを獲得することによってまさに新しい世界のドアを開いたのだ。

個体にとっての行動カスプを特定することができれば、標的行動の選択の際に、それを考慮して介入の目標設定ができるようになるなど臨床的にも意味のある概念に思う。何が行動カスプになりうるかに興味がある方は紹介した論文にあたると良いでしょう。

小倉晶男『福祉を変える経営ー障害者の月給1万円からの脱出ー』

福祉を変える経営~障害者の月給1万円からの脱出

福祉を変える経営~障害者の月給1万円からの脱出

著者の小倉さんは、クロネコヤマトで有名なヤマト運輸の元会長で、会長職を退いた後はヤマト福祉財団というところの理事長をしている人だ。

本の内容を一言で言えば、作業所などに代表される障害者福祉の業界にも経済学・経営学の考え方を持ち込み、障害のある人が自立して生活しているだけの給料を払えるようにするべきだ、とまとめられるだろう。

全部で4章からなり、1章では著者が福祉の仕事に就いた理由や日本の現状の障害者福祉の問題点などが書かれている。続く2章・3章では経済学、経営学のごくごく基本的な内容が書かれており、4章では、そうした経済学・経営学の視点を取り入れて、障害者に一万円よりもずっと多い給料を支払っている作業所の実践が紹介されている。

本の中で紹介されている著者らが仕組みを作ったスワンベーカリーというパン屋が現在どうなっているか調べてみたら、出版の時点よりも着実にフランチャイズ店が増えていた。店が増えているというのはそれだけ障害者の働く場が増えたということだ。

株式会社スワン

障害者の福祉を変えようと思い、実際にここまでの仕組みを作りあげる実行力のようなものは、さすが大企業の元経営者という感じで、勢いがあって読み応えのある本だった。

ABAと用語の誤用

以前の記事でも似たようなことを書いたが、最近ABA関連でまた誤用に出会った。

ABAにおける「ABABデザイン」という言葉が、「ベースラインに後続して介入条件Aと介入条件Bを繰り返す実験デザイン」だと勘違いされていた。ABAの適当な教科書を参照すればすぐに分かることであるが、ABABデザインにおけるAとはベースラインのことである。従属変数としての行動と独立変数としての環境変数との関数関係を明らかにしたいために、Bにおける環境変数を一旦もとに戻すのである。このデザインがリバーサルデザイン(reversal design)であったり、除去デザイン(withdrawbal design)と呼ばれている所以である。

これに限ったことではないのだが、ABA界隈で、用語の誤用が多いと感じている。今読んでいるクーパーらの本『応用行動分析学』でも、負の強化という概念が多くの学生を混乱させてきたことが書かれているし(p.66)、以前「死人テスト」について調べたときに読んだLindsleyの論文でも用語の問題について論じていたと記憶している。中途半端に日常的な感じなのが誤解を呼びやすいのだろうか。

まぁ何にせよ、誤った概念を広めないように再度学習していきたいと思う。

nekomosyakushimo.hatenablog.com
nekomosyakushimo.hatenablog.com

応用行動分析学

応用行動分析学