2020年9月10日はじめに「蓬莱の幻想」さんのサイトを参考にして、架空の人物データを実際に作成しました。架空の人物のデータ元となるのは、18歳~22歳の女性1634名を対象に1992年から1995年にかけて行われた身体測定データを参考にさせて頂いております。合わせて人数を水増しして、3000名、10000名分のデータも作成してみました。作成した架空人物データのダウンロード今回作成した架空人物の身体データのダウンロードは、以下のリンクから可能です。(ファイル形式は、.csvです。エクセル、あるいはメモ帳などで開くことができます。<バスト・ヒップ>左側の図が今回作成した架空人物のデータを基に、バストとヒップのサイズを散布図にしたものです。右側の図は、実際に採寸された値を基にして論文で掲載されていた散布図です。今回の架空人物データは、元のデータをほぼ再現することができました。バストもヒップもサイズが非常に多きい人物といった例外的な値までは、架空人物データでは再現しきれなかったようです。図をみてみると、ヒップのサイズが大きい人はバストのサイズも大きいと言えそうです。言い換えると、ヒップのサイズとバストのサイズはある程度相関がありそうです。<ウェスト・ヒップ>左側の図が今回作成した架空人物のデータを基に、ウェストとヒップのサイズを散布図にしたものです。右側の図は、実際に採寸された値を基にして論文で掲載されていた散布図です。今回の架空人物データは、元のデータをほぼ再現することができました。こちらもウェストもヒップもサイズが非常に多きい人物といった例外的な値までは、架空人物データでは再現しきれなかったようです。図をみてみると、ウェストのサイズが大きい人はヒップのサイズも大きいと言えそうです。バストとヒップのサイズと、ウェストとヒップのサイズを見比べると、ウェストとヒップの図のほうがより各点が直線的に並んでいるように見えますので、バストとヒップのサイズよりも、ウェストとヒップのサイズの結び付きのほうが大きいといえるでしょう。バストが大きければヒップも大きいと言えますが、バストとヒップの関係よりもウェストが大きいとヒップが大きいという関係のほうが大きいということですね。<身長・バスト>左側の図が今回作成した架空人物のデータを基に、身長とバストのサイズを散布図にしたものです。右側の図は、実際に採寸された値を基にして論文で掲載されていた散布図です。今回も架空人物のデータはある程度実際のデータを模倣できていると言えそうですが、身長とバストの図を見てみると全体的に直線的ではなく円のような形で各点が並んでいます。身長とバストの各点が直線的に並んでいれば、身長の高さとバストの大きさは関連があるといえますが、今回は各点が円のように並んでいるので、身長の高さとバストの大きさは関連がなさそうです。身長が高くてバストが大きいひともいるし、身長が高くてバストが小さい人もいるということですね。スリーサイズの各数値の間でどのような関係があるのかを見てきましたが、ここからは今回作成した人口データの内容を元に見ていきましょう。<身長・ヒップ>左側の図が今回作成した架空人物のデータを基に、身長とヒップのサイズを散布図にしたものです。右側の図は、上記で既に載せたウェストとヒップの散布図です。比較の為に再掲してあります。身長とヒップの散布図を見てみると、ウェストとヒップの散布図ほと一直線には並んでいないようです。言っても、身長とヒップの散布図は、円のように各点がバラバラという訳でもありませんので、身長とヒップの関係は若干あると言えるといった程度でしょうか。身長が高い人はヒップも大きいと言えなくもないが、そうでない場合もあるという感じですね。<身長・体重>左側の図が今回作成した架空人物のデータを基に、身長と体重を散布図にしたものです。右側の図は、上記で既に載せたウェストとヒップの散布図です。比較の為に再掲してあります。身長と体重の散布図を見てみると、上記の身長とヒップと同じような点の並びかたですね。これも身長と体重の関係は若干あると言えるといった程度でしょうか。身長が高い人は体重が重いと言えなくもないが、身長が高くても体重が軽い人もいるという感じですね。各測定項目間の関連度合いちなみに、今まで身長と体重が関連しているのか、関連していないのか、若干関連しているようだ、などと曖昧な表現でしたが数値で表すとどのようになるのかみてみましょう。https://www.jstage.jst.go.jp/article/jje1965/33/2/33_2_97/_pdf上記は、元々の論文データに記載されていた各項目間の関連度合いを示した表です。関連が高ければ高いほど1に近くなります。逆に関連が無い場合は0の数字となります。縦の身長と横の身長が重なる一番左上の数字は1になってますね。当然ですが身長と身長は完全な関連があるので、最高値の1です。身長と体重の関連度合いは、0.47830となっているので、完全な関連があるとも言えませんし、全く関連がないとも言えない、若干関連があるといった程度でしょう。ウェストと体重の関連度合いが0.83351、ヒップと体重の関連度合いが0.87817となっているので、このあたりの関連度合いがやはり高そうです。架空の人物データ作成方法それでは、以降は実際に架空の人物データを作成した手順を一気に記載していきます。架空の人物データの作成方針については、以下の方針に従います。共分散行列と乱数を使い、その傾向を模したサンプルデータを作るためには、2つの条件があります。明らかになっています。(相関係数についてはこちら。)しかし、バスト、ウェスト、ヒップのデータは、「蓬莱の幻想」さんによると正規分布ではなく対数正規分布になっていることがヒストグラムから読み取れるそうですので、バスト、ウェスト、ヒップと体重のデータについては、以下の計算式で対数変換を行います。対数正規分布の平均(μx)、標準偏差(σx)が与えられれば、次式により対数正規分布のパラメータである正規分布の平均値(μ)、標準偏差(σ)が計算できる。/2http://godfoot.world.coocan.jp/Lognorm-Prob.htmバスト、ウェスト、ヒップ、体重は上記で述べたように、対数正規分布になっているため、元の資料に記載されている以下のデータを上記の式を使って変換します。[変換前][変換後]また、共分散行列については、相関係数が以下のように求められる為、元データに載っている相関係数から、共分散の値を算出します。算出した共分散を行列として並べて共分散行列を作成します。{身長の標準偏差×バストの標準偏差}以上の内容を考慮して、以下の手順で架空の人物データを作成していきます。Pandasデータフレームで部分一致検索した列名、行名の列番号、行番号を取得する。Commentsみひらぎはじめまして。個人でゲームを作っており、キャラクターの身長体重3サイズを自動生成したいと検索し、こちらのブログに辿り着きました。概念、計算方法が難しい数式を使わずわかりやすく書かれており、ありがたく読ませていただきました。ここまでの記事で相関についてある程度分かったつもりになった上で、共分散行列から実際に疑似データを作成する方法が知りたいです。検索しても共分散を求める方法までしか見つけられませんでした。記事の続きを書いてはいただけないでしょうか。ReplyK共分散行列から実際に疑似データを作成する方法は、Pythonのライブラリを使ってサクッと作ったような気がします。このあたりのサイトが参考になるかと。ReplyみひらぎPythonライブラリの紹介をありがとうございます。疑似データを作成するための数式の方面ばかり探していて、プログラミング側から使えるライブラリを探すという発想が抜けておりました。使用言語がjavascriptなので、javascriptでも使えるライブラリやスクリプトがないか探してみます。返信くださりありがとうございました。Replyみひらぎたびたびすみません。Pythonのnumpyでrandom.multivariate_normalをしてみたのですが、期待した結果を得られませんでした。https://gist.github.com/asakayu/e783cbe5aaa33c25bbc5575d991e2ad3引数に記事で上げていただいている共分散行列の表と、それぞれの項目の平均値を入れてみましたが、記事のCSVのようにうまく値が散らばりませんでした。引数に入れる値を間違えているのだと思います。どの値を入れて計算されたかお教えいただけないでしょうか。ReplyK散らばらない値というのは、バスト、ウェスト、ヒップ、体重、ですよね。これらの項目の平均値は、正規分布に変換後の値を入れた気がします。出てきた値に対して対数変換の逆の計算を行うと最終的な値になったような気がします。Replyみひらぎありがとうございます。記事のhttps://blog.aiampy.net/wp-content/uploads/2020/09/covariance_matrix.pngの表が正規分布に変換後の値だとは思うのですが、ここからrandom.multivariate_normalして出た値をさらに対数変換の逆で元の値に戻すということでしょうか。対数変換log変換の当たりがうまく理解できず読み飛ばしてしまっていたので、対数変換について勉強してみます。2022年8月11日みひらぎ疑似データの生成に成功しました!https://colab.research.google.com/drive/1eEgW7H4wSFRpHU5rnNZ5sPcpKcThfeKN記事とコメント返信でお答えいただけたおかげでここまで辿り着けました。ありがとうございました。元データの平均値をexpやlogすることだと気づくのに時間がかかっていました......できれば共分散行列も計算で求めたいと思っていますが、現状記事の行列をそのまま使わせていただいております。リリースまでに解決出来なかった場合に、この記事の共分散行列のデータをゲーム内で使わせていただいてもよろしいでしょうか。ReplyKそもそもの入力する平均値に、バスト、ウェスト、ヒップ、体重の項目は以下の正規分布後の平均値を使ってほしいという意図でしたが、実施された計算方法でも似たような計算結果になるようですね。/2」値分が誤差になる程度ですかね。)https://blog.aiampy.net/wp-content/uploads/2020/09/log_mean.png共分散行列のデータに関しましては、ご自由にご利用ください。Replyみひらぎ共分散行列の生成までできました!!!https://colab.research.google.com/drive/1Bw145hiYs3hTQHN_Xh_TAlnFij_3fkfx少数第二位まで元データの平均と結果を一致させられたので、おそらくこの記事で書かれたことは実現できたかと思います。コメントをキャンセルメールアドレスが公開されることはありません。付いている欄は必須項目ですCommentName*Email*Website次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。上に表示された文字を入力してください。SidebarSearch最近の投稿HP・OMENのBIOSリセット方法。