相関係数の計算を行うJavaのサンプルプログラムをまとめています。
このページの目次です。
相関係数は以下の式で表現されます。Sxyは偏差積和、Sxx、Syyは偏差平方和です。
相関係数を計算するJavaのプログラムのコードです。 統計の知識に関しては、『多変量解析法入門 (ライブラリ新数学大系) 』(永田靖)の第2章 統計的方法の基礎知識を参考にしています。
相関係数の計算を行うサンプルプログラムです。
計算を行うクラスです。
import java.util.ArrayList; import java.util.List; /** * 計算クラス */ public class Calculator { /** * 相関係数を計算する * @param itemXi 項目リスト(Xi) * @param itemYi 項目リスト(Yi) * @return 結果 */ public Double correlationCoefficient(final List<Double> itemsXi, final List<Double> itemsYi) { Double sxy = deviationSumOfProduct(itemsXi, itemsYi); Double sxx = sumOfSquares(itemsXi); Double syy = sumOfSquares(itemsYi); return sxy / Math.sqrt(sxx * syy); } /** * 偏差積和を計算する * @param itemXi 項目リスト(Xi) * @param itemYi 項目リスト(Yi) * @return 結果 */ public Double deviationSumOfProduct(final List<Double> itemsXi, final List<Double> itemsYi) { List<Double> itemsXiYi = new ArrayList<>(); int n = itemsXi.size(); for (int i = 0; i < n; i++) { itemsXiYi.add(itemsXi.get(i) * itemsYi.get(i)); } Double xiyiSum = sum(itemsXiYi); Double xiSum = sum(itemsXi); Double yiSum = sum(itemsYi); return xiyiSum - ((xiSum * yiSum) / n); } /** * 平方和を計算する * @param items 項目リスト * @return 結果 */ public Double sumOfSquares(final List<Double> items) { Double xbar = average(items); List<Double> squares = new ArrayList<>(); for (Double item : items) { Double sqare = (item - xbar) * (item - xbar); squares.add(sqare); } return sum(squares); } /** * 平均値を計算する * @param items 項目リスト * @return 結果 */ public Double average(final List<Double> items) { return sum(items) / items.size(); } /** * 総和を計算する * @param items 項目リスト * @return 結果 */ public Double sum(final List<Double> items) { Double result = 0.0; for (Double item : items) { result += item; } return result; } }
テスト用のクラスです。
import java.util.ArrayList; import java.util.List; /** * サンプルのテスト用クラス */ public class SampleTest { private static int[] xi = { 28, 30, 25, 27, 32, 36, 31, 29, 30, 35, 33, 37, 36, 33, 28, 34, 27, 35, 33, 31, 35, 28, 31, 39, 34, 31, 38, 37, 32, 31}; private static int[] yi = { 73, 67, 62, 71, 70, 73, 72, 71, 73, 74, 76, 78, 77, 71, 66, 70, 64, 75, 68, 66, 69, 65, 66, 71, 77, 70, 81, 73, 75, 78}; public static void main(String[] args) { List<Double> itemsXi = prepareTestData(xi); List<Double> itemsYi = prepareTestData(yi); Calculator calc = new Calculator(); Double sxy = calc.deviationSumOfProduct(itemsXi, itemsYi); Double sxx = calc.sumOfSquares(itemsXi); Double syy = calc.sumOfSquares(itemsYi); Double r = calc.correlationCoefficient(itemsXi, itemsYi); System.out.println("偏差積和(Sxy)\t\t:" + sxy); System.out.println("偏差平方和(Sxx)\t:" + sxx); System.out.println("偏差平方和(Syy)\t:" + syy); System.out.println("相関係数(r)\t\t:" + r); } private static List<Double> prepareTestData(int[] sample) { List<Double> items = new ArrayList<>(); for (int data : sample) { items.add((double) data); } return items; } }
実行すると以下のように表示されます。
偏差積和(Sxy) :302.6000000000058 偏差平方和(Sxx) :372.79999999999995 偏差平方和(Syy) :621.2000000000002 相関係数(r) :0.6288039313820871
参考にしている書籍の情報をまとめています。
『入門 統計解析法』の基本情報です。
以下は『多変量解析法入門』の基本情報です。
もっと知識を広げるための参考です。
Javaで学ぶ計算プログラムの入門コンテンツをテーマに記事まとめています。 簡単な平均値の計算プログラムから知識を補足しつつ系統立てて説明しています。 標準偏差、相関係数、連立方程式の解法プログラム、回帰分析などの統計解析などの計算プログラムを取り扱っています。
Javaとは?から言語の枠を超えるところまで、Java言語についてまとめています。
スポンサーリンク
サイト内のページ
言語
C・C++
/HTML
/Java
/JavaScript
/PHP
/シェルスクリプト
開発環境
Ant
/Burp
/Eclipse
/Fiddler
/gcc
/gdb
/Git
/g++
/JDK
/JMeter
/JUnit
/Teraterm
/ZAP
技術・仕様
Ajax
/CORBA
/Jakarta EE(旧称J2EE、Java EE)
/JNI
ライブラリ/Framework/CMS
bootstrap
/jQuery
/FuelPHP
/Lucene
/MyBatis
/Seasar2
/Spring
/Struts
/WordPress
Web API
Google Maps
ITインフラOSとミドルウェア
Linux
/Windows
/シェル
ActiveMQ
/Tomcat
/MariaDB
/MySQL
/Nagios
/Redis
/Solr
ITインフラセキュリティ
公開サーバーのセキュリティ
SI
ホームページの作り方
スポンサーリンク
関連サイト内検索ツール
zealseedsおよび関連サイト内のページが検索できます。
IPアドレス確認ツール
あなたのグローバルIPアドレスは以下です。
3.145.59.89
HTMLの表示色確認ツール
パスワード生成ツール
文字数のプルダウンを選択して、取得ボタンを押すと「a~z、A~Z、0~9」の文字を ランダムに組み合わせた文字列が表示されます。
ここに生成されます。
スポンサーリンク
Copyright (C) 2007-2024 zealseeds. All Rights Reserved. Loarding…