Seaborn-線形関係
ほとんどの場合、複数の量的変数を含むデータセットを使用します。分析の目的は、多くの場合、これらの変数を相互に関連付けることです。これは、回帰直線を介して実行できます。
回帰モデルを構築する際、私たちはよくチェックします multicollinearity,ここで、連続変数のすべての組み合わせ間の相関を確認する必要があり、存在する場合は多重共線性を削除するために必要なアクションを実行します。このような場合、次の手法が役立ちます。
線形回帰モデルを描画する関数
Seabornには、回帰によって決定された線形関係を視覚化する2つの主要な関数があります。これらの機能はregplot() そして lmplot()。
regplotとlmplot
regplot | lmplot |
---|---|
単純なnumpy配列、pandas Seriesオブジェクト、またはpandas DataFrame内の変数への参照など、さまざまな形式のx変数とy変数を受け入れます | 必須パラメーターとしてデータがあり、x変数とy変数は文字列として指定する必要があります。このデータ形式は「ロングフォーム」データと呼ばれます |
プロットを描いてみましょう。
例
この例で同じデータを使用してregplotをプロットしてからlmplotをプロットする
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('tips')
sb.regplot(x = "total_bill", y = "tip", data = df)
sb.lmplot(x = "total_bill", y = "tip", data = df)
plt.show()
出力
2つのプロット間のサイズの違いを確認できます。
変数の1つが離散値を取る場合、線形回帰を当てはめることもできます
例
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('tips')
sb.lmplot(x = "size", y = "tip", data = df)
plt.show()
出力
さまざまな種類のモデルのフィッティング
上で使用した単純な線形回帰モデルは、適合が非常に簡単ですが、ほとんどの場合、データは非線形であり、上記の方法では回帰直線を一般化できません。
アンスコムのデータセットを回帰プロットで使用してみましょう-
例
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('anscombe')
sb.lmplot(x="x", y="y", data=df.query("dataset == 'I'"))
plt.show()
この場合、データは分散の少ない線形回帰モデルに適しています。
データの偏差が大きく、最適な線が適切でないことを示す別の例を見てみましょう。
例
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('anscombe')
sb.lmplot(x = "x", y = "y", data = df.query("dataset == 'II'"))
plt.show()
出力
プロットは、回帰直線からのデータポイントの大きな偏差を示しています。このような非線形の高次は、を使用して視覚化できます。lmplot() そして regplot()。これらは、多項式回帰モデルに適合して、データセット内の単純な種類の非線形傾向を調査できます。
例
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('anscombe')
sb.lmplot(x = "x", y = "y", data = df.query("dataset == 'II'"),order = 2)
plt.show()