空飛ぶチンアナゴの統計解析日記

統計解析を嗜むチンアナゴのメモ帳です

STATAで解くFizzBuzz問題


みんな大好きFizzBuzz問題をSTATAでもやってみようという話
FizzBuzzってなんぞやという方は、下記のwikipediaを見てください
ja.wikipedia.org

お品書き

  • 今日のルール
  • 共通コード
  • Fizzbuzzのコード
    • Forvaluesを使ったコード
    • whileループを使ったコード
    • 再帰で書く方法
  • まとめ
続きを読む

STATAにおけるKruskal-Wallis検定後の多重比較をどうするか問題

ANOVAに比べてKruskal-Wallis検定後の多重比較の記載が圧倒的に少ない気がするので色々書いてみます。

【参考事例】SPSSさんの場合

www.stats-guild.com

IBM SPSS Statistics Algorithms.pdf(英語版のみ):PDF776枚目
The Kruskal-Wallis, Friedman and Kendall, and Cochran tests use the procedure proposed by Dunn (1964) (originally designed for the Kruskal-Wallis test). The procedure uses ranks (or successes for the Cochran test) based on considering all samples rather than just the two involved in a given comparison.

とあるようにSPSSだとDunnの検定を使うそうです。
普通にMann-WhitneyのU検定をすべての組み合わせでやってBonferroni法でp値を調整してもいいんだろうけど、それはめんどいのであまりやりたくありません。
何かいいadoファイルはないかと探してみます。

探すとあるものですね

www.statalist.org
ということでDunnの検定をやってくれるadoファイルを見つけました。
やっぱりちゃんとあるものですね。
あとはこの記事の通りにやればインストールできます。

Affinityは学会ポスターの作成ツールとしてどのくらい使えるのか?

affinity.serif.com
結論から言うと弱点をわかっていれば問題なく使えますよと言う話
パワーポイントからちょっといいソフトへのステップアップとしてはおすすめ
(バージョン2.1は持ってないのでバージョン1での話です)

Affinityの苦手なところ

縦書きの文章と凝った日本語の組版

これだけは本当にどうにもならないです。残念ながらバージョン2になってもほとんど改善されておらずという声をよく聞きます。
もちろん単位として級(Q)や歯(H)も使えないからミリ単位での文字の調整がすごくめんどくさいのはパワーポイントとそんなに変わらず。
日本語の組版に凝りたいのであれば素直にadobeに課金した方がいいというのは基本的に変わらないみたい。

トンボの問題

これも実はめんどくさい。いわゆる日本式のトンボが使えないので印刷所から嫌がられることもあります。
もっともみんな大好きキンコーズではトンボなくてもOKどころか裁ち切りすらいらないので、実を言うとそこまで問題にならなかったり。
最悪「断ち切り分、大きく作ってそれで入稿すればええねん」という話ではありますので、あまりそこは気にしなくてもいい場合がほとんどかと。

まとめ

苦手なところさえ理解しておけば、だいたい使えるツールであることは間違いありません。
それこそ海外の学会に出すのであれば日本語の組版機能なんてそもそも不要なわけですからね。
また、だいたい学会のポスターは横書きということを考えると無理してadobeに手を出す必要はないけど、パワポよりもいいものを使いたいという方にはおすすめなツールのように思えます。

独自のモジュールを考える(STATA編)

pythonで言うところのimport構文で自作のモジュールを読み込ませたいなというお話

今日のお題

  1. 「こんにちは、〇〇さん(〇〇は任意の名前)」と表示する関数display_helloが記載されているDoFile「display_hello.do」を作成しなさい。
  2. 「display_hello.do」を別のDoFile「Hello_world.do」に読み込ませて、display_helloを用いて「こんにちは、田中さん」と表示させなさい。

とりあえずシンプルにこんな感じでやってみます。

「display_hello.do」モジュールの作成

capture program drop display_hello
program define display_hello
	args name
	display "こんにちは、`name'さん"
	end

シンプルにこんな感じです。
頭の「capture program drop 〜」はお約束のフレーズ。
この関数の場合、被ることはないですが、一応クセとしてつけておくとよいでしょう*1

Hello_world.doの作成

cd "自分の作業フォルダーのパスを入れる"
do "「display_hello.do」のパスを入れる"


* モジュールから読み込んだ関数を実行する
display_hello 田中

ざっくりやるとこんな感じです。
個人的に「do "「display_hello.do」のパスを入れる"」のパスは相対パスで入れるのが好みなのですが、今回は絶対パスでも相対パスでもどちらでもいいです。

実際に保存して実行してみる

問題なくSTATAの画面に

. display_hello 田中
こんにちは、田中さん

と出るはずです。出ない場合はパスが間違っているかタイポしている可能性があるのでもう一度ソースコードを確認してください。

*1:もっとも複数のモジュールを同時に読み込ませたりすることが予想される場合は敢えてこの一文をつけない方が良いかもしれません。関数の命名のかぶりを回避できるので……

グラフのテンプレート

www.lightstone.co.jp
www.lightstone.co.jp

地味に活用して欲しいLightStoneさん提供のSTATAのグラフのテンプレート
STATAのグラフについて解説してあるものというと
www.stata.com
公式の英語のcheat sheetsもありますが、そちらよりも実践的なのでおすすめ。

ぜひ活用していきましょう。

STATAを買うということ

STATAにも色々バージョンがあり、自費で買うとき迷うということはよくあると思います。
もちろん扱う予定のデータサイズによって違うけど、参考になれば幸いです。

取り扱えるデーターのサイズで考える

www.stata.com

Product features Stata/BE Stata/SE Stata/MP
データセットの最大の列数 2,048 32,767 120,000
データセットの最大の行数 2.14 billion 2.14 billion 20 billion
回帰分析における独立変数の最大数 798 10,998 65,532

だいたい比較するとこんな感じです。
一番安価なBEでも列数が2,048、行数21億なので、古典的な疫学調査であれば問題なく使えるでしょう。
使えるコマンドに差はありませんので、基本的に選ぶ理由はデータサイズと処理しなければならないデーターの量で決めると良いと思います。

一般的にはSEで十分?

とはいえ基本的にはBEだとやはり使える変数の数が物足りないというのがあります。
MPは大きなデータセットを高速で処理するには最適ですが、そもそもMPを必要とするデータセットを解析する機会があるかというと医療系の分野ではそうそうないように思えます。また、lassoのような機械学習をやるならMPという話もありますが、そもそもSTATAで機械学習というのがあまり一般的ではない気がします。
とはいえ、コンピューターのCore数とSTATAの指定Core数が離れていると処理速度が遅くなる*1といった話もあり、なるべく寄せた方がいいでしょう。もっとも8コアのCore i7に対してMP2コアとSE1コアでどれだけ差があるんだという話もありますが……
予算に余裕があるのであればMPを買ってもいいのだけど、そうでなければ基本的にSEを買っておけばいいのではないのかなという印象です。

おまけ:Stat/Transferについて

stattransfer.com
STATAの11ぐらいまでだと、Excelファイルがそのまま読み込めないのでStat/Transferで変換してどうこうなんてやってはいましたが、正直これを買わないといけないかと言われると基本的にいらないソフトになりました。
今だと、ExcelSASSPSSのファイルは全部読み込めるはずなので、そんなに困ることはないように思えます。
なのでよっぽど古い資産を使わないといけないとかいう縛りがない限りはもう買わなくてもいいかなと個人的には思います。

Python for Data Analysis, 3e

wesmckinney.com
ということでpandasの使い方といえば『コレ』みたいなイメージのある『Python for Data Analysis』の第3版がいつの間にか公開されていたようです。
First Openが去年の1月なのでちょっと前に公開されていたみたいですね。

まだ、邦訳はされていないみたいなので日本語版でということであれば

をつかわざる得ないのですが、こちらもだいぶ古くなってきたのでなるべく新しい方を使って勉強すると良いでしょう。

紙媒体はこちらからどうぞ


https://amzn.to/3C7Ceut