井出草平の研究ノート

ベイズ法・ポワソンモデルを用いたクロス集計表の分析

クロス表データのベイズ分析のために使用できるいくつかの可能性があるモデルがある。

クロス表の各セルでの頻度に対するいわゆる対数線形モデル(ポアソン・モデル)。各セルのデータの比率の推定値を得るための二項モデルである。カイ二乗検定よりもさらに詳細にデータのパターンを探索する可能性がもたらすだろう。

データをデータフレーム形式のクロス表に並べる。つまり、クロステーブルの各セルの頻度が変数となり、行名と列名も別々の変数で与えられる。

タイタニックデータの呼び出し

生存・性別を使用する。

library(titanic)
data(titanic_train)
dat <- subset(titanic_train, select = c(Survived, Sex))

リコード

数値で入っている生存・死亡を文字にリコード。

library(memisc)
dat$Survived <- memisc::recode(dat$Survived, "Survived" <- 1, "Death"<- 0)
dat$Survived <- as.factor(dat$Survived)
dat$Sex <- as.factor(dat$Sex)

データタイプを確かめる

str(dat)

'data.frame': 891 obs. of 2 variables: $ Survived: Factor w/ 2 levels "Survived","Death": 2 2 2 2 2 2 2 2 2 2 ... $ Sex : Factor w/ 2 levels "female","male": 2 1 1 1 2 2 2 2 1 1 ...

スタック形式に変換

dat.stack0 <- table(dat$Sex, dat$Survived)
dat.stack <-as.data.frame(dat.stack0)
colnames(dat.stack) <- c("Sex","Survived","freq")
print(dat.stack)

スタック形式のクロス表。

     Sex Survived freq
1 female Survived  233
2   male Survived  109
3 female    Death   81
4   male    Death  468

対数線形モデル log-linear model

library(arm)
nsim <- 5000

mod <- glm(freq ~ Sex + Survived + Sex:Survived, 
           data=dat.stack, family=poisson)
bsim <- sim(mod, n.sim=nsim)
round(t(apply(bsim@coef, 2, quantile, 
              prob=c(0.025, 0.5, 0.975))),2)

出力

                       2.5%   50% 97.5%
(Intercept)            5.32  5.45  5.58
Sexmale               -0.99 -0.76 -0.54
SurvivedDeath         -1.31 -1.06 -0.81
Sexmale:SurvivedDeath  2.19  2.51  2.84

相互作用パラメータは、相関の強さを測定するものである。パラメータ値2.51の意味を定量的に理解するためには、すべてのパラメータ値の解釈を見る必要がある。

切片5.45は、セル「female」と「Survived」(女性で生存した数)の対数に相当する。

 \exp(β_0)=233

第2パラメータの指数は,セル「femaleとSurvived」と「maleとSurvived」乗法的な差に相当する。

 exp(\beta_0)exp(\beta_1)= exp(5.45)exp(-0.76) = 109

となる。第3のパラメータは、「femaleとSurvived」と「femaleとDeath」のセル間の乗法的な差、すなわち「femaleとDeath」のセル内の頻度である。

 exp(\beta_0)exp(\beta_2) = exp(1.79)exp(-1.06) = 81

第3パラメータは、女性で生存した者と女性で死亡した者の対数値の差である。交互作用パラメータは、この差を、男性と女性の間で差分化したものである。これは直感的に理解するのが難しい。ここで、もう一回、定式化を試みる。交互作用パラメータは、クロス表の行と列の差のカウントの対数の差を測定している。モデルパラメータから「maleとDeath」のセル内の頻度を取り出すと、明らかになるかもしれない。

 exp(\beta_0)exp(\beta_1)exp(\beta_2)exp(\beta_3) = exp(5.45)exp(-0.76)exp(-1.06)exp(2.51) = 468

参照したのはこちらの解説。

https://tobiasroth.github.io/BDAEcology/addbasics.html

correlationパッケージ[R]

自動で相関係数を一気に計算するパッケージの一つ。サンプルデータはmtcarsを用いる。

cran.r-project.org

easystats.github.io

data(mtcars)
head(mtcars,5)

データ。

                       mpg cyl disp  hp drat    wt  qsec vs am gear carb
    Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
    Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
    Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
    Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
    Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2

vsとamは2値であるため、この2つを取り除く。出力をpearsonだけにするため。

dat <- subset(mtcars,select = (c(-vs, -am)))
head(dat,5)

加工後データ。

                   mpg cyl disp  hp drat    wt  qsec gear carb
Mazda RX4         21.0   6  160 110 3.90 2.620 16.46    4    4
Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02    4    4
Datsun 710        22.8   4  108  93 3.85 2.320 18.61    4    1
Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44    3    1
Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02    3    2

correlation()

オプションが2つ指定されている。意味は後段を参照のこと。

library(correlation)
res <-correlation::correlation(dat,
  include_factors = TRUE, method = "auto"
)
res

表示

# Correlation Matrix (auto-method)

Parameter1 | Parameter2 |     r |         95% CI | t(30) |         p
--------------------------------------------------------------------
mpg        |        cyl | -0.85 | [-0.93, -0.72] | -8.92 | < .001***
mpg        |       disp | -0.85 | [-0.92, -0.71] | -8.75 | < .001***
mpg        |         hp | -0.78 | [-0.89, -0.59] | -6.74 | < .001***
mpg        |       drat |  0.68 | [ 0.44,  0.83] |  5.10 | < .001***
mpg        |         wt | -0.87 | [-0.93, -0.74] | -9.56 | < .001***
mpg        |       qsec |  0.42 | [ 0.08,  0.67] |  2.53 | 0.137    
mpg        |       gear |  0.48 | [ 0.16,  0.71] |  3.00 | 0.065    
mpg        |       carb | -0.55 | [-0.75, -0.25] | -3.62 | 0.016*   
cyl        |       disp |  0.90 | [ 0.81,  0.95] | 11.45 | < .001***
cyl        |         hp |  0.83 | [ 0.68,  0.92] |  8.23 | < .001***
cyl        |       drat | -0.70 | [-0.84, -0.46] | -5.37 | < .001***
cyl        |         wt |  0.78 | [ 0.60,  0.89] |  6.88 | < .001***
cyl        |       qsec | -0.59 | [-0.78, -0.31] | -4.02 | 0.007**  
cyl        |       gear | -0.49 | [-0.72, -0.17] | -3.10 | 0.054    
cyl        |       carb |  0.53 | [ 0.22,  0.74] |  3.40 | 0.027*   
disp       |         hp |  0.79 | [ 0.61,  0.89] |  7.08 | < .001***
disp       |       drat | -0.71 | [-0.85, -0.48] | -5.53 | < .001***
disp       |         wt |  0.89 | [ 0.78,  0.94] | 10.58 | < .001***
disp       |       qsec | -0.43 | [-0.68, -0.10] | -2.64 | 0.131    
disp       |       gear | -0.56 | [-0.76, -0.26] | -3.66 | 0.015*   
disp       |       carb |  0.39 | [ 0.05,  0.65] |  2.35 | 0.177    
hp         |       drat | -0.45 | [-0.69, -0.12] | -2.75 | 0.110    
hp         |         wt |  0.66 | [ 0.40,  0.82] |  4.80 | < .001***
hp         |       qsec | -0.71 | [-0.85, -0.48] | -5.49 | < .001***
hp         |       gear | -0.13 | [-0.45,  0.23] | -0.69 | > .999   
hp         |       carb |  0.75 | [ 0.54,  0.87] |  6.21 | < .001***
drat       |         wt | -0.71 | [-0.85, -0.48] | -5.56 | < .001***
drat       |       qsec |  0.09 | [-0.27,  0.43] |  0.50 | > .999   
drat       |       gear |  0.70 | [ 0.46,  0.84] |  5.36 | < .001***
drat       |       carb | -0.09 | [-0.43,  0.27] | -0.50 | > .999   
wt         |       qsec | -0.17 | [-0.49,  0.19] | -0.97 | > .999   
wt         |       gear | -0.58 | [-0.77, -0.29] | -3.93 | 0.008**  
wt         |       carb |  0.43 | [ 0.09,  0.68] |  2.59 | 0.132    
qsec       |       gear | -0.21 | [-0.52,  0.15] | -1.19 | > .999   
qsec       |       carb | -0.66 | [-0.82, -0.40] | -4.76 | < .001***
gear       |       carb |  0.27 | [-0.08,  0.57] |  1.56 | 0.774    

p-value adjustment method: Holm (1979)
Observations: 32

write.csv()でこのまま書き出せるかと思ったのだが、うまくいかなかった。
エディタで|をタブかコンマに変換して、空白をつぶせばcsvとして使えるがあまり美しくない。
今回はresに格納したが、resの中身とprint()とも表示内容が異なる。

summary()

summary()で吐くとさらに表示形式が変わる。

summary(res)

表示

# Correlation Matrix (auto-method)

Parameter |     carb |    gear |     qsec |       wt |     drat |       hp |     disp |      cyl
------------------------------------------------------------------------------------------------
mpg       |   -0.55* |    0.48 |     0.42 | -0.87*** |  0.68*** | -0.78*** | -0.85*** | -0.85***
cyl       |    0.53* |   -0.49 |  -0.59** |  0.78*** | -0.70*** |  0.83*** |  0.90*** |         
disp      |     0.39 |  -0.56* |    -0.43 |  0.89*** | -0.71*** |  0.79*** |          |         
hp        |  0.75*** |   -0.13 | -0.71*** |  0.66*** |    -0.45 |          |          |         
drat      |    -0.09 | 0.70*** |     0.09 | -0.71*** |          |          |          |         
wt        |     0.43 | -0.58** |    -0.17 |          |          |          |          |         
qsec      | -0.66*** |   -0.21 |          |          |          |          |          |         
gear      |     0.27 |         |          |          |          |          |          |         

p-value adjustment method: Holm (1979)

オプション

使い方

correlation(
  data,
  data2 = NULL, select = NULL, select2  = NULL,
  rename  = NULL, method  = "pearson", p_adjust  = "holm", ci = 0.95,
  bayesian = FALSE, bayesian_prior =  "medium", bayesian_ci_method = "hdi", 
  bayesian_test  = c("pd", "rope", "bf"), redundant = FALSE,
  include_factors = FALSE, partial = FALSE, partial_bayesian = FALSE, 
  multilevel = FALSE, ranktransform  = FALSE, winsorize  = FALSE,
  verbose = TRUE, standardize_names = getOption("easystats.standardize_names", FALSE),
  ...)

data

データフレーム。

data2

オプションのデータフレーム。指定された場合、data と data2 の変数間のすべてのペアワイズ相関が計算される。

select, select2

(data2 が指定されている場合は無視される。) 相関のために選択されるべき変数のオプションの名前。。 相関させるべきこれらの変数をデータフレームに与える代わりに、 data はデータフレーム、select と select2 は data の変数(列)の(引用)名とすることができる。correlation() は data[select] と data[select2] の間の相関を計算する。 select だけが指定された場合、select 変数間のすべてのペアワイズ相関が計算される。これは、correlation()の「パイプ・フレンドリー」な代替方法である('Examples'を参照)。

rename

出力される変数の名前を変更したい場合、これらの引数を使用して、別の名前を指定することができる。名前の数は、選択された列の数と同じでなければならないことに注意されたい。data2 が指定された場合は無視される。

method

検定に使用する相関係数を示す文字列。"pearson" (デフォルト), "kendall", "spearman" (ただし robust 引数を参照), "biserial", "polychoric", "tetrachoric", "biweight", "distance", "percentage" (パーセント曲げ相関), "blomqvist" のどれか1つが指定される。 (Blomqvist の係数のため)、"hoeffding" (Hoeffding の D )、"gamma"、"gaussian" (ガウス順位相関)、"shepherd" (シェパード円周率相関)のいずれかを選択する。auto "を設定すると、最も適切な方法(順序要因が含まれる場合はpolychoric、二項要因が含まれる場合はtetrachoric、二項と連続の場合はpoint-biserial、それ以外はpearson)を選択しようと試みる。これらの指標の説明については、以下の詳細セクションを参照。

p_adjust

頻度論的相関の補正法。"holm" (デフォルト), "hochberg", "hommel", "bonferroni", "BH", "BY", "fdr", "somers", "none" のいずれかを指定することができる。詳細は stats::p.adjust() を参照.

ci

Confidence/Credible Interval level(信頼区間レベル).default "の場合、0.95 (95% CI)に設定される。

bayesian

TRUE の場合、ベイズの枠組みで相関を実行する。

bayesian_prior

引数の prior には、いくつかの名前がついている。"medium.narrow", "medium", "wide", "ultrawide "である。これらは、それぞれ 1/sqrt(27), 1/3, 1/sqrt(3), 1 のスケール値に対応する。BayesFactor::correlationBF 関数を参照。

bayesian_ci_method、bayesian_test

BayesFactor のテストについては model_parameters() の引数を参照。

redundant

データに冗長行(与えられた相関が2回繰り返される)が含まれているかどうか。

include_factors

TRUE の場合、因子は保持され、最終的に数値に変換されるか、ランダム効果として使用される(マルチレベルに依存)。FALSEの場合、因子は前もって取り除かれる。

partial

部分相関、半部分相関をそれぞれ TRUE または "semi" とすることができる。

partial_bayesian

ベイズの枠組みで部分相関を求める場合は、partial_bayesian を TRUEに設定し、完全なベイズ部分相関を得る必要がある。 そうでない場合は、擬似ベイズ偏相関(つまり、Frequentistの部分化に基づくベイズ偏相関)が得られる。

multilevel

TRUE の場合、因子はランダム因子として含まれる。一方、FALSE(デフォルト)の場合、それらは単回帰モデルにおける固定効果として含まれる。

ranktransform

TRUE にすると、相関を推定する前に変数を順位変換する。これは、極値(外れ値)に対してより強い分析を行う方法の1つである。例えば、ランク変換されたデータのピアソンの相関は、スピアマンの順位相関と同等であることに注意。 したがって、robust=TRUEとmethod="spearman"を使用することは冗長である。しかし、これは相関のロバスト性を高める簡単なオプションであり、ベイズ相関やマルチレベルSpearmanのような順位相関を得るための柔軟な方法でもある。

winsorize

相関をより「ロバスト」にする(つまり、極値の影響を抑える)もうひとつの方法。FALSE、または必要なしきい値に対応する0~1 (例:0.2)の数値を指定できる。 詳細は winsorize() 関数を参照してください。

verbose

警告をトグルする。

standardize_names

このオプションを TRUE に設定すると、出力に対して insight::standardize_names() を実行し、標準化されたカラム名を取得することができる。このオプションはoptions(easystats.standardize_names = TRUE)を実行することでグローバルに設定することも可能である。

他のメソッドに渡す追加の引数(例えば、代替)。詳細はstats::cor.testを参照

R二乗は役に立たないのか?

カーネギーメロン大学のCosma Shalizi氏の「R二乗値は何の役にも立たない」関連。

ides.hatenablog.com

バージニア大学図書館のクレイ・フォード氏によるシミュレーションをみてみよう。

data.library.virginia.edu

2015年10月16日(木)、不信感を抱いた学生がRedditに投稿した。私の統計学の教授が、R二乗の値は本質的に役に立たないという暴言を吐いたのですが、これには何か真実があるのだろうか? 少なくともRedditの他の統計に関する投稿と比較すると、かなりの注目を集めた。

この学生の統計学の教授は、カーネギーメロン大学のCosma Shalizi氏であることが判明しました。Shaliziは、彼の授業の講義資料を無料で公開しているので、彼が一体何について「暴言」を吐いたのかを見ることができる。それは、彼の第10講のノートの3.2節から始まっている。

R2乗は回帰出力によく現れる統計量であることを忘れたのだろうか?これは0から1までの値で、通常、回帰モデルが説明する応答の変動のパーセンテージを要約していると解釈される。したがって、R2乗が0.65というのは、モデルが従属変数の変動の約65%を説明することを意味する。このロジックを考えると、我々は回帰モデルが高いR2乗を持つことを好む。しかし、Shaliziは、説得力のある議論によってこの論理に異議を唱えている。

Rでは、通常、モデル・オブジェクトのsummary関数を呼び出して、R2乗を求める。以下はシミュレーションデータを使った簡単な例である。

x <- 1:20                       # 独立変数
set.seed(1)                     # 再現性のため
y <- 2 + 0.5*x + rnorm(20,0,3)  # 従属変数; x の関数で、ランダムな誤差。
mod <- lm(y~x)                  # 単純な線形回帰
summary(mod)$r.squared          # R2乗の値だけを要求する。

結果

[1] 0.6026682

R2乗は、フィット値の偏差の2乗の合計をオリジナル値の偏差の2乗の合計で割った値で表される。

 R^{2} =  \frac{\sum (\hat{y} – \bar{\hat{y}})^{2}}{\sum (y – \bar{y})^{2}}

このようにモデルオブジェクトを使って直接計算することができる。

f <- mod$fitted.values       # モデルから適合値(または予測値)を取り出す
mss <- sum((f - mean(f))^2)  # 適合値の偏差の二乗の和
tss <- sum((y - mean(y))^2)  # 元値の偏差の二乗の総和
mss/tss                      # R2乗

結果

[1] 0.6026682

では、R二乗に関するShaliziの発言をいくつか取り上げ、Rでのシミュレーションで実証してみよう。

1. R2乗は適合度を測るものではない。

モデルが完全に正しい場合、恣意的に低くなることがある。σ2を大きくすることで、単純な線形回帰モデルのすべての仮定があらゆる点で正しくても、R2乗を0に近づけることができる。

σ2とは?線形回帰を実行するとき、我々はモデルが従属変数をほとんど予測すると仮定する。「ほぼ」と「正確」の差は、平均0、我々がσ2と呼ぶ分散を持つ正規分布からの抽選であると仮定される。

Shaliziの発言は、実証するのがとても簡単である。ここでは、(1)単純な線形回帰の仮定(独立した観測値、一定の分散を持つ正規分布の誤差)を満たすデータを生成し、(2)単純な線形モデルをデータに適合させ、(3)R2乗を報告する関数を作成する。簡便にするためパラメータはシグマのみであることに注意してほしい。次に、この関数をσの値が増加する系列に「適用」して、結果をプロットする。

r2.0 <- function(sig){
  x <- seq(1,10,length.out = 100)        # 我々の予測変数
  y <- 2 + 1.2*x + rnorm(100,0,sd = sig) # 応答; x といくつかのランダムノイズの関数である。
  summary(lm(y ~ x))$r.squared           # R2 乗の値を表示する。
}

sigmas <- seq(0.5,20,length.out = 20)
rout <- sapply(sigmas, r2.0)             # 一連のシグマ値に対して関数を適用する。
plot(rout ~ sigmas, type="b")

確かに、モデルがあらゆる点で完全に正しいにもかかわらず、シグマが大きくなるとR2乗は大きく減少します。

2. R2乗は、モデルが完全に間違っている場合、任意に1に近づけることができる。

繰り返しになるが、R2乗は適合度を測るものではない、ということである。ここでは、Shaliziの講義10のノートの別のセクションにあるコードを使って、非線形データを生成してみよう。

set.seed(1)
x <- rexp(50,rate=0.005)                     # 予測器は指数分布からのデータ
y <- (x-1)^2 * runif(50, min=0.8, max=1.2)   # 非線形データ生成
plot(x,y)                            # 明らかに非線型であることを確認する

ここで、R2乗を確認する。

summary(lm(y ~ x))$r.squared

[1] 0.8485146

およそ0.85と非常に高い値であるが、このモデルは完全に間違っている。この例でモデルの「goodness」を正当化するためにR2乗を使うのは間違いであろう。願わくば、まずデータをプロットして、この場合の単純な線形回帰が不適切であることを認識してほしいである。

3.R2乗は、σ2が全く同じで、係数が変わらなくても、予測誤差について何も言及できない。

R2乗はXの範囲を変えるだけで、0から1の間のどこにでもなる。予測誤差の指標としては、平均二乗誤差(MSE)を使う方がよいだろう。

MSEは基本的に、フィットしたy値から観測されたy値を引いたものを2乗し、それを合計し、観測回数で割ったものである。

まず、単純な線形回帰の仮定をすべて満たすデータを生成し、yをxに回帰してR2乗とMSEの両方を評価することで、この記述を実証してみよう。

x <- seq(1,10,length.out = 100)
set.seed(1)
y <- 2 + 1.2*x + rnorm(100,0,sd = 0.9)
mod1 <- lm(y ~ x)
summary(mod1)$r.squared

[1] 0.9383379

sum((fitted(mod1) - y)^2)/100 # 平均二乗誤差

[1] 0.6468052

今度は上のコードを繰り返すが、今度はxの範囲を変えてほしい。

x <- seq(1,2,length.out = 100)       # xの新しい範囲
set.seed(1)
y <- 2 + 1.2*x + rnorm(100,0,sd = 0.9)
mod1 <- lm(y ~ x)
summary(mod1)$r.squared

[1] 0.1502448

sum((fitted(mod1) - y)^2)/100        # 平均二乗誤差

[1] 0.6468052

R2乗は0.94から0.15に低下しましたが、MSEは変わらなかった。言い換えれば、予測能力は両方のデータセットで同じですが、R2乗を見ると、最初の例の方が何らかの形でより予測能力の高いモデルを持っていると思わせるのである。

4.R2乗は、変換されていないYと変換されたYのモデル間、またはYの異なる変換間の比較はできない。

それでは、変換が有効なデータを生成して検証してみよう。以下のRコードは、以前の取り組みと非常によく似ているが、今度はy変数を指数関数化することに注意してほしい。

x <- seq(1,2,length.out = 100)
set.seed(1)
y <- exp(-2 - 0.09*x + rnorm(100,0,sd = 2.5))
summary(lm(y ~ x))$r.squared

[1] 0.003281718

plot(lm(y ~ x), which=3)

R2乗は非常に低く、残差対適合プロットは外れ値や一定でない分散を明らかにする。この問題を解決するには、データを対数変換することが一般的である。それを試して、何が起こるか見てみよう。

plot(lm(log(y)~x),which = 3) 

診断プロットはかなり良くなっているようだ。分散が一定であるという我々の仮定は満たされているように見る。しかし、R2乗を見てほしい。

summary(lm(log(y)~x))$r.squared 

[1] 0.0006921086

さらに低くなっている! これは極端な例で、いつもこのようになるわけではない。実際、対数変換を行うと、通常はR2乗が増加する。しかし、先ほど示したように、よりよく満たされた仮定が必ずしも高いR2乗をもたらすとは限らない。したがって、R2乗はモデル間で比較することができなのである。

5.R2乗は回帰によって「説明される分散の割合」であると言うのは非常に一般的である。しかし、XをYに回帰させたら、全く同じR2乗が得られる。このこと自体、高いR2乗はある変数を別の変数で説明することについては何も語っていないことを示すのに十分であろう。

これは、最も実証しやすい。

x <- seq(1,10,length.out = 100)
y <- 2 + 1.2*x + rnorm(100,0,sd = 2)
summary(lm(y ~ x))$r.squared

[1] 0.7065779

summary(lm(x ~ y))$r.squared

[1] 0.7065779

xがyを説明するのか、yがxを説明するのか? 「説明する」という言葉は「原因」という言葉を避けているのだろうか? このような2変数の単純なシナリオでは、R2乗は単にxとyの相関の2乗である。

all.equal(cor(x,y)^2, summary(lm(x ~ y))$r.squared, summary(lm(y ~ x))$r.squared)

[1] TRUE

この場合、R2乗の代わりに相関を使えばいいのでは? しかし、相関は線形関係を要約するもので、データには適していないかもしれない。このような場合にも、データをプロットすることが強く推奨される。

改めて確認しよう。

  • R2乗は適合度を測るものではない。
  • R2乗は予測誤差を測定しない。
  • R2乗は、変換された回答を使用してモデルを比較することはできない。
  • R2乗は、ある変数が他の変数をどのように説明するかを測定しない。

Shalizi氏は講義ノートでさらに多くの理由を述べている。そして、Adjusted R-squaredはこれらの問題のどれにも対処していないことに留意すべきである。

では、R2乗を使う理由はあるのだろうか? Shaliziは「ない」と言っている(「私は、それが全く役に立ったという状況を見つけたことがない」)。間違いなく、一部の統計学者やRedditorは反対するでしょう。あなたの見解がどうであれ、データ分析にR2乗を使うのであれば、それがあなたの考えていることを伝えているかどうか、再確認するのが賢明だろう。

ひきこもりの診断基準の提案

https://onlinelibrary.wiley.com/doi/full/10.1002/wps.20705

加藤隆弘先生、神庭重信先生、Alan Teo先生たちによる「ひきこもり」の診断基準の提案。本文は下部に訳出した。

この提案で気になるのは以下の部分。

Individuals who leave their home frequently (4 or more days/week), by definition, do not meet criteria for hikikomori.
頻繁に家を空ける人(4日以上/週)は、定義上、ひきこもりの基準を満たさない。

社会的な人とのつながりの断絶が問題に加えて、物理的な閉じこもりも基準に加えたところが入っており、かつ、外出頻度が重症度として使うというところが独特である。

ひきこもりの社会学 (SEKAISHISO SEMINAR)』でも書いたが家族からプレッシャーや冷遇・絶えない口論で家に居づらいと感じている者は多く、その苦痛に耐えかねて毎日のように外出するケースはそれほど珍しくない。この定義だと、このようなケースはひきこもりから除外される。

家族からプレッシャーに耐えて自室にいるか、家族からプレッシャーに耐えかねて外出するか、というケースはそれほど違ったものなのだろうか。家族からプレッシャーに耐えられればひきこもりになり、耐えかねて外出したら、ひきこもりではなくなるのだ。このロジックが説得的だとは到底思えない。

さらに家族がお金だけ渡して、コンビニにごはんを買いに行くケースでは毎日外出しているということも、考慮すべきであろう。毎日外出をするとひきこもりにならない、ということは、家族がごはんをつくらず、お金だけ渡して「食べるものはコンビニで自分で買ってきなさい」と言えばよい。もしかすると「コンビニにごはんを買いに行かせるようにする」だけで日本からひきこもりがいなくなってしまうかもしれない。

このような妙なことが生じるかといえば、外出基準が含まれているからである。

2010年の厚労省基準では、社会的関係の断絶だけを評価している。しかし、この論文で提唱されている定義では外出基準を加えている。「簡略化した」と論文には書かれてあるが、実際には、要素が一つ加わっていて、簡略化はされていない上、上記のような問題も生じる。

たまにしか外出しない人(2~3日/週)、ほとんど外出しない人(1日/週以下)、ほとんど部屋から出ない人は、それぞれ軽度、中度、重度と判定されることがある。
Individuals who occasionally leave their home (2-3 days/week), rarely leave their home (1 day/week or less), or rarely leave a single room may be characterized as mild, moderate or severe, respectively.

物理的な閉じこもりの度合いで重症度が変わる点にも疑問がある。自室から出ないケースは重症度が高いと捉えるという点については、ほとんどの臨床家は賛同するだろうし、個人的にも違和感はない。しかし、併存する精神障害が重症だけなのではないか、という疑問が残る。個人的に知る限りは併存症が重度だったケースばかりなので、ひきこもりの重症度が高いという主張には賛同できない。

また、週1日の外出をする人と週2-3日の外出をする人に重症度の点で差がある、と論文で書かれているが、この点も疑問だ。外出頻度が高い方が社会参加が容易である(=治りやすい)といったデータがあるのであれば根拠づけられるが、そういったデータはみたことがないし、おそらく差はでないだろう。

重症度評価ができないと診断基準に仕立てられないという事情はあったとしても、外出頻度を重症度にするのはかなり強引であり、かつ、実態を反映していないと言わざるを得ないだろう。


病的ひきこもりの定義:ひきこもりの診断基準の提案

1990年代後半、青年期や成人期にある若者に見られる深刻で長期にわたる引きこもり現象が、日本人の意識の中に定着した。「ひきこもり」と呼ばれるこの問題は、近年、日本人の典型的な問題から、世界的な健康問題にまで発展しつつある[1]。この変化は、疫学的研究、臨床的ケースシリーズ、世界各国のメディア報道において、ひきこもりのエビデンスが増加していることに起因している[2]。

文化や国を越えて「ひきこもり」への関心が高まるにつれ、本疾患の明確で一貫した定義を確立することの重要性も増している。約10年前に、予備的な診断基準[3]および半構造化診断面接[4]が開発された。この10年間で、私たちやこの新しい研究分野の研究者たちは、日本や世界の多くのひきこもり患者やその家族の評価、治療、フォローアップにおいて、より幅広い経験を積んできた。その結果、この疾患に対する生物心理社会的な理解が深まり[4],[5]、以前の定義の限界を痛感するようになった。私たちは、今こそ、ひきこもりの診断基準の最新の案を提供する時であると考え、ここに発表する。

ひきこもりは、自宅での物理的な隔離を本質とする病的な引きこもり、社会的孤立の一形態である。a) 自宅での著しい社会的孤立 b) 継続的な社会的孤立の期間が6ヶ月以上 c) 社会的孤立に伴う著しい機能障害または苦痛を伴う。

たまにしか外出しない人(2~3日/週)、ほとんど外出しない人(1日/週以下)、ほとんど部屋から出ない人は、それぞれ軽度、中度、重度と判定されることがある。頻繁に家を空ける人Individuals who leave their home frequently(4日以上/週)は、定義上、ひきこもりの基準を満たさない。ひきこもりの継続期間を推定し、記録しておく。社会的孤立の期間が少なくとも3ヶ月(ただし6ヶ月を除く)ある人は、ひきこもり予備軍と分類されるべきである。発症年齢は、通常、青年期または成人期初期である。しかし、30代以降の発症もまれではなく、上記の基準を満たす主婦や高齢者も診断を受けることができる。

この改訂された「ひきこもり」の定義では、4つの点が強調されている。第一に、家に閉じこもるという行動、つまり引きこもりや社会的孤立という物理的な側面は、依然としてひきこもりの中心的な特徴であり、定義でもある。しかし、外出の頻度がどの程度なら「自宅での著しい社会的孤立」に該当するのか、定義が明確化された。第2に、社会的な状況や人間関係を避けるという要件が削除された。私たちは、ひきこもり[5]と診断された人たちと面談しているが、彼らは、有意義な社会的関係がほとんどなく、社会的交流もほとんどないことを報告するが、社会的交流を避けることは否定している。多くの臨床家は、ひきこもりと社会不安障害との違いを不思議に思うことがあるが、この回避の欠如が主な違いの一つである。

第3に、苦痛や機能障害を慎重に評価する必要がある。ひきこもりが病的な状態であるためには、個人の機能障害が不可欠であるが、主観的な苦痛は存在しないかもしれない。私たちが行ったひきこもり患者への詳細な臨床面接[4]では、特に症状の初期には、多くの人が社会的ひきこもりに満足感を感じていることが明らかになった。特に初期には、家の外でのつらい現実から逃れられたという安堵感があるようだ。しかし、ひきこもりの期間が長くなると、多くのひきこもり患者は孤独感などの苦痛を訴えるようになる[4]。

第4に、他の精神疾患をひきこもりの除外基準から外したことである。この疾患は、他の疾患と併存する傾向があることが明らかになっている[6],[7]。このように、ひきこもりは他の疾患との併存が多いため、健康問題としての重要性が増していると考えられる。カタトニアやパニック障害精神疾患診断の特定疾患に挙げられるように、ひきこもりは様々な精神疾患と併存し、精神病理の一因になっている可能性がある。

デジタル技術やコミュニケーション技術の進歩により、対面での社会的交流に代わるものとして、ひきこもりはますます重要な問題となる可能性がある。このような簡略化された診断基準により、評価の標準化とひきこもりに関する異文化比較が促進されることを期待する。

1 Kato TA, Kanba S, Teo AR. World Psychiatry 2018;17:105-6.
https://pubmed.ncbi.nlm.nih.gov/29352535/
2 Wu AFW, Ooi J, Wong PWC et al. Lancet Psychiatry 2019;6:195-6.
https://pubmed.ncbi.nlm.nih.gov/30798886/
3 Teo AR, Gaw AC. J Nerv Ment Dis 2010;198:444-9.
https://pubmed.ncbi.nlm.nih.gov/20531124/
4 Teo AR, Fetters MD, Stufflebam K et al. Int J Soc Psychiatry 2015;61:64-72.
https://pubmed.ncbi.nlm.nih.gov/24869848/
5 Hayakawa K, Kato TA, Watabe M et al. Sci Rep 2018;8:2884.
https://pubmed.ncbi.nlm.nih.gov/29440704/
6 Teo AR, Stufflebam K, Saha S et al. Psychiatry Res 2015;228:182-3.
https://pubmed.ncbi.nlm.nih.gov/25977071/
7 Malagon-Amor A, Martin-Lopez LM, Corcoles D et al. Psychiatry Res 2018;270:1039-46.
https://pubmed.ncbi.nlm.nih.gov/29615267/

スマートフォン嗜癖・エディトリアル

www.mgmjms.com

Sushil Kumarによるエディトリアル


シリコンチップの発明、コンピュータ、インターネット、Wi-fi、携帯電話、そして現在のスマートフォンは、私たちのコミュニケーションのあり方に大きな変革をもたらした。マルチメディア、人工知能クラウド、デジタルアプリは、おなじみの名前であり、今日の新しい常識でもある。技術革新のスピードは非常に速く、そのスピードについて行くのは大変なことである。技術やソフトウェアの中には、使いこなす前に時代遅れになるものもある。このように変化の激しいシナリオの中でも、テクノロジーへの依存は起こりうるのだろうか。

本誌の最新号には、「スマートフォン嗜癖、社会不安、自尊心の相関関係の評価 Assessment of correlation between smartphone addiction, social anxiety, and self-esteem: A cross-sectional stud」と題する論文が掲載されている。Thatkarらによる研究ではスマートフォン嗜癖が "社会不安 "と "自尊心 "に及ぼす影響を強調している。また、スマートフォン嗜癖は男性に多く、社会不安と正の相関があり、自尊心の低下と負の相関があることが示されている。また、被験者の年齢は、依存症と負の相関があった。検証済みの質問票を用いたアンケート調査である。しかし、文献を検索してみると、Tatkarらの研究とはちょうど逆の結果を示す研究もある[1],[2],[3]ので、現時点では、スマートフォン中毒とその人間行動への影響という問題については、コンセンサスがないと考えることができる。

  • 1.Bianchi A, Phillips JG Psychological predictors of problem mobile phone use. Cyberpsychol Behav 2005;8:39-51. Back to cited text no. 1
  • 2.Ehrenberg A, Juckes S, White K, Walsh S Personality and self-esteem as predictors of young people’s technology use. Cyberpsychol Behav Social Network 2008;11:739-41. Back to cited text no. 2
  • 3.Shaw LH, Gant LM In defense of the internet: The relationship between internet communication and depression, loneliness, self-esteem, and perceived social support. Cyberpsychol Behav 2002;5:157-71. Back to cited text no. 3

嗜癖というと、麻薬、アルコール、大麻、コカイン、向精神薬などの中毒のような物質乱用に関係するものというのが一般的な認識であろう。スマートフォンへの嗜癖は奇妙に聞こえる。存在しないものだと思う人がいる一方で、とてもあると感じる人もいる。これは、様々な研究において、スマートフォン嗜癖の発生率が0~35%と幅があることからも明らかである[4]。スマートフォン嗜癖が従来の嗜癖の定義に当てはまるかどうかを結論づける前に、嗜癖の定義のいくつかを見てみよう。

Merriam Webster dictionary[5]は、嗜癖を「有害な身体的、心理的、または社会的影響を有し、通常、離脱または断薬時に明確な症状(不安、過敏、震え、吐き気など)を引き起こす習慣形成物質、行動、活動に対する強迫的、慢性的、生理的または心理的欲求」と定義している。

"A compulsive, chronic, physiological or psychological need for a habit-forming substance, behavior, or activity having harmful physical, psychological, or social effects and typically causing well-defined symptoms (such as anxiety, irritability, tremors, or nausea) upon withdrawal or abstinence".

米国国立薬物乱用研究所[6]は、依存症を「有害な影響があるにもかかわらず、強迫的に薬物を求め、使用することを特徴とする慢性的、再発性の脳疾患」と定義している。薬物は脳を変化させ、その構造と働きを変えるので、脳の病気と考えられている。このような脳の変化は長く続く可能性があり、薬物を乱用する人に見られる有害な行動につながる可能性がある。」

“Chronic, relapsing brain disease that is characterized by compulsive drug seeking and use, despite harmful consequences. It is considered a brain disease because drugs change the brain—they change its structure and how it works. These brain changes can be long-lasting, and can lead to the harmful behaviors seen in people who abuse drugs.”

ゴッドマン[7]は、非常に実用的な定義を与えている。彼は、嗜癖を「第一に、行動をコントロールすることに繰り返し失敗すること、第二に、重大な否定的結果にもかかわらずその行動を継続すること、という2つのことによって特徴づけられる問題行動」と定義している。定義の問題をまとめると、ほとんどの定義に、第一に個人への害、第二に渇望やコントロールの喪失という2つの具体的なポイントが含まれていることがわかる。

  • 7.Godman MD Addiction: Definition and implications. Br J Addict 1990;85:1403-8. Back to cited text no. 7

スマートフォンの有用性について言えば、私たちの多くは、スマートフォンが私たちの生活をより便利にしてくれたデバイスだと考えられる。昼夜を問わず、世界中の誰とでもコミュニケーションをとることができる。携帯電話には、インターネット、Eメール、WhatsApp、カメラなどがある。スマートフォンには何百ものアプリがあり、無料でダウンロードすることができる。テレビチャンネルや映画、ビデオを見ることができる。家にいながら銀行口座を開設し、請求書を支払い、ローンを組むことができる。COVID-19の閉鎖期間中、スマートフォンは、多くのアプリを通じて、食料品の注文やオンライン決済だけでなく、コミュニケーションのための理想的な方法であった[8]。しかし、スマートフォンやその他の携帯電話の使用には問題がある。運転中や歩行中に使用し、死亡事故につながる可能性がある。日常生活でも、このような事故はよく見かける。しかし、これは簡単に言えば、スマートフォン依存症ではなく、スマートフォンの誤用と言えるだろう。

スマートフォンには多くの利点があり、問題はほとんどないというのに、なぜスマートフォン嗜癖と言われるのだろうか。よく言えば、「非物質関連嗜癖性障害」[9]であり、「何事も使い過ぎれば害になる」と言われるように、スマートフォンの使用も同じである。しかし、スマートフォンやインターネットは、一定の範囲内で利用することが賢明かもしれない。インターネットやスマートフォンの利用について、1日の利用時間の制限を設けるには、さらなる研究が必要かもしれない。しかし、現時点では、スマートフォンを使うことのメリットは、嗜癖のリスクよりも大きいと考えている。

献本御礼 中村努・高澤和彦・稲村厚『誤解だらけの「ギャンブル依存症」;当事者に向き合う支援のすすめ』

献本いただきました。
勉強させていただきます。

ワンデーポートのブログはこちら。

onedaypt.jugem.jp

同じ著者陣で2012年に出版された本があります。 10年経ち、どのような変化があったかのかを拝見したいと思っています。

ひきこもりがアメリカ精神医学会の診断基準DSM-5-TRに掲載される

DSM-5-TRは2013年に出版されたDSM-5のテキスト改定版という位置づけだが、追加された内容もある。その一つが「ひきこもり」である。
ひきこもりが追加されたのは、英語版876ページの"Cultural Concepts of Distress"の章である。気を付けたいのはひきこもりが診断名として掲載されているわけではない、ということだ。"Cultural Concepts of Distress"は文化的に結びついた形の精神症候の現れ方について記された章である。この章には「対人恐怖」が長らく掲載されており、今回のバージョンでも記載されている。

ひきこもり

ひきこもり(日本語の引くと籠るから成る)は、日本人においてみられる長期にわたる深刻な「社会的引きこもり」(social withdrawal)であり、他人との直接の交流が完全に停止してしまうこともある症候群である。ひきこもりの典型的な姿は、思春期または青年期の男性が、実家内の自分の部屋から出ず、直接的な社会的な交流がない状態である。この行動は、当初は自我同一的であっても、時間の経過とともに苦痛を感じるようになるのが普通で、インターネットの利用やバーチャルな社会交流が活発になることが多い。その他の特徴としては、学校や職場への関心や意欲がないことが挙げられます。厚生労働省の2010年版ガイドラインでは、ひきこもりと診断するためには、6ヶ月間の社会的引きこもり状態を維持することが必要とされています。ひきこもりは、DSM-5で確立された障害に付随して起こる場合もあれば(「二次性」)、独立して発現することもある (「一次性」)。

他の文化的背景における関連疾患

青年および若年成人の長期にわたる引きこもりは、オーストラリア、バングラデシュ、ブラジル、中国、フランス、インド、イラン、イタリア、オマーン、韓国、スペイン、台湾、タイ、米国など、多くの環境で報告されている。日本、インド、韓国、米国では、ひきこもり型行動をとる人は、高いレベルの孤独感、限られたソーシャルネットワーク、中程度の機能障害を示す傾向がある。

DSM-5-TRにおける関連疾患。

社交不安症、大うつ病性障害、全般性不安症、心的外傷後ストレス障害自閉スペクトラム症スキゾイド・パーソナリティ障害、回避性パーソナリティ障害、統合失調症または他の精神病性障害。また、インターネットゲーム障害や、青年期には登校拒否を伴うことがある。

Hikikomori

Hikikomori (a Japanese term composed of hiku [to pull back] and moru [to seclude oneself]) is a syndrome of protracted and severe social withdrawal observed in Japan that may result in complete cessation of in-person interactions with others. The typical picture in hikikomori is an adolescent or young adult male who does not leave his room within his parents’ home and has no in-person social interactions. This behavior may initially be ego-syntonic but usually leads to distress over time; it is often associated with high intensity of Internet use and virtual social exchanges. Other features include no interest or willingness to attend school or work. The 2010 guideline of the Japan Ministry of Health, Labor, and Welfare requires 6 months of social withdrawal for a diagnosis of hikikomori. The extreme social withdrawal seen in hikikomori may occur in the context of an established DSM-5 disorder (“secondary”) or manifest independently (“primary”).

Related conditions in other cultural contexts.

Protracted social withdrawal among adolescents and young adults has been reported in many settings, including Australia, Bangladesh, Brazil, China, France, India, Iran, Italy, Oman, South Korea, Spain, Taiwan, Thailand, and the United States. Individuals with hikikomori-type behaviors in Japan, India, South Korea, and the United States tend to display high levels of loneliness, limited social networks, and moderate functional impairment.

Related conditions in DSM-5-TR.

Social anxiety disorder, major depressive disorder, generalized anxiety disorder, posttraumatic stress disorder, autism spectrum disorder, schizoid personality disorder, avoidant personality disorder, schizophrenia or other psychotic disorder. The condition may also be associated with Internet gaming disorder and, in adolescents, with school refusal.