クイーンズ・ギャンビットとリブリウム

クイーンズ・ギャンビットに登場する薬はベンゾジアゼピンのリブリウム(クロルジアゼポキシド)だそうだ。

www.esquire.com

f:id:iDES:20201127175323p:plain

主人公がベンゾジアゼピン依存症になるというのが何とも今っぽい設定である。アメリカだとザナックス(日本での商品名は商品名はソラナックス、コンスタン)、日本ではデパスへの依存が問題になっている。

クイーンズ・ギャンビットでは、孤児院でリブリウムを飲み、それが依存症の体質を作り、アルコール依存に発展するという話の流れになっている。しかし、薬物依存症は遺伝的・生得的にリスクがある程度決まっているので、ベンゾジアゼピンによって依存症が作り出されるというのは誇張があるように感じる。ベンゾジアゼピンに害がない、ということではなく、そもそもリスクがあって、たまたま依存の対象がベンゾジアゼピンであった、アルコールであったという理解の方が実態には近い。

錠形

ドラマに登場する薬は架空のものかと思ったが、調べてみると10mg錠と配色がよく似ている。

f:id:iDES:20201127175338j:plain

f:id:iDES:20201127175346p:plain

大きさはドラマ中の方が大きいように思える。

日本におけるリブリウム

日本ではコントロール、バランスという名前で発売されている。

f:id:iDES:20201127175358j:plain

禁止薬物ではなく、日常的に処方されている薬である。ドラマからは、昔は売店にも売られていた薬だったが、依存性が高いので今は禁止されているという印象を受けるが、そういった薬ではない。

ja.wikipedia.org

性格とベンゾジアゼピン

As noted on page one of Tevis' book, American women of the early '60s presumably needed to "even their dispositions." https://screenrant.com/queens-gambit-pills-tranquilizers-real-fake-explained/

孤児院でリブリウムが処方されていた理由は説明されていないが、子どもたちを落ち着かせ、性格を穏やかにするためだと推測できる。原作者のテヴィスの本には上記の記述があるそうだ。

精神安定剤(tranquilizer)という名前がついているので、飲むと落ち着きそうな気もするが、ベンゾジアゼピンは、荒い気性がより荒くなり、興奮はより大きくなる可能性がある。ベンゾジアゼピンリストカットを悪化させることは比較的知られていることである。一般的に思われている精神安定剤(この言葉の字面としてイメージされるもの)と、実際の薬理作用が異なっているところである。

歴史

en.wikipedia.org

クロルジアゼポキシドは、1950年代半ばに合成された最初のベンゾジアゼピンである。当初はメタミノジアゼポキシド(methaminodiazepoxide)と呼ばれていた。1957年にはスイスのロシュ社より発売。1959年には2,000人以上の医師と20,000人以上の患者に使用された。「現在利用可能な精神安定剤、精神賦活剤や他の精神療法薬のいずれかとは化学的にも臨床的にも異なる」と説明されていた。急性および慢性のアルコール依存症、様々な精神病や神経症のために入院した42人の入院患者にクロルジアゼポキシドを投与した。大多数の患者では、不安、緊張、運動興奮が有意に減少した。最も効果があったのはアルコール依存症の患者であった。感情的要因を伴う潰瘍および皮膚病の両方がクロルジアゼポキシドによって減少したと報告されている。

1963年、国立精神衛生研究所中毒研究センターのカール・F・エッシグ(Carl F. Essig)は、メプロバメート、グルテチミド、エチナム酸塩、エチナム酸塩、エチクロルビノール、メチプリロン、クロルジアゼポキシドについて、その有用性が「ほとんど疑問の余地がない」薬物であると述べている。しかしエッシグはこれらの「新しい製品」を「中毒性のある薬物」としている。エッシグは、クロルジアゼポキシドの90日間の研究に言及し、68人の使用者の自動車事故率が通常の10倍であったと結論づけた。参加者の1日の投与量は5~100ミリグラムであった。

1963年には一般紙であるニューヨークタイムズベンゾジアゼピンの警告が掲載されていたようだ。事故率が高いという報告があるように、ベンゾジアゼピンを飲むと慎重さに欠けることがある。おそらく、チェスをプレイする上であまり良いことはない。

The Queen's Gambit Wiki

the-queens-gambit.fandom.com

共変量とカテゴリカルなDistal Outcomesを伴った潜在クラス分析[Mplus]

共変量とDistal Outcomesのある潜在クラス分析で、かつ、Distal Outcomesがカテゴリカルな場合の分析である。

モデル

f:id:iDES:20201126151948p:plain

コード

DATA:
    FILE = LCA_cat.dat;

VARIABLE: 
    NAMES = U1-U8 Y A B;
    USEVARIABLES = U1-U8 Y A B;
    CATEGORICAL = U1-U8 Y;
    CLASSES = C(3);

Analysis:
    Type = Mixture;
    STARTS = 0;

Model:
   %overall%
   c on B;
   Y on A;
   %C#1%
   Y on A;
   %C#2%
   Y on A;
   %C#3%
   Y on A;

CATEGORICALの中にYを入れておく。CATEGORICALの指定は従属変数だけなので独立変数の指定は不要。
仮想データを用いた例題なので開始値を0にしている。

結果

MODEL RESULTS
                                                    Two-Tailed
                    Estimate       S.E.  Est./S.E.    P-Value

Latent Class 1

 Y          ON
    A                  0.830      0.000    999.000    999.000

 Thresholds
    U1$1              -1.224      1.006     -1.217      0.224
    U2$1               0.718      1.721      0.417      0.676
    U3$1              -0.910      1.160     -0.785      0.433
    U4$1              -0.621      0.831     -0.748      0.455
    U5$1               1.796      3.291      0.546      0.585
    U6$1              26.329      0.000    999.000    999.000
    U7$1              -2.116      2.077     -1.019      0.308
    U8$1              -3.931     10.865     -0.362      0.718
    Y$1              -12.900      0.000    999.000    999.000

Categorical Latent Variables

 C#1        ON
    B               9047.383      0.000    999.000    999.000

 C#2        ON
    B                 77.074      0.000    999.000    999.000

Distal Outcomesへ回帰はクラスごとに算出(Y ON A)、潜在クラスへの回帰(C ON B)もクラスごとに算出される。潜在クラスへの回帰分析は参照カテゴリが必要なため、2つ値が出力されていて、この場合はC#3が参照カテゴリになっている。

Rでの仮想データの作成

仮想データの作成

set.seed(123)
U1 <- sample(0:1, 1000, replace=T,prob=c(0.4,0.6))
U2 <- sample(0:1, 1000, replace=T,prob=c(0.2,0.8))
U3 <- sample(0:1, 1000, replace=T,prob=c(0.5,0.5))
U4 <- sample(0:1, 1000, replace=T,prob=c(0.6,0.4))
U5 <- sample(0:1, 1000, replace=T,prob=c(0.3,0.7))
U6 <- sample(0:1, 1000, replace=T,prob=c(0.9,0.1))
U7 <- sample(0:1, 1000, replace=T,prob=c(0.5,0.5))
U8 <- sample(0:1, 1000, replace=T,prob=c(0.6,0.4))
y <- sample(0:1, 1000, replace=T,prob=c(0.2,0.8))
a <- sample(20:75, 1000, replace=T)
b <- sample(0:1, 1000, replace=T,prob=c(0.5,0.5))
d0<- cbind(U1,U2,U3,U4,U5,U6,U7,U8,y,a,b)
df <- as.data.frame(d0)

Mplusへの書き出し1

library(MplusAutomation)
variable.names(df) # 変数名を書き出し

Mplusへの書き出し2

prepareMplusData(df, filename="LCA_cat.dat", 
                keepCols=c("U1","U2","U3", "U4", "U5", "U6", "U7", "U8","y","a","b"),
                overwrite=T)

潜在クラス分析におけるBCH法-回帰補助モデル

前回に引きつづき潜在クラス分析におけるBCH法について。

http://www.statmodel.com/examples/webnotes/webnote4.zip

今回は共変量(X)を設定し、従属変数(Y)に回帰するモデルである。

データが見つからなかったのでRで仮想データ作成した。適当に乱数を発生させているので、分析内容には意味がない。作成方法はエントリの最後に記載している。

ステップ1

手順が少し複雑で2ステップで行う。一つ目のコマンドファイル?(.inp)を作成する。ファイル名は任意のものでよい。

TITLE:
    LCA BCH Method Step1

DATA:
    FILE = manBCH.dat;
VARIABLE: 
    NAMES = U1-U10 X Y;
    USEVARIABLES = U1-U10;
    CATEGORICAL = U1-U10;
    CLASSES = C(3);
    AUXILIARY = X Y;

ANALYSIS:
    TYPE = MIXTURE;
    
SAVEDATA:
    FILE = manBCH2.dat;
    SAVE = bchweights;

ウェブノートにもあるように、クラス数は3つ(CLASSES = C(3))である。
USEVARIABLESに入れるのは潜在クラス分析に使用するU1-U10だけである。CATEGORICALも同様である。
AUXILIARYは共変量Xと従属変数のYを入れておく。
SAVEDATAにはSAVE = bchweights;を入れる。これはBCHのウェイトを書き出して、ステップ2で使用するためである。

実行するとmanBCH2.datというファイルが生成される。manBCH2.datはもともとのデータファイルmanBCH.datのXの後にウェイトの変数W1, W2, W3とMLC(Multilevel Latent Covariate)が継ぎ足されたデータになっている。

ステップ2

ステップ2が実際の分析コードである。

TITLE:
    LCA BCH Method Step2

DATA:
    FILE = manBCH2.dat;
VARIABLE: 
    NAMES = U1-U10 Y X W1-W3 MLC;
    USEVARIABLES = Y X W1-W3;
    TRAINING = W1-W3(bch);
    CLASSES = C(3);

ANALYSIS:
    TYPE = MIXTURE;
    STARTS = 0;
    ESTIMATOR = MLR;

MODEL:
    %overall%
    Y on X;
    %C#1%
    Y on X;
    %C#2%
    Y on X;
    %C#3%
    Y on X;

ステップ2では潜在クラス分析のインジケーターであるU1-U10が含まれていない。
TRAINING = W1-W3(bch)がそれぞれのクラスのウェイトの変数であり、補助コマンドである(bch)がつけられている。
ANALYSISの中でStart=0;となっているのは複数グループの解析でランダム値は必要がないためだ。

結果

MODEL RESULTS

                                                    Two-Tailed
                    Estimate       S.E.  Est./S.E.    P-Value

Latent Class 1

 Y          ON
    X                 -0.829      6.076     -0.136      0.892

 Intercepts
    Y                464.431    217.155      2.139      0.032

 Residual Variances
    Y              33326.199   2144.244     15.542      0.000

Latent Class 2

 Y          ON
    X                  5.690     10.162      0.560      0.576

 Intercepts
    Y                343.382    370.228      0.927      0.354

 Residual Variances
    Y              33326.199   2144.244     15.542      0.000

Latent Class 3

 Y          ON
    X                 -0.425      0.783     -0.542      0.588

 Intercepts
    Y                485.161     41.606     11.661      0.000

 Residual Variances
    Y              33326.199   2144.244     15.542      0.000

Categorical Latent Variables

 Means
    C#1               -2.103      0.380     -5.529      0.000
    C#2               -2.299      0.441     -5.213      0.000

Rでの仮想データの作成

仮想データの作成

U1 <- sample(0:1, 1000, replace=T,prob=c(0.4,0.6))
U2 <- sample(0:1, 1000, replace=T,prob=c(0.2,0.8))
U3 <- sample(0:1, 1000, replace=T,prob=c(0.5,0.5))
U4 <- sample(0:1, 1000, replace=T,prob=c(0.6,0.4))
U5 <- sample(0:1, 1000, replace=T,prob=c(0.3,0.7))
U6 <- sample(0:1, 1000, replace=T,prob=c(0.9,0.1))
U7 <- sample(0:1, 1000, replace=T,prob=c(0.5,0.5))
U8 <- sample(0:1, 1000, replace=T,prob=c(0.6,0.4))
U9 <- sample(0:1, 1000, replace=T,prob=c(0.8,0.2))
U10 <- sample(0:1, 1000, replace=T,prob=c(0.55,0.45))
X <- sample(20:75, 1000, replace=T)
Y <- sample(150:800, 1000, replace=T)
d0<- cbind(U1,U2,U3,U4,U5,U6,U7,U8,U9,U10,X,Y)
df <- as.data.frame(d0)

Mplusへの書き出し1

library(MplusAutomation)
variable.names(df) # 変数名を書き出し

Mplusへの書き出し2

prepareMplusData(df, filename="manBCH.dat", 
                keepCols=c("U1","U2","U3", "U4", "U5", "U6", "U7", "U8", "U9", "U10","X","Y"),
                overwrite=T)

manBCH.datという仮想データが書き出される。

参考文献

潜在クラス分析におけるBCH法[Mplus]

Mplusのウェブノートが更新されていたようだ。

https://www.statmodel.com/examples/webnotes/webnote21.pdf

BCH法の例

U1からU8で構成されている潜在変数CCを独立変数としてYに回帰させるモデル。Cのクラスは4カテゴリ。データファイルはウェブ上にはなかったので、実際に分析はしていない。

モデル

f:id:iDES:20201122165956p:plain

コード

Variable:Names are U1-U8 Y;
Categorical = U1-U8;
Classes = C(4);
Auxiliary = Y(bch);
Data: file=a1.dat;
Analysis:  Type = Mixture;

結果

f:id:iDES:20201122170006p:plain

参考リンク

ides.hatenablog.com

中華娯楽週報 第4回:アニメ「EVIL OR LIVE」から中国の苛烈な“ネット中毒者改造”を見る(IGN Japan)

jp.ign.com

eスポーツチームが「ならず者」としてマンションを追い出される

2017年8月、「League of Legends」の公式世界大会への出場を決めた香港の名門eスポーツチーム「HKA」。12月には台湾でマンションの賃貸借契約をしたが、“ならず者”と見なされて実力行使で入居を阻止された。

楊永信

中国には楊永信(よう・えいしん)という、国家の信頼を受けてネット中毒者に強制治療を積極的に行っている、現在55歳の有名な精神科医がいる。この楊先生は「全国的ネット中毒治療専門家」(全國戒網癮專家)として、絶えず物議を醸している人物だ。山東省の臨沂市にある大病院「臨沂市第四人民医院」の副院長だけではなく、同病院内に設置されている「楊永信ネット中毒治療センター」(楊永信網絡成癮戒治中心)のセンター長も務めている。楊氏が全国的に有名なのは、彼自身の名前を冠したネット中毒治療センター(以下「楊永信センター」)のトップとしてである。
そもそも漫画「理想禁区」の掲載開始時のタイトルは「網癮禁區」、つまり「ネット中毒(網癮)の立入禁止区域」という直球のものだった。楊永信センターをはじめ、中国には同様のネット中毒者の強制再教育施設が非常に多く、親世代など“大人”には評判が良い一方、若者からは忌み嫌われている。楊永信はその代表的人物であり、そのセンターも全国で最も有名で、最も“権威”があり、そして最も多くの問題が告発されている施設として非常に悪名高い。「理想禁区(網癮禁區)」のモデルとなったのは、まさにこの楊永信センターである。

f:id:iDES:20201122140136j:plain

楊永信センターをはじめ、全国各地にある矯正施設の入所者は軍事訓練を受け、軍隊的な規律を要求される。身体的訓練の他、「心理指導」と呼ばれる根性重視のスパルタ的なレッスンを受けさせ、孔子の「論語」など“善”を説く中国の古典を大量に暗記させるところもある。体罰が日常茶飯事であり、1人がルールを破ったり古典の暗唱に失敗したりすると、クラス全員が罰を受けるといった「連座」に関する告発もされている。体罰にはムチなど、身体に大きな傷害を与える道具を用いるものも含まれるという。

他にも多くの非人道的な措置が判明しており、猟奇的にそれらを羅列していくとキリがない。中国におけるネット中毒とその“治療”にまつわる問題群は、このコラムの10回分が書けるくらい複雑なものなのだが、読みやすさを考慮して極力コンパクトにしたいと思う。強制矯正施設での“指導”と“治療”の過酷さを至極簡潔に説明することができる――これまで、死亡事件が頻繁に発生しているのだ。例えば2017年8月、中国東部の安徽省の施設に入所していた18歳の少年が死亡したニュースは全国的に注目された。少年の死因は明かされなかったが、両親が独自に検死を頼んだ医師によると、数十箇所の外傷があり、内臓損傷もあるという。
他にも2009年に広西省、2014年に河南省、2017年に陝西省などで少年・少女らが殴打や自殺による死を遂げている。2017年11月には、江西省南昌市の施設で複数の入所者が歯磨き膏や洗剤を呑み込んで自殺を図ったが、外部に知られることを恐れた施設は重症の患者らを病院から無理矢理連れ戻したことが告発された。この事件がきっかけとなり、「中国にはいったい何人の楊永信がいるのか」と全国的に広い議論が巻き起こった。その結果、当該施設は2017年末に閉鎖されることとなった。

vcdパッケージでKappaと重みづけKappaを計算する[R]

コーエンのκ係数(Cohen's kappa)と重みづけκ係数(Weighted kappa)の計算をRのvcdパッケージで行う。 irrパッケージは通常の個票データからの計算が想定されているが、vcdパッケージはクロス表からの計算を想定して作られている。

データ

anxiety <- as.table(
  rbind(
    c(11, 3, 1, 0), c(1, 9, 0, 1),
    c(0, 1, 10, 0 ), c(1, 2, 0, 10)
  )
)
dimnames(anxiety) <- list(
  Doctor1 = c("Normal", "Moderate", "High", "Very high"),
  Doctor2 = c("Normal", "Moderate", "High", "Very high")
)
anxiety

anxietyのデータは次のようなもの。順序尺度である。

           Doctor2
Doctor1     Normal Moderate High Very high
  Normal        11        3    1         0
  Moderate       1        9    0         1
  High           0        1   10         0
  Very high      1        2    0        10

vcdパッケージ

www.rdocumentation.org

Kappaと重みづけKappaの計算

library("vcd")
# Compute kapa
res01 <- Kappa(anxiety, weights = "Equal-Spacing")
res02 <- Kappa(anxiety, weights = "Fleiss-Cohen")
res01
res02

結果。

Equal-Spacing

            value     ASE     z  Pr(>|z|)
Unweighted 0.7335 0.07524 9.748 1.873e-22
Weighted   0.7475 0.07910 9.449 3.409e-21

Fleiss-Cohen
            value     ASE     z  Pr(>|z|)
Unweighted 0.7335 0.07524 9.748 1.873e-22
Weighted   0.7664 0.09022 8.494 1.989e-17

信頼区間の計算

# Confidence intervals
confint(res01, level = 0.95)

結果。

Kappa              lwr       upr
  Unweighted 0.5860073 0.8809436
  Weighted   0.5924352 0.9025143

サマリ

summary(res01)

結果。

            value     ASE     z  Pr(>|z|)
Unweighted 0.7335 0.07524 9.748 1.873e-22
Weighted   0.7475 0.07910 9.449 3.409e-21

Weights:
          [,1]      [,2]      [,3]      [,4]
[1,] 1.0000000 0.6666667 0.3333333 0.0000000
[2,] 0.6666667 1.0000000 0.6666667 0.3333333
[3,] 0.3333333 0.6666667 1.0000000 0.6666667
[4,] 0.0000000 0.3333333 0.6666667 1.0000000

重みづけの比較

Equal-Spacing
Weights:
          [,1]      [,2]      [,3]      [,4]
[1,] 1.0000000 0.6666667 0.3333333 0.0000000
[2,] 0.6666667 1.0000000 0.6666667 0.3333333
[3,] 0.3333333 0.6666667 1.0000000 0.6666667
[4,] 0.0000000 0.3333333 0.6666667 1.0000000

Fleiss-Cohen
Weights:
          [,1]      [,2]      [,3]      [,4]
[1,] 1.0000000 0.8888889 0.5555556 0.0000000
[2,] 0.8888889 1.0000000 0.8888889 0.5555556
[3,] 0.5555556 0.8888889 1.0000000 0.8888889
[4,] 0.0000000 0.5555556 0.8888889 1.0000000

元ネタ。
https://www.datanovia.com/en/lessons/weighted-kappa-in-r-for-two-ordinal-variables/

参考エントリ

ides.hatenablog.com

ides.hatenablog.com