[Power BI] DAXで回帰分析 LINESTX関数の効果的な使い方

ブログのアイキャッチ。DAXで回帰分析-LINESTX関数の効果的な使い方

このページでは、Power BIで回帰分析を行う方法を紹介します。DAX関数を使用して簡単に最小二乗法で回帰分析を実施します。
使用する関数:LINESTX

目次

回帰分析とは?基本を押さえよう

回帰分析は、変数間の関係を数学的にモデリングし予測や解析を行う手法です。データの傾向を見つけ出し、未来の予測に役立てるために用いられます。

散布図のデータ例。

Power BIでは、回帰分析のためのDAX関数が準備されており、最小二乗法を使用して計算を行います。
最小二乗法は、観測されたデータとモデルの予測値との差(誤差)の二乗和が最小になるように、モデルのパラメータを推定する方法です。この方法により、データの特長や傾向を示する直線を見つけることができます。

Power BIで回帰分析を行う方法

Power BIの散布図に傾向線を作成することはできますが、直線の傾きや切片を値として計算することはできず、そのため予測値を計算することが難しいです。

DAX関数には、回帰分析を行うための関数、LINESTX関数が存在します。この関数を使用して、直線の傾きや切片を計算します。

=LINESTX(“テーブル名”,[データY],[データX],オプション)
//散布図を作成する際に、Y軸に表示するデータを[データY]、X軸に表示するデータを[データX]とする。
//オプションは、切片を0として計算するか否かのオプション。FALSE指定で切片を0にする。

LINESTX関数は1行のテーブルを作成する関数です。作成したテーブルの列名は固定で、各列名を参照することで、計算結果を確認することができます。

LINESTX関数の使用方法

サンプルデータを基に、LINESTX関数の基本的な使用方法を紹介します。

使用するデータ

下記の、サンプルデータを使用します。データ数は100個、テーブルはSample_Data、列名をX、Yとします。

サンプルデータの抜粋。
サンプルデータの分布

LINESTX関数の基本的な使用方法

テーブルを作成する関数なので、モデリングタブから、新しいテーブルを選択、DAX関数を記述します。

新しいテーブルの位置
DAX関数の記述例
Regression_analysis = LINESTX(Sample_Data,[Y],[X])

下記の1行のテーブルが作成されました。

LINESTX関数によって作成されたテーブル。

各列の簡単な説明を記載します。詳細な説明はここでは割愛します。

列名日本語簡単な説明
Slope1傾き直線の傾き
Intercept切片直線のy切片
StandardErrorSlope1傾きの標準誤差データの直線関係性の評価。小さいほど直線性
StandardErrorIntercept切片の標準誤差切片の評価。小さいほど真の切片に近い。
CoefficientOfDetermination決定係数(R^2)0から1の範囲。1に近いほど推定された回帰式の当てはまりが良い。(予測精度が良い。)
StandardError推定値の標準誤差推定したyと実際のyのばらつきを示す。小さいほど正確
FStatisticF 統計モデルの有意性のための統計量。F分布表と比較。
DegreesOfFreedom自由度データ数-1-1で計算する。(分母の自由度)
RegressionSumOfSquares回帰平方和モデルのデータ変動の指標。大きいほど高予測性能
ResidualSumOfSquares残差平方和予測値の正確性。小さいほど予測値と実データが近い。

F分布表と比較する場合、分子の自由度は1になります。(独立変数が1つのため。)

直線の傾き(Slope1)切片(Intercept)を計算するだけでなく、作成したモデルの性能を評価するための指標も計算してくれます。

明示的に各数値を取り出したい場合は下記の様にすると値をして取得できます。

LINESTX関数の応用的な使用方法

計算式を表示する

LINESTX関数で計算した傾きと切片を使用して計算式を文字列データとして作成してます。。

新しいメジャーから、下記の計算式を入力、メジャーをカードで表示しています。

作成した計算式をグラフに表示。計算式はカードに表示。

画像内では、SELECTCOLUMNS関数の第2引数に赤線が表示されていますが、問題なく動作します。
メジャー記述時には、regressionテーブル内に[slope1]、[intercept]例の確認できないためだと思います。

計算式 = 
var regression = LINESTX(Sample_Data,[Y],[X]) 
var slope = SELECTCOLUMNS(regression,[slope1]) 
var intercept = SELECTCOLUMNS(regression,[intercept]) 

RETURN
"y = " & VALUE(ROUND(slope,2)) & "x + " & VALUE(ROUND(intercept,3))

散布図に回帰直線を引く方法は、視覚化の分析タブから傾向線の項目で設定できます。

散布図に傾向線を追加する方法。

予測値を計算する

計算した傾きと切片を使用して、任意の値(y)を計算する方法を紹介します。

新しいテーブルから下記のDAX式を入力し、予測値を計算するためのxのデータテーブルを作成します。今回は、モデルを作成するために使用するデータの最大値と最小値を使用して、0.1刻みのデータテーブルを作成します。

テーブル名は計算範囲とし、列名はValueになります。

予測値を計算するためのデータを作成する方法
計算範囲 = GENERATESERIES(ROUND(MIN(Sample_Data[X]),1),ROUND(MAX(Sample_Data[X]),1),0.1)

作成したテーブルに新しい列を追加し、予測値を計算します。

予測値を計算する方法。
予測値 = 
var regression = LINESTX(Sample_Data,[Y],[X]) 
var slope = SELECTCOLUMNS(regression,[slope1]) 
var intercept = SELECTCOLUMNS(regression,[intercept]) 

RETURN
slope*[Value]+intercept

Valueを基にした予測値を計算することができました。

予測値の結果をグラフとテーブルに表示。

モデルの作成に使用したデータの範囲外の値を使用して値を予測することは、回帰分析の仕組み上適していません。注意が必要です。

まとめ

  • LINESTX関数を使用して、回帰分析の傾きと切片を計算する。
  • LINESTX関数はテーブルを作成する関数。
  • 計算した傾きや切片を使用して、計算式の表示方法と値を予測する方法を紹介した。

関連記事

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

技術系職社会人:業務でPowerBI を活用/データ分析/インドア派/趣味:ゲーム、カプセルトイ収集/[III]Mosnterが好き/勉強中:Blender/日々習得した内容をアウトプットしていきます!

目次