ダイエットとStataの使い方 5

お久しぶりです。とりあえずの進捗報告です。

今回のポイント

複数のグラフをまとめる方法
Lowess平滑化

まず、複数のグラフをまとめる方法です。
以前に体重はダイエットを始めてすぐは減りやすいが徐々に減りにくくなるという話をしました。
そこで、BMIとその対数を取ったものと比較をしたと思います。
これらのグラフをgraph combineを使ってまとめます。

twoway scatter bmi date if date>= date("1/1/2022","MDY",.) || lfit  bmi date if date>= date("1/1/2022","MDY",.), name(g1)
twoway scatter lnbmi date if date>= date("1/1/2022","MDY",.) || lfit  lnbmi date if date>= date("1/1/2022","MDY",.), name(g2)
graph combine g1 g2

これを実行するとこうなります。

画像1

Y軸がゼロから始まっていないのとBMIの値が小さいので対数を取ってもあまり違いが判りません。

続いて、散布図を見る限り明らかに直線ではなく反比例のグラフのような曲線になっていることがわかります。そこで、直線近似ではなく少し違った方法で近似したいと思います。今回紹介するのはLowess平滑化です。

Lowess平滑化はlowessコマンドで実行でき、デフォルトではバンド幅が0.8です。バンド幅が0.8ということなので、サンプルのうちの80%を使って回帰分析をしているということです。これをそれぞれxについてサンプルサイズの数だけ行っていますが、それぞれの回帰分析において中心にあるxの値(x*とします)に近いものほど比重を上げてx*の値から遠いものの比重を下げて計算しています。

すなわち、バンド幅を小さくしすぎると元のプロットのようになってグニャグニャの線になり大きすぎるとほぼ直線になってしまいます。

試しにバンド幅を0.1、0.5、1の3種類で行ったものを下に示します。

画像2

画像3

コードはこれです。

twoway (scatter bmi date if date>= date("1/1/2022","MDY",.) )(lowess  bmi date if date>= date("1/1/2022","MDY",.), bwidth(0.1) name(b01)),title("Band Width=0.1")
twoway (scatter bmi date if date>= date("1/1/2022","MDY",.) )(lowess  bmi date if date>= date("1/1/2022","MDY",.),  name(b05)),title("Band Width=0.5")
twoway (scatter bmi date if date>= date("1/1/2022","MDY",.) )(lowess  bmi date if date>= date("1/1/2022","MDY",.), bwidth(1) name(b10)),title("Band Width=1")
graph combine b01 b05
graph combine b10

バンド幅が0.8と1ではあまり変わっていませんが、バンド幅が0.1のときはバンド幅が狭すぎて解釈しにくいグラフとなっています。

とりあえず、食事管理の経過日数とBMIは線形の関係ではなさそうなことがわかりました。


この記事が気に入ったらサポートをしてみませんか?