UI設計したり、ウェブシステムを開発したりします。 

SQL見るだけクエリ#112 PHPで重回帰分析して住宅価格を予測する

記入日:2023-04-30 編集日:2023-04-30

PHPで重回帰分析して住宅価格を予測する方法を解説してみようと思います。

この記事を読むと(約5分)
PHPで重回帰分析して住宅価格を予測する方法がイメージできます。

PHPで重回帰分析して住宅価格を予測する

重回帰分析は、複数の説明変数を用いて目的変数を予測する統計的手法です。PHPを用いた重回帰分析の例として、以下のようなデータセットを使って、住宅価格を予測する例を示します。

まず、データセットを読み込みます。

$data = array(
  array(2104, 3, 399900),
  array(1600, 3, 329900),
  array(2400, 3, 369000),
  array(1416, 2, 232000),
  array(3000, 4, 539900),
  // ... データが続く
);

このデータセットでは、住宅の広さ(平方フィート)、部屋の数、価格がそれぞれ格納されています。このデータを用いて、重回帰分析を行います。

// 説明変数と目的変数を分割
$X = array();
$Y = array();
foreach ($data as $d) {
  $X[] = array_slice($d, 0, 2);
  $Y[] = $d[2];
}

// 行列演算用の関数を定義
function transpose($a) {
  return array_map(null, ...$a);
}

function dot($a, $b) {
  return array_map(function($x) use ($b) {
    return array_sum(array_map(function($y, $z) {
      return $y * $z;
    }, $x, $b));
  }, $a);
}

function invert($a) {
  $n = count($a);
  $b = array_fill(0, $n, array_fill(0, $n, 0));
  for ($i = 0; $i < $n; $i++) {
    $b[$i][$i] = 1;
  }
  for ($i = 0; $i < $n; $i++) {
    $f = $a[$i][$i];
    for ($j = 0; $j < $n; $j++) {
      $a[$i][$j] /= $f;
      $b[$i][$j] /= $f;
    }
    for ($j = 0; $j < $n; $j++) {
      if ($i != $j) {
        $f = $a[$j][$i];
        for ($k = 0; $k < $n; $k++) {
          $a[$j][$k] -= $a[$i][$k] * $f;
          $b[$j][$k] -= $b[$i][$k] * $f;
        }
      }
    }
  }
  return $b;
}

// データの前処理
$n = count($X);
$p = count($X[0]);
$X_t = transpose($X);
$X_t_X = dot($X_t, $X);
$X_t_Y = dot($X_t, $Y);

// 重回帰分析の計算
$beta = dot(invert($X_t_X), $X_t_Y);

// 予測値の計算
$x_new = array(1650, 3);
$y_pred = array_sum(array_map(function($x, $b) {
  return $x * $b;
}, $x_new, $beta));
echo $y_pred;

このコードでは、新しいデータとして、1650平方フィートの住宅で、3部屋ある場合の価格を予測しています。計算結果は、予測された価格が表示されます。

以上が、PHPを用いた重回帰分析の例となります。重回帰分析については、行列の計算を行う必要があるため、比較的複雑な処理が必要となりますが、PHPなどの言語を使って実装することができます。

SQLの使いどころ

サイトに大量の情報を掲載することは、ユーザーにとってとても便利なことです。しかし、情報が多すぎると、目的の情報を見つけるのが困難になります。そのため、SQLを使用することで、情報を効率的に管理することができます。

SQLを使用することで、データベース内の情報を検索したり、フィルタリングしたりすることができます。これにより、ユーザーは目的の情報をスムーズかつ簡単に見つけることができます。

また、SQLを使用することで、データを集計したり、統合したりすることもできます。これにより、ユーザーはさまざまな視点から情報を分析することができます。つまり、サイトに多くの情報を掲載することが重要である一方で、その情報を効率的かつ簡単に管理することが求められる場合には、SQLが不可欠であるといえます。

KK

機械工学を専攻。工業デザイナーとして、国内及び海外の自動車・搬送ラインの設計などに従事した後、2003年にウェブシステム会社を設立。UI設計やウェブシステムの開発、DX化のディレクションなどを行っています。