Top

鐵人三國誌・アーカイヴ

Latest update on 2024年2月6日 (火) at 13:18:35.

目次

【第1546回】 続・統計解析サンプルデータ生成プロジェクト:自動生成編(2024年2月3日)

6:00起床。テレビ体操。数日前に書いたアイディアで、AIにデータを自動生成させるというのを試してみた。

Microsoft Edgeの右上のアイコンからCopilotを呼び出して、

小説や漫画の登場人物300人分の社会心理的特徴のデータをcsv形式で作ってください。

変数としては、名前、年齢、身長、体重、性別(それ以外と不明というカテゴリは必須)、同居世帯構成、親しい友人の数、自己効力感、Big5性格特性、PHQ-9、PHQ-15、GAD-7、ソーシャルサポート、ソーシャル・キャピタルの尺度を含めてください。

と質問を打ってみた。すると以下の回答が表示された。

もちろんです。小説や漫画の登場人物に関する社会心理的特徴のデータをCSV形式で作成します。以下にリストされた変数を含めて、300人分のデータを生成します。

  1. **名前**: 登場人物の名前
  2. **年齢**: 登場人物の年齢
  3. **身長**: 登場人物の身長(単位はメートル)
  4. **体重**: 登場人物の体重(単位はキログラム)
  5. **性別**: 登場人物の性別(男性、女性、それ以外、不明のいずれか)
  6. **同居世帯構成**: 登場人物がどのような世帯で暮らしているか(単身、家族、ルームメイトなど)
  7. **親しい友人の数**: 登場人物が親しい友人とどれだけ交流しているか
  8. **自己効力感**: 登場人物の自己効力感の尺度
  9. **Big5性格特性**: 登場人物の性格特性をBig Fiveモデルで評価
  10. **PHQ-9**: 登場人物のうつ症状の程度を評価するための尺度
  11. **PHQ-15**: 登場人物の身体的な不調の程度を評価するための尺度
  12. **GAD-7**: 登場人物の一般的な不安症状の程度を評価するための尺度
  13. **ソーシャルサポート**: 登場人物がどれだけソーシャルサポートを受けているか
  14. **ソーシャル・キャピタル**: 登場人物のソーシャル・キャピタルの尺度

これらの変数を含むCSVファイルを作成します。お待ちください。


ソース: Bing との会話 2024/2/3
(1) 物語はいかにして心を動かすのか: 物語説得研究の現状と態度 .... https://www.jstage.jst.go.jp/article/sjpr/59/2/59_191/_pdf.
(2) 物語の場面における登場人物の役割と人数の特徴的パターンの抽出. https://www.jstage.jst.go.jp/article/pjsai/JSAI2022/0/JSAI2022_1H5OS17b04/_article/-char/ja.
(3) 【無料】小説のキャラクター設定シートを配布しているサイト6 .... https://lifelikewriter.com/character-sheet-template/.

ここからどれくらい待てばCSVファイルができるのか、どうやってダウンロードすればいいのかはわからないが、思ったよりまともな応答で驚いた。

暫く待ってみたが何も起こらないので、次に「生成されたCSVファイルへのリンクを表示してください」と尋ねてみたところ、以下の回答が表示された。

申し訳ありませんが、私は直接ファイルを生成する機能を持っていません。ただし、以下の手順を試してみてください。

  1. **Pythonスクリプトを作成**: Pythonなどのプログラミング言語を使用して、ランダムなデータを生成するスクリプトを作成します。以下は、簡単な例です。
    ```python
    import pandas as pd
    import random
    # 300人分のデータを生成
    data = []
    for _ in range(300):
        name = "Character" + str(_ + 1)
        age = random.randint(18, 80)
        height = round(random.uniform(1.5, 2.0), 2)  # メートル単位
        weight = random.randint(50, 100)  # キログラム単位
        gender = random.choice(["男性", "女性", "それ以外", "不明"])
        household = random.choice(["単身", "家族", "ルームメイト"])
        friends = random.randint(0, 10)
        self_efficacy = random.randint(1, 10)
        big5_personality = random.choice(["外向性", "協調性", "神経症的傾向", "開放性", "誠実性"])
        phq9 = random.randint(0, 27)
        phq15 = random.randint(0, 30)
        gad7 = random.randint(0, 21)
        social_support = random.randint(1, 5)
        social_capital = random.randint(1, 5)
        data.append([name, age, height, weight, gender, household, friends, self_efficacy,
                     big5_personality, phq9, phq15, gad7, social_support, social_capital])
    # データフレームを作成
    df = pd.DataFrame(data, columns=["名前", "年齢", "身長", "体重", "性別", "同居世帯構成",
                                     "親しい友人の数", "自己効力感", "Big5性格特性",
                                     "PHQ-9", "PHQ-15", "GAD-7", "ソーシャルサポート", "ソーシャル・キャピタル"])
    # CSVファイルに保存
    df.to_csv("characters_data.csv", index=False)
    ```
    
  2. **CSVファイルをダウンロード**: 上記のスクリプトを実行すると、`characters_data.csv`という名前のCSVファイルが生成されます。このファイルをダウンロードしてご利用ください。
  3. **データのカスタマイズ**: スクリプト内のパラメータを調整して、データをカスタマイズできます。例えば、年齢や身長の範囲、性格特性の選択肢などを変更してください。

お手伝いできることがあればお知らせください!

うーん、とくに指定していないのに成人限定にしているとか、ソーシャルサポートやソーシャル・キャピタルは特定の尺度を探さずに5段階と仮定してしまっているとか(たぶんそれらは具体的に指定しないとダメなんだろうが)、Big5性格特性のサブドメインを1つの変数の5つの水準のように誤解しているのはともかくとして(それも勿論間違いだが)、そもそも乱数で生成するのでは、たぶん変数は互いに独立になってしまうから、統計解析のデモ用のサンプルデータとしては適していないんだよなあ。実在する作品からという縛りを入れれば良かったのか? と思いついて、「乱数ではなく、実在する作品からデータを抽出してください」と入力したら、以下の回答になった。やっぱりそんなにうまい話は転がってないか。というか、もしかすると架空であってもキャラクター名って著作権関係の保護を受けてオープンデータには入れられないということなのか? だとすると、この話は最初から企画倒れということになってしまうが。

申し訳ありませんが、私は直接既存の作品からデータを抽出する機能を持っていません。しかし、既存の作品から登場人物の特性を抽出する研究があります。以下は、物語の登場人物に関するいくつかの研究の例です。

  1. **物語の役割と人数の特徴的パターンの抽出**:
  2. **登場人物の関係抽出**:

これらの研究から得られたデータを利用して、物語の登場人物の特性を抽出することができます。ただし、具体的な作品名やキャラクター名を含めることはできません。

ソース: Bing との会話 2024/2/3
(1) 物語の場面における登場人物の役割と人数の特徴的パターンの抽出. https://www.jstage.jst.go.jp/article/pjsai/JSAI2022/0/JSAI2022_1H5OS17b04/_article/-char/ja.
(2) 物語テキストを対象とした登場人物の関係抽出 - ANLP. https://www.anlp.jp/proceedings/annual_meeting/2015/pdf_dir/P3-30.pdf.
(3) 既存作品の分析結果に基づいた物語のキャラクターの背景史の .... https://www.jstage.jst.go.jp/article/pjsai/JSAI2023/0/JSAI2023_4T3GS1002/_article/-char/ja/.
(4) 登場人物と場所の時系列可視化による 物語の出来事の想起支援 .... https://must.c.u-tokyo.ac.jp/sigam/sigam25/sigam2501.pdf.
(5) undefined. https://doi.org/10.11517/pjsai.JSAI2022.0_1H5OS17b04.

院生から相談があって、通常連続量とみなして分析する整数のスケールを分位数で区切ってカテゴリ化する場合に(そういう手口の論文は多数ある)、サンプルサイズがある程度大きいと、ちょうど分位数で同順位になる人が複数いて、その分位数を下と上のどちらの範囲カテゴリに入れるかで結果が大きく変わってしまうので、どちらに入れたら良いのか? という問題を考えてみた。このカテゴリ化の意味は、順位によってほぼ同数のサンプルサイズのサブグループに分けるということだから、分位数ちょうどのサンプルをどちらの範囲カテゴリに含めてもサイズのアンバランスは不可避であって、ベストな解はないと思う(そもそもカテゴリ化によって情報量は落ちるが、分布によっては悪くない)。先行研究があるなら、それに従うべきであろう。中央値より上か下かで2つのサブグループにするだけなら、fmsbパッケージのtruemedian()関数(リンク先pdfのpp.39-41)を使えば、たぶん同順位があっても、同順位の測定値が測定単位より高い精度で測ったら等間隔に分布すると仮定した場合の真の中央値が出るので、下の区間にも上の区間にもその値を含まないことにすれば、一応問題は解決する。例えば、8という値をもつ人が多数いて、それが中央値だった場合、真の中央値が7.5以上8未満であれば8は上の区間に含まれることになり、8以上8.5未満であれば下の区間に含まれることになる(真の中央値もちょうど8になってしまった場合にどうするかという問題は残るが、タイが多いのにそうなってしまう可能性は無視できるくらい小さいと思うので、とりあえず気にしないことにする)。もちろん、等間隔に分布すると仮定すれば、同順位となる分位数ちょうどのデータの一部は下の区間、残りは上の区間に振り分けられるべきだが、実際に同順位となった値のどの個体が下の区間、どの個体が上の区間に振り分けられるべきかを判定する方法が原理的に存在しないので、それは諦めるしかない。

しかしそれさえ我慢すれば、かつて奥村さんが議論されていたように、中央値だけではなく、任意の分位数について、同じ手口が使えるはずである。fmsbパッケージのtruemedian()関数は、等間隔の分布を仮定した真の値を生成してからmedian()をとっているので、returnされるmedian(YY)をquantile(YY, probs=c(0, 1/3, 2/3, 1))に変えるだけで真の三分位数を返すことができる。というわけで、truequantile()関数を定義してみた。例えば、 truequantile(sample(1:10, 100, rep=TRUE), probs=0:3/3)のように使うことができる。

truequantile <- function(X, h=1, probs=0:4/4, ...) { 
   X <- subset(X, !is.na(X))
   YY <- rep(0, length(X))
   XX <- table(X)
   q <- length(XX)
   k <- 0
   for (i in 1:q) {
      L <- as.numeric(names(XX)[i]) - h/2
      for (j in 1:XX[[i]]) {
         k <- k+1
         YY[k] <- L + h*(2*j - 1)/(2*XX[[i]])
      }
   }
   return (quantile(YY, probs=probs, ...))
}

ハモネプは3/2に生放送とのこと。素晴らしい。Doowop SoundsやNarinが本戦出場なら韓国から呼ぶということだよな。

いつの間にか日本のプロ野球は各球団キャンプインしていた。ライデルがまだ来日していないのは心配だが、ドラゴンズは長時間キャンプの様子をオンライン中継しているようだ。良いファンサービスだと思う。

佐藤俊哉先生のしまりすシリーズ、朝倉書店から『宇宙怪人しまりす 統計よりも重要なことを学ぶ』が近日発売と知った。既にアマゾンで予約受付していたので当然購入した。届くのが楽しみ。

今ひとつ使い方がわかっていないが、このところ統計相談が多いし、スラドも終わってしまうので、Bloggerに統計相談に乗ったときのメモを作ってみた。たぶんGoogleのアカウントがあるだけでコメントできるからコメントしやすいだろう。

GSICSでの仕事が終わってから帰宅し、オンラインで日本オセアニア学会関西例会に参加した。パプアニューギニアのミルンベイ州での葬送儀礼と贈与の話で、とても面白かった。

(list)

前【1545】(Friday's high(2024年2月2日) ) ▲次【1547】(書類作成(2024年2月4日) ) ●Top

Notice to cite or link here | [TOP PAGE]