井出草平の研究ノート

カリフォルニア州で検討されている子どものSNS依存症予防を名目に検閲(Editorial Judgment)が可能な法案AB-2408の全文翻訳

現時点での全文翻訳である。
この法律は司法委員会を通過している。法律として成立するには上院歳出委員会とカリフォルニア州上院を通過する必要がある。提出は先のエントリ(参照)で書いたように共和党カニングハム議員である。カルフォルニア州では上下院との圧倒的に民主党員が多い(参照)。共和党vs.民主党の対立構図になれば、通らないだろうが、この法案に民主党から賛同者が現れることも考えられるので、注視していきたい。


leginfo.legislature.ca.gov

AB-2408 ソーシャルメディア・プラットフォーム:子供ユーザー:嗜癖(2021-2022)

公開日:2022年06月30日 09時00分

2022年6月30日上院で修正
上院での修正 2022年6月20日
議会での修正案 2022年5月4日
2022年3月24日、連邦議会で修正

カリフォルニア州議会-2021-2022年通常会期

カニンガム、ウィックス両議員により提案された。

2022年2月17日

Business and Professions法に、ソーシャルメディアプラットフォームに関する17052条を追加する法律。

法制局(Legislative Counsel)による要約

AB 2408 修正版 カニンガム ソーシャルメディアプラットフォーム:子供ユーザー:嗜癖   既存法である2018年カリフォルニア消費者プライバシー法は、事業者が消費者が16歳未満であることを実際に知っている場合、13歳以上16歳未満の消費者の場合は消費者が、13歳未満の消費者の場合は消費者の親または保護者が、消費者の個人情報の販売を肯定的に承認していない限り、消費者の個人情報を販売することを禁止している。

既存の法律である不正行為防止法は、特定の商習慣を違法とし、競争の維持と規制、不公正な取引方法の禁止、広告の規制などを目的として、様々な事業を規制している。 本法案は、ソーシャルメディアプラットフォームの子どもに対する義務に関する法律であり、ソーシャルメディアプラットフォームが、子どものユーザーをそのプラットフォームに依存させることを知りながら、あるいは合理的な注意を払うことで知るべきであったデザイン、機能、アフォーダンスなどを用いることを禁止するものである。この法律は、司法長官、地方検事、郡弁護士、市弁護士が、故意の違反に対して最高25万ドルの民事罰、訴訟費用および弁護士報酬を含む一定の救済を回復または得るために訴訟を起こすことを認めるものである。本法案では、ソーシャルメディアプラットフォームが一定の要件を満たしていることを証明すれば民事罰の対象外とし、前暦年の総収入が1億ドル未満である事業体によって管理されている、またはユーザーがビデオゲームをプレイすることが主な機能であるソーシャルメディアプラットフォームは免除されるとしている。

投票数:過半数、歳出予算:なし、財務委員会:あり、ローカルプログラム:なし


カリフォルニア州民は、次のように制定する。

第1項 この法律は、ソーシャルメディア・プラットフォームの子供に対する義務に関する法律と称する。

第2項 立法府は、以下のすべてを発見し、宣言する。

(a) カリフォルニア州は、子供たちがいかなる種類の嗜癖によっても害されないようにするため、合理的でふさわしく、効果的な措置を講じるべきである。

(b) 依存症分野の心理学者、精神科医、科学者、医師、その他の研究者の広範な多様性が、ソーシャルメディア嗜癖の存在を認めている。
(1) ソーシャルメディアプラットフォーム嗜癖の指標として広く使われているベルゲンソーシャルメディア嗜癖尺度 Bergen Social Media Addiction Scale を用いた研究により、ソーシャルメディアプラットフォーム嗜癖の一般人口における有病率は約5%であることが判明している。
(2) 嗜癖になった人の脳では、ソーシャルメディアを使用する際に、嗜癖でない人の脳よりも報酬系が活性化するそうである。その結果、健康専門家や研究者によると、強迫的で過剰なソーシャルメディアの利用が発生する。

(c) ソーシャルメディア・プラットフォーム嗜癖は、特に思春期の子どもたちの間で問題になっているという証拠が増えてきている。
(1) 世界最大のソーシャルメディアプラットフォーム企業が独自に行った極秘の内部調査により、子どものソーシャルメディア嗜癖の存在と、ソーシャルメディア嗜癖が子どもを傷つけることの両方が検証された。一例として、2021年9月、ウォールストリート・ジャーナルは、"The Facebook Files "と呼ばれる一連の記事を掲載した。それらの記事は、内部告発者であるFrances Haugenから入手した内部文書の山を引用し、Facebookがそのプラットフォームがユーザー、特に子どもに大きな害をもたらすことをどの程度知っているかを実証した。
(2)より具体的には、Haugenの議会での宣誓証言と、それに付随して彼女がThe Wall Street Journalに明かした秘密調査によって明らかになったように、「Facebookは、問題ある利用、より一般的には嗜癖と呼ぶべきパターンを研究してきた。Facebookが考える[問題ある使用]とは、非常に高い基準を持っている。それは、自分の使い方をコントロールできず、健康や学業、身体的な健康を著しく害していると自己申告していることを意味する。... "Facebookの内部調査では、Instagramで子供が直面する様々な問題があることを認識している、彼らは深刻な被害が子供たちに起こっていることを知っている。"
(3) 内部告発者Haugenの議会での宣誓証言で、プラットフォームの嗜癖的な定義である「問題ある利用」に該当する場合、次のようなことが明らかになった。14歳の子供の5~6パーセントは、問題のある使用と認定される「これらの質問の両方を認める自己認識を持っている」。
(4) インスタグラムの児童ユーザーの5~6パーセントとは、数百万人の児童であり、そのうちの何千人がカリフォルニアに居住していることは確かである。

(d) ソーシャルメディア・プラットフォーム嗜癖は、男子よりも女子の方が深刻である。 (1) 女子は男子よりもソーシャルメディア嗜癖の有病率が高い。
(2) ソーシャルメディアプラットフォームの過剰な利用を認める女子は、ソーシャルメディアプラットフォームを軽く利用する女子に比べて、2~3倍、うつ病であると報告する可能性が高い。
(3) 2020年3月にFacebookの研究者がFacebookの社内掲示板に投稿したプレゼンテーションでは、「IG(訳注:Instagramの略称)を利用している10代の少女の66%がネガティブな社会的比較を経験している(10代の少年は40%)」「Instagramのさまざまな側面がお互いを悪化させ、最悪の事態を作り出す」と報告された。

(e) 一部のソーシャルメディアプラットフォーム企業のビジネスモデルは、子どもを含むすべてのユーザーの嗜癖の可能性を高める設計機能を展開するよう金銭的に動機づけている。
(1) サインアップに課金する代わりに、ソーシャルメディア・プラットフォームは広告を通じてその収益の「実質的にすべて」を得ている。
(2) ユーザーがプラットフォームに関わる時間が長ければ長いほど、ユーザーが目にする広告の数は増え、広告の価値は高くなる。
(3)この点で、嗜癖消費者は、その消費行動が通常の関与レベルを超えているため、特に収益性が高い。
(4) このような利益重視の理由から、ソーシャルメディアプラットフォーム企業は、ギャンブルで用いられる手法や、ユーザーに利用停止を促す可能性のある合図を隠したり回避したりする手法を展開するなど、ユーザーがプラットフォームの利用をやめにくくすることを意図した機能を意図的に考案、設計、展開している。

(f) タバコを含む大量の依存性のある製品を販売する企業は、生涯にわたって潜在的に若年の消費者を依存させる特別なインセンティブを持っている。

(g) 青年期の子どもは、ソーシャルメディア・プラットフォームの嗜癖になるリスクが大人よりはるかに高い。
(1) 青年期の子どもは、より高いレベルのストレスを示し、リスクを取る傾向が強くなる。
(2)思春期の子どもは、報酬系の発達が早く、自制心系は21歳まで完全に発達しない。そのため、思春期は大人に比べて行動嗜癖の割合が高くなる。
(3)ソーシャルメディアプラットフォーム企業は、収集した子どものデータから、ある広告の影響を受けやすい子どもを判断し、嗜癖のリスクを悪化させることができる。
(4)大人と比較して、子どもは広告の圧力や影響を受けやすく、有料コンテンツを認識しにくく、これらの目的のためにデータがどのように使用されているかを理解する可能性が低い。

(h)子どもは脳がまだ発達途上であるため、ソーシャルメディアプラットフォーム嗜癖によって害を受けるリスクは大人よりはるかに大きい。嗜癖は、脳の判断力、注意力、記憶力の発達に悪影響を及ぼしている。
(1)ソーシャルメディアプラットフォームを毎日チェックする割合が高くなると、記憶、感情、発話、意思決定、自制心を司る脳組織の体積が減少することが分かっている。
(2)そのため、この種の脳組織の減少は、子どもや青年がその若さゆえにすでに影響を受けやすい、衝動性の高まりと相関している。
(3) いくつかの研究で、ソーシャルメディアプラットフォームに費やす時間と、10代の若者の自殺やうつ病の発生率との間に関連性があることが分かっている。
(4) ソーシャルメディア・プラットフォームの使用を減らすと、精神的な健康がもたらされることを示す研究が多数ある。
(5) ソーシャルメディア・プラットフォーム嗜癖は、内気で孤独な若者にとって悪循環を生む可能性がある。現実世界での交流に対する不快感はインターネットでの交流につながり、現実世界での交流からの孤立は孤独感を引き起こし、孤独感と社会恐怖が相まって、オンラインでのさらなる交流を促す。

(i) ソーシャルメディア・プラットフォーム企業が、そのソーシャルメディア・プラットフォームにおいて、子どものユーザーを含むユーザー向けに、子どもにとって嗜癖性があることを知っているか知っておくべき機能を作成、設計、実装、維持する場合、その結果生じる害に対して責任を負うべきである。

(j) ギャンブル依存症を含む他の嗜癖は、州経済に実証的な悪影響を及ぼしている。

(k) カリフォルニア州は、少なくとも以下のすべての理由により予見可能なソーシャルメディア・プラットフォームの嗜癖から子どもの精神衛生を保護することに、差し迫った利害関係を有する。 (1) カリフォルニアの子供とその家族への無用な苦痛を防ぐため。
(2) カリフォルニアのすべての人々の利益のために、すべての子供がその潜在能力を発揮し、社会的および教育的達成のための通常の目標を達成する能力を確保すること。
(3) カリフォルニア州の家庭、企業、保険会社、学校、精神衛生専門家が、子どもの精神衛生上の害を治療するための費用を負担し、負担を転嫁することを防止する。


第3項 Business and Professions法に17052条を追加し、以下の通りとする。

17052

(a) ソーシャルメディアプラットフォームは、プラットフォームが知っていた、または合理的な注意の行使によって知るべきであった、児童ユーザーをプラットフォームに嗜癖させるデザイン、機能、またはアフォーダンスを使ってはならない。

(b) 本条に基づく救済のための訴訟は、司法長官、または第17204条に記載の地方検事、郡検察官、もしくは市検察官によってのみ起訴することができる。

(c) 第 17204 条および第 17206 条に基づく救済または罰則を含む第 5 章(第 17200 条から開始)に従って利用できる他の救済に加え、(a) 細則に違反した者は、故意の違反の場合、違反ごとに 25 万ドルを超えない追加の民事罰、および訴訟費用と弁護士報酬の裁定に責任を負う可能性がある。

(d) ソーシャルメディアプラットフォームは、積極的抗弁として、以下の両方を行ったことを証明する場合、(a)項の違反に対して本条または第17206条に基づく民事罰の対象とならないものとする。
(1) 児童ユーザーの嗜癖を引き起こしまたは助長する可能性のある慣行または機能を検出するために、その慣行、設計、機能およびアフォーダンスを少なくとも四半期ごとに監査するプログラムを導入し、維持すること。
(2) (1)の監査が完了してから30日以内に、監査によって発見された、本項に違反するリスクが極小である以上の慣行、設計、特徴、アフォーダンスについて是正すること。  

(e) 本節の規定は、他の法律の下で課された他の義務または責務に対して累積的なものである。

(f) 本条は、以下のいずれについても、ソーシャルメディア・プラットフォームに責任を課すものと解釈してはならない。
(1) サービスのユーザーによって生成され、またはサービスのユーザーによってサービスにアップロードされ、または共有されたコンテンツで、サービスの他のユーザー、または他のユーザーが遭遇する可能性があるもの。
(2) 第三者によって全て作成されたコンテンツを受動的に表示すること。
(3) ソーシャルメディアプラットフォームが、その全部または一部を問わず、作成または開発に責任を負わない情報またはコンテンツ。
(4) アメリカ合衆国法のタイトル47のセクション230(https://www.law.cornell.edu/uscode/text/47/230)、またはアメリカ合衆国憲法修正第1条もしくはカリフォルニア州憲法第1条のセクション2を解釈する判例法の適用により保護される、児童ユーザーを含むソーシャルメディア・プラットフォームによるあらゆる行為。

(g) 本条は、本条発効前に存在した法律の下でソーシャルメディアプラットフォームに対して存在した可能性のある、または存在する訴因を否定または制限するものと解釈してはならず、2022年立法会法案2408(CunninghamおよびWicks)の立法経緯のいかなる部分も、本条に基づいて提起されていないいかなる請求または訴因に対しても立法意図を示す証拠として使用または許容されるものであってはならない。

(h) 本節の規定は分離可能である。本節のいずれかの条項またはその適用が無効とされた場合、その無効は、無効な条項または適用なしに効果を与えることができる他の条項または適用に影響を与えないものとする。

(i) 本節の権利放棄は、公序良俗に反する無効なものとして執行不能である。

(j) 本節の目的上、以下の事項が適用される。
(1) 「嗜癖Addicted」 とは、故意または過失により、何らかの作為または不作為、あるいはそれらの組合せによって嗜癖Addictionを引き起こすことを意味する。 (2)「嗜癖Addiction」とは、以下の両方を行う1つまたは複数のソーシャルメディア・プラットフォームの使用を意味する。
(A) ソーシャルメディア・プラットフォームの使用を中止または削減したいにもかかわらず、その使用に対する先入観または執着、あるいは撤退または中止または削減の困難さを示すこと。
(B)利用者に身体的、精神的、感情的、発達的、または物質的な危害を与えるものであること。
(3) 「児童ユーザー」とは、ソーシャルメディア・プラットフォームを利用する、18歳未満の者をいう。
(4)
(A)「コンテンツ」とは、インターネット上のサービスまたはアプリケーション上でユーザーが作成、投稿、共有、またはその他の方法で相互作用するユーザーおよびメディアによる発言またはコメントを意味する。
(B)「コンテンツ」には、クラウドストレージ、文書送信、またはファイルコラボレーションのみを目的としてオンラインに置かれたメディアは含まれない。
(5)「ソーシャルメディアプラットフォーム」とは、カリフォルニア州にユーザーがいて、以下の基準をすべて満たす、公開または半公開のインターネットベースのサービスまたはアプリケーションを意味する。
(A) サービスまたはアプリケーションの実質的な機能が、サービスまたはアプリケーション内でユーザー同士が社会的に交流できるようにユーザーを接続することであること。
(B) 電子メールまたはダイレクトメッセージサービスを提供するサービスまたはアプリケーションは、その機能だけでは本基準を満たすとはみなされない。
(C)サービスまたはアプリケーションによって、ユーザーは以下のすべてを行うことができる。
(i) サービスにサインインして使用する目的で、公開プロファイルまたは半公開プロファイルを構築すること。
(ii) 個人が社会的なつながりを共有する他のユーザーのリストをシステム内に入力すること。
(iii) メッセージボード、チャットルーム、または他のユーザが生成したコンテンツをユーザに提示するランディングページ(訳注:外部からウェブサイトにアクセスする際に、最初に開くページ)やメインフィードなど、他のユーザが閲覧可能なコンテンツを作成または掲載すること。
(6) 「公共または半公共のインターネットベースのサービスまたはアプリケーション」は、事業または企業の従業員または関連会社間の事業または企業内のコミュニケーションを促進するために使用されるサービスまたはアプリケーションを除く。ただし、当該サービスまたはアプリケーションへのアクセスが、当該サービスまたはアプリケーションを使用する事業または企業の従業員または関連会社に限定されている場合は、この限りではない。

(k) 本条は以下のものには適用されない。
(1) 前暦年の総収入が1億ドル($100,000,000)未満の事業体が管理するソーシャルメディア・プラットフォーム。
(2) ユーザーがビデオゲームをプレイすることを主機能とするソーシャルメディア・プラットフォーム。

傾向スコアによる重み付けを行うPSweightパッケージの概要説明[R]

cran.r-project.org

こちらの3章の翻訳。

https://cran.r-project.org/web/packages/PSweight/vignettes/vignette.pdf


3.パッケージの概要
PSweightパッケージには、観察研究のデザインと分析に特化した2つのモジュールが含まれている。 デザインモジュールは、傾向スコアモデルと重み付けされた対象集団の妥当性を、結果データを使用する前に評価するための診断機能を提供する。解析モジュールは、セクション2で議論した因果関係の推定値を推定する機能を提供する。この2つのモジュールについて、以下に簡単に説明する。

3.1. Design モジュール PSweightはSumStat()関数を用いて、推定された傾向スコアの分布を可視化し、異なる重み付けスキームにおける共変量のバランスを評価し、重み付けされた対象集団の特徴を示すことができます。以下のコードスニペットを使用する。

SumStat(ps.formula, ps.estimate  = NULL, trtgrp = NULL, Z = NULL, covM = NULL,
+          zname = NULL, xname = NULL, data = NULL, weight = "overlap", delta = 0,
+          method  = "glm", ps.control  = list())

デフォルトでは、引数ps.formulaを通じて、(一般化)傾向スコアが(多項)ロジスティック回帰によって推定される。あるいは,gbmパッケージのgbm()関数(Greenwell, Boehmke, Cunningham, and Developers 2019)またはSuperLearnerパッケージのSuperLearner()関数(Polly, LeDell, Kennedy, and van der Laan 2019)も method = "gbm" または method = "SuperLearner" で呼ぶことができる。これらの関数の追加のパラメータは、ps.control引数を通じて提供することができる。引数ps.estimateは、外部ルーチンからの推定傾向スコアをサポートする。SumStat()は、推定傾向スコア、各治療群の非加重および加重共変量平均、バランス診断、有効サンプルサイズ(Li and Li (2019)で定義)を持つSumStatオブジェクトを生成する。そして、SumStatオブジェクトを受け取り、治療群別の重み付き共変量平均とASDまたはPSDのいずれかの群間差を要約するsummary.SumStat()関数を提供する。デフォルトのオプションであるweighted.var = TRUEとmetric = "ASD" は、Austin and Stuart (2015) の重み付き標準偏差に基づくASDをもたらす。重み付けされた共変量平均は、トリミングまたはバランシングの重みが適用される対象集団を説明するために、ベースライン特性「表1」を構築するために使用することができる。

summary(object, weighted.var  = TRUE, metric = "ASD")

傾向スコアモデルの診断は、plot.SumStat()関数で可視化することができる。これは、SumStatオブジェクトを受け取り、ASDとPSDに基づいたbalance plot (type = "balance")を生成する。垂直破線はthreshold引数で設定でき、default値は0.1に等しくなる。plot.SumStat()関数は、密度プロット(type = "density")も提供することができる。
推定された傾向スコアのヒストグラム(type = "hist")を提供することもできる。しかし,ヒストグラムは、バイナリ処理の場合のみ利用可能である。plot関数は次のように実装されている。

plot(x,  type = "balance",  weighted.var = TRUE, threshold = 0.1,
+          metric = "ASD")

設計段階では、傾向スコアのトリミングはPStrim()関数で行うことができる。トリミングの閾値Δはデフォルトで0に設定されている。PStrim()は、可能なすべてのトリミング・ルールの中で、最も統計的に有効な(ペアワイズ)部分集団ATEを与える最適トリミング・ルール (optimal = TRUE)も有効にする。トリミングされたデータセットとトリミングされたケースのサマリーがPStrim()によって返される。 この関数を以下に示す。

PStrim(data,  ps.formula = NULL, zname = NULL, ps.estimate = NULL,
+          delta = 0, optimal = FALSE, method  = "glm", ps.control  = list())

また、トリミングはSumStat()関数の中でデルタ引数で固定されている。設計モジュールの全関数を表4にまとめた。

  • SumStat() 傾向スコアと重み付き共変量バランスの情報を持つSumStatオブジェクトを生成する。
  • summary.SumStat() SumStat オブジェクトを要約し、ASD または PSD における治療群別の加重共分散平均と加重または非加重群間差異を返す。
  • plot.SumStat() SumStat オブジェクトから傾向スコアまたは重み付き共変量バランスメトリクスの分布をプロットする。
  • PStrim() 推定された傾向スコアに基づいてデータセットをトリミングする。

3.2. 解析モジュール
PSweightの解析モジュールには2つの関数がある。PSweight()とsummary.PSweight()である。PSweight() 関数は,対象母集団における平均的な潜在的結果を推定する。 {\mu_{j}^{h}, j = 1..., J},および関連する分散共分散行列を推定する。デフォルトでは、経験的なサンドイッチ分散が実装されているが、ブートストラップ分散を得るには、引数 bootstrap = TRUEでブートストラップ分散を得ることができる。重みの引数は "IPW", "treated", "overlap", "matching", "entropy "で、第2節で紹介した重みに相当するものである。PSweight() 関数の各入力引数の詳細な説明は,表5を参照されたい。典型的なPSweight()のコードスニペットは以下の通りである。

PSweight(ps.formula, ps.estimate, trtgrp,  zname,   yname,  data,
+          weight = "overlap", delta = 0,  augmentation = FALSE, bootstrap = FALSE,
+          R  = 50,   out.formula = NULL, out.estimate = NULL, family = "gaussian",
+          ps.method = "glm", ps.control  = list(), out.method = "glm",
+          out.control = list())

designモジュールと同様に、summary.PSweight()関数はPSweightオブジェクトから情報を合成し、統計的推論を行う。典型的なコードスニペットは次のようになる。

summary(object, contrast,  type = "DIF", CI  = TRUE)

type = "DIF" はデフォルトの引数で,加法的因果関係の対比を指定する。type = "RR" は (2.10) 式のように対数スケールでの対比を指定する。type = "OR" は (2.11) 式のように対数オッズスケールでの対比を指定する。信頼区間とp値は正規近似を用いて求められ、summary.PSweight()関数によって報告される。引数contrastは、contrastベクトルaまたは複数のcontrast行ベクトルからなる行列を表す。contrastが指定されない場合、summary.PSweight()は平均的な潜在的な結果の全てのペアワイズ比較を提供する。デフォルトでは、信頼区間が表示されます (CI = TRUE); 代わりに、CI = FALSEによって、テスト統計とp値を表示することもできる。

カリフォルニア州で子どものSNS依存症予防を名目に検閲(Editorial Judgment)が可能な法案が通過するかもしれない

最近、問題になっているカリフォルニア州の法案修正版AB2408について。

leginfo.legislature.ca.gov

依存症を引き起こすなど問題があるとしてソーシャルメディア企業に対して損害賠償請求ができるというものである。修正案は、保護者が訴訟を行うのではなく、代わりに検察官が最大25万ドルの損害賠償請求ができるという点である。

法律的に問題になっているのは米国憲法修正第1条の「表現の自由報道の自由、平和的に集会する権利、請願権を妨げる法律を制定することを禁止する」という点に違反するのではないかということだ。

つまり、ソーシャル・メディアにコンテンツが依存症を生み出すと検察官が判断し、警告を与えると企業は修正せざるを得なくなる。30日以内に修正すれば訴訟にはならないという条件が付けられているからだ。

この法律は編集判断の侵害、つまり検閲に相当するという指摘がされている。

また、ソーシャルメディア批判をしている人々はソーシャルメディア全体が依存性があると主張している点である。その主張が通る場合には、サービスを停止しなくてはいけない。

法律を提出している共和党Jordan Cunningham氏

en.wikipedia.org

法案ではFacebookを名指しでボロカスに言っているが、ちゃんとFacebookページもある。

www.facebook.com

Facebookは政治家にとっても有用なツールであるため、標的になるのはInstagramTiktokだろうと推測できる。Instagramの問題が法案の中でとうとうと語られているのでInstagramが標的とされているのは間違いないだろう。Tiktokは中国資本であるため言及がさけられているようだ。


カリフォルニア州ソーシャルメディア依存症法案改正で親の訴訟取り下げ

www.cbsnews.com

サクラメントカリフォルニア州議会は、ソーシャルメディア企業が自社の製品に依存した子どもに危害を加えた責任を問うことを目的とした初の法案を提出したが、InstagramTikTokといった人気のプラットフォームを親が訴えることはできなくなった。

修正版の「Assembly Bill 2408」は、子どもが嗜癖になる可能性があるとわかっている機能を使用したソーシャルメディア企業に、違反1回につき最高25万ドルの損害賠償責任を負わせることに変わりはない。しかし、ソーシャルメディア企業に対する訴訟を起こすのは、保護者ではなく、検察官に限られることになる。この法案は先月修正されたとCalMattersは木曜日に報じている。

法案の提出者である共和党カニンガム下院議員は、上院での可決に必要な票数を確保するためにこの法案を修正したという。カニンガム上院議員は、多くの議員が「新しいタイプの訴訟を起こすことに神経質になっている」と述べている。

"彼らはそれが軽薄な請求への門戸を開くことを恐れて得る "とカニンガム氏は述べています。「この種の消費者保護的なことは、検察が率先してやってくれるから、安心して任せられるようだ。

改正法案は州議会でより多くの票を獲得できるかもしれないが、カリフォルニアに本社を置くソーシャルメディア企業の多くは反対を続けている。技術系のCEOや上級管理職で構成されるTechNetは、ソーシャルメディア上のコンテンツ(人々がアップロードした言葉、写真、ビデオ)と、企業がそのコンテンツを配信するために使用している機能(プッシュ通知、ニュースフィード、投稿を延々とスクロールする機能など)を切り離すことはほとんど不可能だと述べている。

カリフォルニアと南西部を担当するTechNetのエグゼクティブ・ディレクター、ディラン・ホフマン氏は、「憲法修正第1条の権利と編集の裁量を侵害するものだと思う。"問題の原因となりうるのはその根底にあるコンテンツなのに、機能を特定するのは筋が通らない"。」

ホフマン氏によれば、ソーシャルメディア企業は、子どものソーシャルメディア利用という、彼が「実に困難で複雑な問題」と呼ぶものに対処するために、多くの新機能を導入している。多くのプラットフォームでは、親が子どもに時間制限を設けたり、特定の機能を無効にしたりすることができる。

「この分野では、親と子供がソーシャルメディアの利用をよりよくコントロールできるようにするために、多くのイノベーションが起こっている」とホフマン氏は述べている。

この法案では、ソーシャルメディア企業が四半期ごとに機能の監査を行い、有害な製品が子供たちを嗜癖にさせると知ってから30日以内に削除すれば、これらの訴訟の対象から除外されることになっている。

ニュースフィードやコンテンツを提案するアルゴリズムなど、ソーシャルメディアのアプリやウェブサイトに関するほぼすべてが嗜癖性を持っていると擁護派は主張しているため、この法案では企業をほとんど保護できないとホフマン氏は言う。

ホフマン氏は、企業が責任を回避するためには、30日以内にウェブサイト全体を解体しなければならないが、それは「不可能」であると述べた。

カニンガム氏はこの議論を否定し、この法案はソーシャルメディア企業に、罰則を避けるために自分たちを取り締まるインセンティブを与えることになるという。カニンガム氏によれば、他のほとんどの製品は、危険とわかっている製品を販売した企業を訴えることができる消費者保護法の対象になっているという。

カニンガム氏 は「新しいソーシャルメディアのプラットフォームには適用しておらず、彼らが私たちの子供の脳に対してこのような社会的実験を行っているとは知らなかった」 と述べている。「彼らには変化しようという動機がない」 。

この法案は、今年の議会でソーシャルメディア企業をターゲットにしたいくつかの提案のうちの一つである。

民主党ジェシー・ガブリエル下院議員による下院法案587は、ソーシャルメディア企業に対し、問題のあるコンテンツを削除するための方針を公開し、いつ、どのように削除したかを詳細に説明するよう求めるもの。 https://leginfo.legislature.ca.gov/faces/billTextClient.xhtml?bill_id=202120220AB587

上院議員トム・アンバーグ(民主党)による上院法案1056は、ソーシャルメディアで暴力的な投稿をされたカリフォルニア州民が、その投稿を削除するよう裁判所命令を求めることを認めるもの。 https://leginfo.legislature.ca.gov/faces/billNavClient.xhtml?bill_id=202120220SB1056

また、バフィ・ウィックス議員(民主党)による議会法案2273 は、企業がオンラインで子ども向けにマーケティングを行う際に、一定の基準を満たすことを義務付けるもの。 https://leginfo.legislature.ca.gov/faces/billNavClient.xhtml?bill_id=202120220AB2273

順序ロジスティック回帰分析をStata、Mplus、Rで行う[Stata][Mplus][R]

この更新は更新されています。

ides.hatenablog.com

brant検定がうまくいかないデータで走らせたかったので、Richard WilliamsのGologit2で使用されているデータを使用した。 解析例は下記のPDF内にあるものと基本的に同じである。

https://www.stata.com/meeting/4nasug/gologit2.pdf

Stata

標準誤差をロバスト推定するオプションを付けた。

use https://www3.nd.edu/~rwilliam/statafiles/ordwarm2.dta, clear
ologit warm yr89 male white age ed prst, robust
brant
Iteration 0:   log pseudolikelihood = -2995.7704  
Iteration 1:   log pseudolikelihood = -2846.4532  
Iteration 2:   log pseudolikelihood = -2844.9142  
Iteration 3:   log pseudolikelihood = -2844.9123  
Iteration 4:   log pseudolikelihood = -2844.9123  

Ordered logistic regression                             Number of obs =  2,293
                                                        Wald chi2(6)  = 281.80
                                                        Prob > chi2   = 0.0000
Log pseudolikelihood = -2844.9123                       Pseudo R2     = 0.0504

------------------------------------------------------------------------------
             |               Robust
        warm | Coefficient  std. err.      z    P>|z|     [95% conf. interval]
-------------+----------------------------------------------------------------
        yr89 |   .5239025   .0779223     6.72   0.000     .3711775    .6766275
        male |  -.7332997   .0785119    -9.34   0.000    -.8871803   -.5794192
       white |  -.3911595   .1173929    -3.33   0.001    -.6212454   -.1610735
         age |  -.0216655   .0024086    -8.99   0.000    -.0263864   -.0169447
          ed |   .0671728   .0160635     4.18   0.000     .0356889    .0986567
        prst |   .0060727   .0032978     1.84   0.066    -.0003908    .0125363
-------------+----------------------------------------------------------------
       /cut1 |  -2.465362     .23923                     -2.934244    -1.99648
       /cut2 |   -.630904   .2306956                     -1.083059   -.1787489
       /cut3 |   1.261854   .2322644                      .8066241    1.717084
------------------------------------------------------------------------------


Brant test of parallel regression assumption

              |       chi2     p>chi2      df
 -------------+------------------------------
          All |      49.18      0.000      12
 -------------+------------------------------
         yr89 |      13.01      0.001       2
         male |      22.24      0.000       2
        white |       1.27      0.531       2
          age |       7.38      0.025       2
           ed |       4.31      0.116       2
         prst |       4.33      0.115       2

A significant test statistic provides evidence that the parallel
regression assumption has been violated.

brant検定でエラーが出る場合には、findit spost13_adoからspost13_adoをインストールする必要がある。(追記:2023/10/30)

Mplus

RでSataのデータをMplus用に変換

library(haven)
ordwarm2 <- read_dta("ordwarm2.dta")
ordwarm2.mplus <- subset(ordwarm2, select = 
                    c(warm, yr89, male, white, age, ed, prst))
library(MplusAutomation)
variable.names(ordwarm2.mplus) 
ordwarm2.mplus$warm<-as.numeric(ordwarm2.mplus$warm)
ordwarm2.mplus$yr89<-as.numeric(ordwarm2.mplus$yr89)
ordwarm2.mplus$male<-as.numeric(ordwarm2.mplus$male)
ordwarm2.mplus$white<-as.numeric(ordwarm2.mplus$white)
prepareMplusData(ordwarm2.mplus, filename="ordwarm2.mplus.dat", overwrite=T)

Mplusのコード

TITLE: Ordinal Logistic Regression
DATA: FILE = "ordwarm2.mplus.dat";
VARIABLE: 
  NAMES = warm yr89 male white age ed prst; 
  USEVARIABLES = warm yr89 male white age ed prst; 
  CATEGORICAL = warm;
  MISSING=.;

ANALYSIS:
  ESTIMATOR = MLR; 
  
MODEL:
   warm on yr89 male white age ed prst
  
plot:
    type = plot3;

結果

MODEL RESULTS

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

 WARM       ON
    YR89               0.524      0.078      6.725      0.000
    MALE              -0.733      0.078     -9.342      0.000
    WHITE             -0.391      0.117     -3.333      0.001
    AGE               -0.022      0.002     -8.997      0.000
    ED                 0.067      0.016      4.183      0.000
    PRST               0.006      0.003      1.842      0.065

 Thresholds
    WARM$1            -2.465      0.239    -10.308      0.000
    WARM$2            -0.631      0.231     -2.735      0.006
    WARM$3             1.262      0.232      5.434      0.000


LOGISTIC REGRESSION ODDS RATIO RESULTS

 WARM       ON
    YR89               1.689
    MALE               0.480
    WHITE              0.676
    AGE                0.979
    ED                 1.069
    PRST               1.006


BRANT WALD TEST FOR PROPORTIONAL ODDS

                                   Degrees of
                      Chi-Square     Freedom   P-Value

  WARM
    Overall test          49.181        12      0.000
    YR89                  13.013         2      0.001
    MALE                  22.238         2      0.000
    WHITE                  1.268         2      0.531
    AGE                    7.383         2      0.025
    ED                     4.310         2      0.116
    PRST                   4.332         2      0.115

R Massパッケージ

Massパッケージではロバスト推定はできないので通常の標準誤差の推定を行っている。

library(MASS)

subsetの作成

ordwarm2.R <- subset(ordwarm2, select = 
                   c(warm, yr89, male, white, age, ed, prst))

データ型の変更

ordwarm2.R$warm <- as.factor(ordwarm2.R$warm)
ordwarm2.R$warm <- factor(ordwarm2.R$warm, ordered = T, 
                           levels = c("1", "2", "3", "4"))
ordwarm2.R$male <- as.factor(ordwarm2.R$male)
ordwarm2.R$white <- as.factor(ordwarm2.R$white)

分析

res.R <-polr(formula = 
              warm ~ yr89 + male + white + age + ed + prst, 
              data = ordwarm2.R, Hess = TRUE, 
              method = "logistic")
summary(res.R)

結果

Coefficients:
           Value Std. Error t value
yr89    0.523912   0.079899   6.557
male1  -0.733309   0.078483  -9.344
white1 -0.391140   0.118381  -3.304
age    -0.021666   0.002469  -8.777
ed      0.067176   0.015975   4.205
prst    0.006072   0.003293   1.844

Intercepts:
    Value    Std. Error t value 
1|2  -2.4654   0.2389   -10.3188
2|3  -0.6309   0.2333    -2.7042
3|4   1.2618   0.2340     5.3919

Residual Deviance: 5689.825 
AIC: 5707.825 

オッズ比での表示

res.R.odds <- exp(coef(res.R))
res.R.odds 

P値の表示

ctable <- coef(summary(res.R))
p <- pnorm(abs(ctable[, "t value"]), lower.tail = FALSE) * 2 
ctable <- cbind(ctable, "p-value" = p)
ctable
              Value  Std. Error    t value      p-value
yr89    0.523912100 0.079898892   6.557189 5.483168e-11
male1  -0.733308680 0.078482778  -9.343562 9.314676e-21
white1 -0.391140326 0.118380964  -3.304081 9.528821e-04
age    -0.021665815 0.002468551  -8.776733 1.682920e-18
ed      0.067175724 0.015975011   4.205050 2.610242e-05
prst    0.006071693 0.003293204   1.843704 6.522628e-02
1|2    -2.465365780 0.238919177 -10.318828 5.792619e-25
2|3    -0.630933708 0.233319484  -2.704162 6.847687e-03
3|4     1.261844284 0.234024013   5.391944 6.969964e-08

brant検定

library(brant) 
brant(res.R)
-------------------------------------------- 
Test for    X2      df  probability 
-------------------------------------------- 
Omnibus     49.3    12  0
yr89        13.01   2   0
male1       22.24   2   0
white1      1.27    2   0.53
age         7.38    2   0.02
ed          4.31    2   0.12
prst        4.33    2   0.11
-------------------------------------------- 

H0: Parallel Regression Assumption holds

順序ロジスティック回帰[Stata]

Stataでの順序ロジスティック回帰分析の方法について。

stats.oarc.ucla.edu


順序ロジスティック回帰

順序付きロジスティック回帰の例

例 1: マーケティング・リサーチ会社が、人々がファーストフード・チェーンで注文するソーダのサイズ(S、M、L、特大)に、どのような要因が影響するかを調査したいと考えている。これらの要因は、注文されたサンドイッチの種類(ハンバーガーかチキンか)、フライドポテトも注文されたかどうか、消費者の年齢を含むかもしれない。 結果変数であるソーダのサイズは、明らかに注文されるが、様々なサイズの差は一定ではない。SmallとMediumの差は10オンス、MediumとLargeの差は8オンス、LargeとExtra Largeの差は12オンスである。

例2:ある研究者は、オリンピック水泳のメダルにどのような要因が影響するかについて興味を持っている。

関連する予測因子には、トレーニング時間、食事、年齢、アスリートの母国での水泳の人気などがある。 研究者は、金と銀の間の距離は、銀と銅の間の距離より大きいと考えている。

例3: ある研究が、大学院に出願するかどうかの決定に影響を与える要因について調べている。

大学3年生に、大学院に出願する可能性は低いか、やや高いか、非常に高いかを尋ねている。したがって、我々の結果変数は3つのカテゴリを持つ。 また、親の学歴、学部が公立か私立か、現在のGPAに関するデータも収集されている。研究者は、これらの3点間の "距離"が等しくないと考える根拠を持っている。 例えば、「可能性が低い」と「やや高い」の間の「距離」は、「やや高い」と「非常に高い」の間の「距離」よりも短いかもしれない。

データの説明

以下のデータ分析では、例3として大学院への出願について展開する この例ではいくつかのデータをシミュレートしており、それは弊社のウェブサイトから入手することができる。

use https://stats.oarc.ucla.edu/stat/data/ologit.dta, clear

この仮想データ・セットは、apply(コード 0, 1, 2)という3水準変数を持っていて、これを我々の結果変数として使う。 これは、少なくとも片方の親が大学院の学位を持っているかどうかを示す0/1の変数で、publicは、学部が公立で0/1の変数、そしてgpaは、学生の成績平均点である。

まず、これらの変数の記述統計から見ていこう。

tab apply
          apply |      Freq.     Percent        Cum.
----------------+-----------------------------------
       unlikely |        220       55.00       55.00
somewhat likely |        140       35.00       90.00
    very likely |         40       10.00      100.00
----------------+-----------------------------------
          Total |        400      100.00
tab apply, nolab
       
      apply |      Freq.     Percent        Cum.
------------+-----------------------------------
          0 |        220       55.00       55.00
          1 |        140       35.00       90.00
          2 |         40       10.00      100.00
------------+-----------------------------------
      Total |        400      100.00
tab apply pared
                |         pared
          apply |         0          1 |     Total
----------------+----------------------+----------
       unlikely |       200         20 |       220 
somewhat likely |       110         30 |       140 
    very likely |        27         13 |        40 
----------------+----------------------+----------
          Total |       337         63 |       400 
tab apply public
                |        public
          apply |         0          1 |     Total
----------------+----------------------+----------
       unlikely |       189         31 |       220 
somewhat likely |       124         16 |       140 
    very likely |        30         10 |        40 
----------------+----------------------+----------
          Total |       343         57 |       400
summarize gpa
    Variable |        Obs        Mean    Std. dev.       Min        Max
-------------+---------------------------------------------------------
         gpa |        400    2.998925    .3979409        1.9          4

contents() コマンドがStata17から使えなくなっている。 代わりにstat()コマンドで同様のことができる。

stata16まで

table apply, cont(mean gpa sd gpa)

stata17

table apply, stat(mean gpa) stat(sd gpa)
--------------------------------------------------
                  |      Mean   Standard deviation
------------------+-------------------------------
apply             |                               
  unlikely        |  2.952136              .403594
  somewhat likely |  3.030071             .3893446
  very likely     |   3.14725             .3560322
  Total           |  2.998925             .3979409
--------------------------------------------------

検討中の解析方法

以下は、あなたが遭遇したことのある分析手法のリストである。リストアップされた方法の中には、非常に合理的なものもあれば、人気がなくなってしまったものや限界のあるものもある。

  • 順序ロジスティック回帰: このページの焦点である。
  • OLS 回帰。 この分析は、非介入結果変数で使用された場合、OLSの仮定が破られるので問題がある。
  • ANOVA: 1つの連続予測変数のみを使用する場合、モデルを「反転」させて、たとえば、gpaが結果変数で、applyが予測変数になるようにすることができる。 そして、一元配置のANOVAを実行することができる。これは、予測変数が1つだけ(ロジスティック・モデルから)で、それが連続的である場合、悪いものではない。
  • 多項ロジスティック回帰。 これは順序ロジスティック回帰と似ているが、結果変数のカテゴリに順序がない(つまり、カテゴリが名義である)ことが仮定されている。このアプローチの不利な点は,順序に含まれる情報が失われることである。
  • 順序付きプロビット回帰: これは,順序付きロジスティック回帰の実行に非常によく似ている. 主な違いは,係数の解釈である。

順序ロジスティック回帰

以下では、ogitコマンドを使用して順序付きロジスティック回帰モデルを推定する。paredの前のi.は、paredが因子変数(すなわち、カテゴリー変数)であり、一連の指標変数としてモデルに含まれるべきことを示す。i.publicも同様である。

use https://stats.oarc.ucla.edu/stat/data/ologit.dta, clear
ologit apply i.pared i.public gpa
Iteration 0:   log likelihood = -370.60264  
Iteration 1:   log likelihood =   -358.605  
Iteration 2:   log likelihood = -358.51248  
Iteration 3:   log likelihood = -358.51244  
Iteration 4:   log likelihood = -358.51244  

Ordered logistic regression                             Number of obs =    400
                                                        LR chi2(3)    =  24.18
                                                        Prob > chi2   = 0.0000
Log likelihood = -358.51244                             Pseudo R2     = 0.0326

------------------------------------------------------------------------------
       apply | Coefficient  Std. err.      z    P>|z|     [95% conf. interval]
-------------+----------------------------------------------------------------
     1.pared |   1.047664   .2657891     3.94   0.000     .5267266    1.568601
    1.public |  -.0586828   .2978588    -0.20   0.844    -.6424754    .5251098
         gpa |   .6157458   .2606311     2.36   0.018     .1049183    1.126573
-------------+----------------------------------------------------------------
       /cut1 |   2.203323   .7795353                      .6754621    3.731184
       /cut2 |   4.298767   .8043147                       2.72234    5.875195
------------------------------------------------------------------------------

上の出力では、まず反復のログが表示される。 反復0では、Stataはヌルモデル、すなわち、切片のみのモデルをあてはめる。そして、フルモデルの適合に移り、連続した反復の間の対数尤度の差が十分に小さくなると、反復プロセスを停止かる。最終的な対数尤度(-358.51244)が再び表示される。これはネストされたモデルの比較に使用することができる。また出力の一番上に、我々のデータ集合の400個の標本数がすべてが分析で使用されたことがわかる。0.0000のp値を持つ24.18の尤度比カイ2乗は、予測変数なしのヌルモデルと比較して、我々のモデルが全体として統計的に有意であることを示す。0.0326の擬似R2乗も与えられる。

表では、係数、それらの標準誤差、z検定とそれらの関連するp値、係数の95% 信頼区間が表示されている。paredとgpaはともに統計的に有意であり、publicは有意ではない。 つまり、paredについては、モデル内の他のすべての変数が一定であるとすると、paredが1単位増加する(すなわち、0から1になる)と、より高いレベルのアプリケーションに入る対数オッズが1.05増加すると予想される。
gpaが1単位増加すると、モデル内の他のすべての変数が一定であるとすると、より高いレベルのapplyにいる対数オッズが0.62増加すると予想される。 出力の一番下に示されたカットポイントは、我々のデータで観察される3つのグループを作るために、潜在変数がどこでカットされるかを示す。 この潜在変数は連続的であることに注意。 一般に、これらは結果の解釈には使用されない。 カットポイントは、他の統計パッケージで報告されている閾値と密接に関連している。 さらに詳しい情報は、Stata FAQを参照。

順序付きプロビットおよびロジスティック・モデルのStataのパラメータ化を、定数が推定されるものに変換するにはどうすればよいか? http://www.stata.com/support/faqs/stat/ologit_con.html

ologitコマンドの後にorオプションをつけると、オッズ比を求めることができる。

use https://stats.oarc.ucla.edu/stat/data/ologit.dta, clear
ologit apply i.pared i.public gpa, or
Iteration 0:   log likelihood = -370.60264  
Iteration 1:   log likelihood =   -358.605  
Iteration 2:   log likelihood = -358.51248  
Iteration 3:   log likelihood = -358.51244  
Iteration 4:   log likelihood = -358.51244  

Ordered logistic regression                             Number of obs =    400
                                                        LR chi2(3)    =  24.18
                                                        Prob > chi2   = 0.0000
Log likelihood = -358.51244                             Pseudo R2     = 0.0326

------------------------------------------------------------------------------
       apply | Odds ratio   Std. err.      z    P>|z|     [95% conf. interval]
-------------+----------------------------------------------------------------
     1.pared |   2.850982   .7577601     3.94   0.000      1.69338    4.799927
    1.public |   .9430059   .2808826    -0.20   0.844     .5259888    1.690645
         gpa |   1.851037   .4824377     2.36   0.018      1.11062    3.085067
-------------+----------------------------------------------------------------
       /cut1 |   2.203323   .7795353                      .6754621    3.731184
       /cut2 |   4.298767   .8043147                       2.72234    5.875195
------------------------------------------------------------------------------
Note: Estimates are transformed only in the first equation to odds ratios.

上記の出力では、結果は比例オッズ比として表示されている。我々は、2値のロジスティック回帰からのオッズ比とほぼ同じように、これを解釈する。 paredについては、モデル中の他のすべての変数が一定であるとすると、paredが1単位増加すると、すなわち、0から1になると、中低カテゴリの組み合わせに対して高適用のオッズが2.85大きくなる。
同様に、モデル中の他のすべての変数が一定であるとすると、中位と上位のカテゴリーを合わせたものと下位のカテゴリーを合わせたものとのオッズは、2.85倍大きくなる。 GPAが1単位増加すると、モデル中の他の変数が一定であるとすると、高カテゴリーの出願と低カテゴリーおよび中カテゴリーの出願のオッズは、1.85倍となる。 比例オッズの仮定(より詳しい説明は以下をご覧ください)のため、低申請と中申請と高申請の組み合わせのカテゴリの間でも、同じ増加、1.85倍が見出される。

また、変数の標準偏差に対するオッズの変化と同様に、オッズ比を得るためにlistcoefコマンドを使用することができる。出力の下部にある各列を説明するリストを得るために、helpオプションを使用している。 オッズの変化率を見るためにpercentオプションを使うことができる。listcoeffコマンドはLongとFreeseによって書かれたもので、search spostと入力してダウンロードする必要がある(searchの使い方については、How can I use the search command to search for programs and get additional help? "を参照してください)。

注釈
Stata17ではあまり推奨されない機能ではあるが、下記の手順で使用はできる。
sg152.pkgのインストールが必要。インストールはこちらから。
spost13_ado from https://jslsoc.sitehost.iu.edu/stata
Stata17の場合、警告はでるが強制的にインストールは可能である。

use https://stats.oarc.ucla.edu/stat/data/ologit.dta, clear
ologit apply i.pared i.public gpa, or
listcoef, help
ologit (N=400): Factor change in odds 

  Odds of: >m vs <=m

------------------------------------------------------------------------
             |         b        z    P>|z|       e^b   e^bStdX     SDofX
-------------+----------------------------------------------------------
     1.pared |    1.0477    3.942    0.000     2.851     1.465     0.365
    1.public |   -0.0587   -0.197    0.844     0.943     0.980     0.350
         gpa |    0.6157    2.363    0.018     1.851     1.278     0.398
------------------------------------------------------------------------
       b = raw coefficient
       z = z-score for test of b=0
   P>|z| = p-value for z-test
     e^b = exp(b) = factor change in odds for unit increase in X
 e^bStdX = exp(b*SD of X) = change in odds for SD increase in X
   SDofX = standard deviation of X

オッズ比の変化率をパーセントで表示する場合。

listcoef, help percent
ologit (N=400): Percentage change in odds 

  Odds of: >m vs <=m

------------------------------------------------------------------------
             |         b        z    P>|z|         %     %StdX     SDofX
-------------+----------------------------------------------------------
     1.pared |    1.0477    3.942    0.000     185.1      46.5     0.365
    1.public |   -0.0587   -0.197    0.844      -5.7      -2.0     0.350
         gpa |    0.6157    2.363    0.018      85.1      27.8     0.398
------------------------------------------------------------------------
       b = raw coefficient
       z = z-score for test of b=0
   P>|z| = p-value for z-test
       % = percent change in odds for unit increase in X
   %StdX = percent change in odds for SD increase in X
   SDofX = standard deviation of X

順序付きロジスティック回帰(および順序付きプロビット回帰)の基礎となる仮定は,結果グループの各対の間の関係性が同じであるということである。言い換えると,順序付きロジスティック回帰は,たとえば、応答変数の最低カテゴリとすべての上位カテゴリの間の関係性を記述する係数が、次の最低カテゴリとすべての上位カテゴリの間の関係性を記述する係数と同じであることを仮定している。これは比例オッズの仮定または平行回帰の仮定と呼ばれる。グループのすべての対の間の関係が同じなので,係数のセットは1つだけである(モデルは1つだけ)。もしそうでなければ,結果群の各対の間の関係を記述するために,異なるモデルが必要であろう。我々は、比例オッズの仮定を検定する必要があり、そうするために使用できる2つの検定がある。

まず、omodelと呼ばれるユーザーが書いたコマンドをダウンロードする必要がある(type search omodel)。最初の検定は、尤度比検定を行う。 帰無仮説は、モデル間の係数に差がないというもので、有意でない結果が得られることを「期待」する。omodelコマンドは因子変数を認識しないので、i.が省略されていることに注意する。

stata17では" ologit postestimation -- Postestimation tools for ologit"の中に含まれているが、"forecast, hausman, and lrtest are not appropriate with svy estimation results."と書かれている。個人的にも不要だと思う。Brant検定の方が優先的に使われるべきである。
Stata17ではBrant検定が標準で搭載されている。16以下については知らない。

omodelとspostパッケージを用いる方法

brantコマンドはBrant検定を実行する。出力の一番下の注釈にあるように、これらの検定も有意でないことを「望む」。 brantコマンドは、listcoeffと同様、spostアドオンの一部であり、search spostとタイプすることで入手できる。ここでは、detailオプションを使用して、2つの方程式の推定係数を表示している。 (我々は、応答変数に3つのカテゴリがあるので、2つの方程式がある)。また、omodelコマンドで得られた尤度比カイ二乗の値4.06はbrantコマンドで得られた4.34と非常に近いことがわかる。

omodel logit apply pared public gpa
brant, detail
Iteration 0:   log likelihood = -370.60264
Iteration 1:   log likelihood =   -358.605
Iteration 2:   log likelihood = -358.51248
Iteration 3:   log likelihood = -358.51244

Ordered logit estimates                           Number of obs   =        400
                                                  LR chi2(3)      =      24.18
                                                  Prob > chi2     =     0.0000
Log likelihood = -358.51244                       Pseudo R2       =     0.0326

------------------------------------------------------------------------------
       apply | Coefficient  Std. err.      z    P>|z|     [95% conf. interval]
-------------+----------------------------------------------------------------
       pared |   1.047664   .2657891     3.94   0.000     .5267266    1.568601
      public |  -.0586828   .2978588    -0.20   0.844    -.6424754    .5251098
         gpa |   .6157458   .2606311     2.36   0.018     .1049183    1.126573
-------------+----------------------------------------------------------------
       _cut1 |   2.203323   .7795353          (Ancillary parameters)
       _cut2 |   4.298767   .8043146 
------------------------------------------------------------------------------

Approximate likelihood-ratio test of proportionality of odds
across response categories:
         chi2(3) =      4.06
       Prob > chi2 =    0.2553

標準機能を使う場合

ologit apply i.pared i.public gpa
brant

brant, detailコマンドも利用できる。

Brant test of parallel regression assumption

              |       chi2     p>chi2      df
 -------------+------------------------------
          All |       4.34      0.227       3
 -------------+------------------------------
      1.pared |       0.13      0.716       1
     1.public |       3.44      0.064       1
          gpa |       0.18      0.672       1

A significant test statistic provides evidence that the parallel
regression assumption has been violated.

上記の検定は、両方とも、比例オッズの仮定に違反していないことを示している。 もし、そうであれば、私たちは、gologit2を用いて一般化順序ロジスティック・モデルとしてモデルを実行したいと思うだろう。search gologit2とタイプし、gologit2をダウンロードする必要がある。

また、係数やオッズ比よりも理解しやすい予測確率を求めることもできる。 marginsコマンドを使用する。これはカテゴリ変数または連続変数のどちらかで使用でき、指定された変数の値のそれぞれについて予測される確率を示す。 カテゴリ予測変数の例としてparedを使用する。ここで、我々は、paredを変化させ、他の変数をそれらの平均に保持すると、適用される各カテゴリのメンバーシップの確率がどのように変化するかを見る。見てわかるように、両親のどちらかが大学院レベルの教育を受けていない場合、applyの最低カテゴリーに入る予測確率は0.59で、そうでない場合は0.34である。 中間のカテゴリーでは、予測される確率は0.33と0.47であり、最も高いカテゴリーでは、0.078と0.196である。 したがって、両親のどちらかが大学院レベルの教育を受けていない場合、大学院に出願する予測確率は減少する。 各変数は、それぞれの出力の一番上に保持されている値を見ることができる。

margins, at(pared=(0/1)) predict(outcome(0)) atmeans
Adjusted predictions                                       Number of obs = 400
Model VCE: OIM

Expression: Pr(apply==0), predict(outcome(0))
1._at: pared    =        0
       0.public =    .8575 (mean)
       1.public =    .1425 (mean)
       gpa      = 2.998925 (mean)
2._at: pared    =        1
       0.public =    .8575 (mean)
       1.public =    .1425 (mean)
       gpa      = 2.998925 (mean)

------------------------------------------------------------------------------
             |            Delta-method
             |     Margin   std. err.      z    P>|z|     [95% conf. interval]
-------------+----------------------------------------------------------------
         _at |
          1  |   .5902769   .0268846    21.96   0.000     .5375841    .6429697
          2  |   .3356916   .0549943     6.10   0.000     .2279047    .4434784
------------------------------------------------------------------------------
margins, at(pared=(0/1)) predict(outcome(1)) atmeans
Adjusted predictions                                       Number of obs = 400
Model VCE: OIM

Expression: Pr(apply==1), predict(outcome(1))
1._at: pared    =        0
       0.public =    .8575 (mean)
       1.public =    .1425 (mean)
       gpa      = 2.998925 (mean)
2._at: pared    =        1
       0.public =    .8575 (mean)
       1.public =    .1425 (mean)
       gpa      = 2.998925 (mean)

------------------------------------------------------------------------------
             |            Delta-method
             |     Margin   std. err.      z    P>|z|     [95% conf. interval]
-------------+----------------------------------------------------------------
         _at |
          1  |    .331053   .0242226    13.67   0.000     .2835775    .3785285
          2  |   .4685299   .0344096    13.62   0.000     .4010883    .5359714
------------------------------------------------------------------------------
margins, at(pared=(0/1)) predict(outcome(2)) atmeans
Adjusted predictions                                       Number of obs = 400
Model VCE: OIM

Expression: Pr(apply==2), predict(outcome(2))
1._at: pared    =        0
       0.public =    .8575 (mean)
       1.public =    .1425 (mean)
       gpa      = 2.998925 (mean)
2._at: pared    =        1
       0.public =    .8575 (mean)
       1.public =    .1425 (mean)
       gpa      = 2.998925 (mean)

------------------------------------------------------------------------------
             |            Delta-method
             |     Margin   std. err.      z    P>|z|     [95% conf. interval]
-------------+----------------------------------------------------------------
         _at |
          1  |   .0786702   .0132973     5.92   0.000      .052608    .1047323
          2  |   .1957785    .040827     4.80   0.000     .1157591     .275798
------------------------------------------------------------------------------

また、marginコマンドを使って連続変数の値を選択し、各ポイントでの予測確率を見ることができる。
下記は、2、3、4でのgpaの予測確率である。見てわかるように、gpaのほぼすべての値で、最も高い予測確率は、最も低いカテゴリの適用であり、gpaが4のときだけ、予測確率は、可能性が低いよりもやや高いが、これは、ほとんどの回答者がこのカテゴリであるため、理にかなっている。 また、gpaが高くなるにつれて、中位と上位のカテゴリーで予測される確率が高くなることがわかる。

margins, at(gpa=(2/4)) predict(outcome(0)) atmeans
Adjusted predictions                                       Number of obs = 400
Model VCE: OIM

Expression: Pr(apply==0), predict(outcome(0))
1._at: 0.pared  = .8425 (mean)
       1.pared  = .1575 (mean)
       0.public = .8575 (mean)
       1.public = .1425 (mean)
       gpa      =     2
2._at: 0.pared  = .8425 (mean)
       1.pared  = .1575 (mean)
       0.public = .8575 (mean)
       1.public = .1425 (mean)
       gpa      =     3
3._at: 0.pared  = .8425 (mean)
       1.pared  = .1575 (mean)
       0.public = .8575 (mean)
       1.public = .1425 (mean)
       gpa      =     4

------------------------------------------------------------------------------
             |            Delta-method
             |     Margin   std. err.      z    P>|z|     [95% conf. interval]
-------------+----------------------------------------------------------------
         _at |
          1  |   .6932137    .060112    11.53   0.000     .5753963     .811031
          2  |   .5496956   .0255013    21.56   0.000      .499714    .5996773
          3  |   .3974013   .0665332     5.97   0.000     .2669986    .5278041
------------------------------------------------------------------------------

margins, at(gpa=(2/4)) predict(outcome(1)) atmeans






Adjusted predictions                                       Number of obs = 400
Model VCE: OIM

Expression: Pr(apply==1), predict(outcome(1))
1._at: 0.pared  = .8425 (mean)
       1.pared  = .1575 (mean)
       0.public = .8575 (mean)
       1.public = .1425 (mean)
       gpa      =     2
2._at: 0.pared  = .8425 (mean)
       1.pared  = .1575 (mean)
       0.public = .8575 (mean)
       1.public = .1425 (mean)
       gpa      =     3
3._at: 0.pared  = .8425 (mean)
       1.pared  = .1575 (mean)
       0.public = .8575 (mean)
       1.public = .1425 (mean)
       gpa      =     4

------------------------------------------------------------------------------
             |            Delta-method
             |     Margin   std. err.      z    P>|z|     [95% conf. interval]
-------------+----------------------------------------------------------------
         _at |
          1  |   .2551558   .0472683     5.40   0.000     .1625116    .3477999
          2  |   .3587569   .0246482    14.56   0.000     .3104474    .4070664
          3  |   .4453892   .0399212    11.16   0.000      .367145    .5236334
------------------------------------------------------------------------------
margins, at(gpa=(2/4)) predict(outcome(2)) atmeans
Adjusted predictions                                       Number of obs = 400
Model VCE: OIM

Expression: Pr(apply==2), predict(outcome(2))
1._at: 0.pared  = .8425 (mean)
       1.pared  = .1575 (mean)
       0.public = .8575 (mean)
       1.public = .1425 (mean)
       gpa      =     2
2._at: 0.pared  = .8425 (mean)
       1.pared  = .1575 (mean)
       0.public = .8575 (mean)
       1.public = .1425 (mean)
       gpa      =     3
3._at: 0.pared  = .8425 (mean)
       1.pared  = .1575 (mean)
       0.public = .8575 (mean)
       1.public = .1425 (mean)
       gpa      =     4

------------------------------------------------------------------------------
             |            Delta-method
             |     Margin   std. err.      z    P>|z|     [95% conf. interval]
-------------+----------------------------------------------------------------
         _at |
          1  |   .0516305   .0158556     3.26   0.001     .0205541    .0827069
          2  |   .0915475   .0142998     6.40   0.000     .0635204    .1195745
          3  |   .1572095   .0397767     3.95   0.000     .0792486    .2351703
------------------------------------------------------------------------------

ここでは、applyの値(0、1、2)をループし、gpa = 3.5、pared = 1、public = 1のときの予測確率を計算する。

forvalues i = 0/2 {
  margins, at(gpa = 3.5 pared = 1 public = 1) predict(outcome(`i'))
}
Adjusted predictions                                       Number of obs = 400
Model VCE: OIM

Expression: Pr(apply==0), predict(outcome(0))
At: pared  =   1
    public =   1
    gpa    = 3.5

------------------------------------------------------------------------------
             |            Delta-method
             |     Margin   std. err.      z    P>|z|     [95% conf. interval]
-------------+----------------------------------------------------------------
       _cons |   .2807452   .0695883     4.03   0.000     .1443547    .4171357
------------------------------------------------------------------------------

Adjusted predictions                                       Number of obs = 400
Model VCE: OIM

Expression: Pr(apply==1), predict(outcome(1))
At: pared  =   1
    public =   1
    gpa    = 3.5

------------------------------------------------------------------------------
             |            Delta-method
             |     Margin   std. err.      z    P>|z|     [95% conf. interval]
-------------+----------------------------------------------------------------
       _cons |   .4796188   .0326872    14.67   0.000     .4155531    .5436844
------------------------------------------------------------------------------

Adjusted predictions                                       Number of obs = 400
Model VCE: OIM

Expression: Pr(apply==2), predict(outcome(2))
At: pared  =   1
    public =   1
    gpa    = 3.5

------------------------------------------------------------------------------
             |            Delta-method
             |     Margin   std. err.      z    P>|z|     [95% conf. interval]
-------------+----------------------------------------------------------------
       _cons |    .239636    .063819     3.75   0.000      .114553     .364719
------------------------------------------------------------------------------

考慮すべきこと

  • 完全予測:完全予測とは、予測変数の1つの値が応答変数の1つの値だけに関連することを意味する。これが起こると、Stataは、通常、出力の一番上に注意書きを発行し、モデルを実行できるようにケースを削除する。
  • サンプルサイズ: 順序ロジスティックと順序プロビットの両方とも、最尤推定値を使用するため、十分なサンプルサイズが必要である。どの程度大きいかは議論のあるところだが,ほとんどの場合,OLS 回帰よりも多くのケースを必要とする。
  • 空白のセルまたは小さなセル: カテゴリ予測変数と結果変数の間のクロスタブを行うことにより,空白または小さなセルをチェックするべきである。セルに非常に少ないケースがある場合,モデルが不安定になるか,まったく実行されないかもしれない。
  • 擬似R2乗: OLSで発見されたR2乗の正確な類似指標は存在しない。擬似R2乗には多くのバージョンがある。様々な擬似R2乗の詳細と説明については、Long and Freese 2005を参照。
  • 診断: 非線形モデルの診断は難しく、順序ロジット/プロビットモデルはバイナリモデルよりもさらに困難である。

RStudio上のRを使う感覚でStataが利用できるパッケージ Statamarkdown[R][Stata]

RStudio上のRを使う感覚でStataが利用できるパッケージである。

www.ssc.wisc.edu

はてなブログではチャンクオプションが表示できないため、原版と見比べながら学習してほしい。


Statamarkdown

by Doug Hemken 2022-03-02

1 StataとR Markdown

1.1 はじめに

これは、Stataに基づくドキュメントを作成するためにR Markdownを使用して動的なドキュメントを書くための入門書である。このプロセスでは、Rstudio(または単にR)を使用して、Stataのコードに依存するドキュメントを作成する。

1.2 背景

Markdownは、いくつかのテキストシンボルを使って、それほど複雑でないドキュメントをフォーマットするための言語である。これは読みやすく、書きやすいように設計されている。もしあなたが電子メールを読み書きするならば、おそらくこれらのフォーマット規則の多くにすでに精通していることでしょう。Markdownに関するより詳細な情報はJohn GruberのMarkdownの記事を参照のこと。

https://daringfireball.net/projects/markdown/

動的なMarkdownはStataやRを含む多くのプログラミング言語で実装されている。Stataにはstmdという動的なMarkdownパッケージがあり、Stataのdyndocコマンドと同様にユーザが書いたmarkstatパッケージにも依存している。それぞれに長所と短所があります。

ここで説明するシステムは、すでにR Markdownを使って他の言語でドキュメントを書いていて、これをStataにも使いたいと考えている人のために用意されたものである。

R Markdownは動的なマークダウンシステムで、いくつかのプログラミング言語のうちの1つであるコードのブロックを含めることができるようにMarkdownを拡張している。コードは評価され、コードとその結果の両方がMarkdownドキュメントに含まれる。R Markdownの詳細については、RStudioのR Markdownウェブページを参照

RStudioはknitrというRパッケージ(これはRから直接呼び出すこともできます)を使用しており、Stataを評価する機能を備えています。

knitrのドキュメントはRのヘルプ、Yihui XieのWebページ、または書籍R Markdownに記載されている。The Definitive Guide "にある。

https://yihui.org/knitr/ https://bookdown.org/yihui/rmarkdown/

最後に、私はStatamarkdownと呼ばれるパッケージのヘルパー関数を使用している。これらはStataに基づく動的なドキュメントを書くのに必要ではないが、作業を容易にしてくれる。

1.3 Statamarkdownのインストール

Statamarkdownはgithub.comからインストールすることができる。(インストールオプションについては、2項「Statamarkdownのインストール」を参照)。

library(devtools) # devtoolsのインストールも必要かもしれない
install_github("hemken/Statamarkdown")

注意:RStudioは実行可能なRコードチャンクでMarkdownを書くには素晴らしい環境だが、Stataコードの問題を広範囲にデバッグするには不親切な環境である。Stataのコードが複雑な場合は、まずStataで詳細を解決し、それをRStudioに取り込んでドキュメントを作成すべきである。

1.4 Stataエンジンのセットアップ

Stataのコードを実行するために、knitrはStataの実行ファイルがどこにあるか知る必要がある。これは、Statamarkdownパッケージをロードすることにより、予備的なコードチャンクで行うことができる。

library(Statamarkdown)

(knitrの専門用語では、コードのブロックは "コードチャンク")

もし、パッケージがあなたのStataのコピーを見つけられなかった場合(メッセージが表示される)、自分で指定しなければならないかもしれない。詳しくは第3章Stata Engine Pathを参照。

このセットアップチャンクの後、Stataによって処理される後続のコードは、以下のように指定することができる。

‘‘‘{stata}

-- {Stata} -- Stataのコードはここにある。

‘‘‘

1.5 コードブロックのリンク

Stataのコードの各ブロック(チャンク)は、個別のバッチジョブとして実行される。これはコードのチャンクからチャンクへ移動する際に,以前の作業はすべて失われることを意味する。コードチャンクからコードチャンクへデータを保持するためには、コードの(一部を)収集し、後続の各チャンクの始めに静かに処理することが必要である。

4.1節「Stataコードブロックのリンク」で説明したように、また以下に示すように、knitrにコードを収集させることができる。

1.6 ヒントと例

1.6.1 分離したコードと出力されたコード

Stataでは、.logファイルに出力される内容を細かく制御することはできにい。コードと出力を別々に表示する(Rスタイル)か、出力にコードを含める(Stataスタイル)かは、自分で決めることができる。 第5章Stataの出力とcleanlogを参照。

1.6.2 グラフの取り込み

グラフを含めるには、Stataでのグラフエクスポートと、R Markdownでの画像リンクが必要である。knitrのチャンクオプションechoは、指定したコードの行だけを表示することができ、下図のようにグラフエクスポートコマンドを非表示にすることができる。

6.3 記述統計量

簡単な例。

sysuse auto
summarize

knitrのチャンクオプション{stata, collectcode=TRUE}

    Variable |        Obs        Mean    Std. Dev.       Min        Max
-------------+---------------------------------------------------------
        make |          0
       price |         74    6165.257    2949.496       3291      15906
         mpg |         74     21.2973    5.785503         12         41
       rep78 |         69    3.405797    .9899323          1          5
    headroom |         74    2.993243    .8459948        1.5          5
-------------+---------------------------------------------------------
       trunk |         74    13.75676    4.277404          5         23
      weight |         74    3019.459    777.1936       1760       4840
      length |         74    187.9324    22.26634        142        233
        turn |         74    39.64865    4.399354         31         51
displacement |         74    197.2973    91.83722         79        425
-------------+---------------------------------------------------------
  gear_ratio |         74    3.014865    .4562871       2.19       3.89
     foreign |         74    .2972973    .4601885          0          1

1.6.4 度数分布表

チャンクオプション echo=FALSE, cleanlog=FALSE を使用すると、より典型的な Stata ドキュメントスタイルになる。

sysuse auto
tab1 foreign rep78

knitrのチャンクオプション{stata, echo=FALSE, cleanlog=FALSE}

結果

. sysuse a(1978 Automobile Data)

. tab1 foreign rep78

-> tabulation of foreign  

   Car type |      Freq.     Percent        Cum.
------------+-----------------------------------
   Domestic |         52       70.27       70.27
    Foreign |         22       29.73      100.00
------------+-----------------------------------
      Total |         74      100.00

-> tabulation of rep78  

     Repair |
Record 1978 |      Freq.     Percent        Cum.
------------+-----------------------------------
          1 |          2        2.90        2.90
          2 |          8       11.59       14.49
          3 |         30       43.48       57.97
          4 |         18       26.09       84.06
          5 |         11       15.94      100.00
------------+-----------------------------------
      Total |         69      100.00

1.6.5 T-テスト

もう一つの非常に簡単な例。

sysuse auto
ttest mpg, by(foreign)

knitrのチャンクオプション{stata, echo=FALSE, cleanlog=FALSE}

結果。

. ttest mpg, by(foreign)

Two-sample t test with equal variances
------------------------------------------------------------------------------
   Group |     Obs        Mean    Std. Err.   Std. Dev.   [95% Conf. Interval]
---------+--------------------------------------------------------------------
Domestic |      52    19.82692     .657777    4.743297    18.50638    21.14747
 Foreign |      22    24.77273     1.40951    6.611187    21.84149    27.70396
---------+--------------------------------------------------------------------
combined |      74     21.2973    .6725511    5.785503     19.9569    22.63769
---------+--------------------------------------------------------------------
    diff |           -4.945804    1.362162               -7.661225   -2.230384
------------------------------------------------------------------------------
    diff = mean(Domestic) - mean(Foreign)                         t =  -3.6308
Ho: diff = 0                                     degrees of freedom =       72

    Ha: diff < 0                 Ha: diff != 0                 Ha: diff > 0
 Pr(T < t) = 0.0003         Pr(|T| > |t|) = 0.0005          Pr(T > t) = 0.9997

1.6.6 グラフ

この例では、ログを表示しないように knitr chunk のオプション results="hide" を使い、ユーザーが見る必要がある Stata graph box コマンドのみを表示するように echo=1 を使っている。

sysuse auto
graph box mpg, over(foreign)
graph export "boxplot.svg", replace

knitrのチャンクオプション{stata, echo=1, results="hide"}

boxplotの例

RStanのインストールに関するメモ(2022年7月)[R]

2022年7月現在の、RにStanをインストールする手順を記載する。
現在の注意点はRStanはR4.2に対応していない、ということである。最新バージョンのRとRtoolsではRStanは動かないことに注意が必要である。 なお、Windowsでの方法であり、Macでは試していないのでわからないものの、R4.2がRStanに対応していないのは同じだと思われる。

実行可能な環境はRバージョンは4.1.3、Rtoolsバージョンは4.0

R version: 4.1.3
Rtools version : 4.0 https://discourse.mc-stan.org/t/issues-while-installing-rstan-after-r-update-to-4-2-1/27956/2

Windowsをお使いのStanユーザーは、可能であればR4.2へのアップグレードを控えていただくことをお勧めする。
https://blog.mc-stan.org/2022/04/26/stan-r-4-2-on-windows/

R4.1.3(Windows)

ダウンロードページ。

https://cran.r-project.org/bin/windows/base/old/4.1.3/

Rtoolsの設定

https://cran.r-project.org/bin/windows/Rtools/rtools40.html

Windowsの場合は下記をダウンロードする。

On Windows 64-bit: rtools40-x86_64.exe (includes both i386 and x64 compilers).

RtoolsのPATHの追加

インストールが完了したら、Rパッケージをコンパイルできるようにするために、もう1つのステップを実行する必要がある。それは、Rtoolsのmakeユーティリティ(bash、makeなど)の場所をPATHに置くことです。最も簡単な方法は、Documentsフォルダーに以下の行を含むテキストファイル.Renvironを作成することである。

PATH="${RTOOLS40_HOME}\usr\bin;${PATH}"

これはテキストエディタで行うこともできる、Rから以下のように行うこともできる(Rのコードではバックスラッシュをエスケープする必要があることに注意)。

write('PATH="${RTOOLS40_HOME}}\usrr\bin;${PATH}"', file = "~/.Renviron", append = TRUE)

Rを再起動し、Rtoolsのインストール先が表示され、makeが見つかるか確認する。

Sys.which("make")
## "C:\\rtools40\\usr\\bin\\make.exe"

次に、Rパッケージをソースからインストールしてみる。

install.packages("jsonlite", type = "source")

これで成功すればOK。

RStanのインストール

こちらは日本語のガイドがある。
下記のガイドどおり実行すれば、インストールは可能である。

https://github.com/stan-dev/rstan/wiki/RStan-Getting-Started-(Japanese)