関連情報
ホーム > 製品 > NAG数値計算ライブラリ > C#向けNAGライブラリ > サンプルソースコード集 > ピアソンの積率相関係数と分散共分散行列の計算

C#による ピアソンの積率相関係数と分散共分散行列の計算

C#によるサンプルソースコード
使用関数名:g02bx

Keyword: ピアソン, 積率相関係数, 分散共分散行列, 計算

概要

本サンプルはピアソンの積率相関係数と分散共分散行列の計算を行うC#によるサンプルプログラムです。 本サンプルは以下に示される観測値について平均、標準偏差、分散共分散行列、ピアソンの積率相関係数(Pearson product-moment correlation coefficients)の計算を行います。

分散共分散行列のデータ 

※本サンプルはNAG Library for .NETに含まれる関数 g02bx() のExampleコードです。本サンプル及び関数の詳細情報は g02bx のマニュアルページをご参照ください。
ご相談やお問い合わせはこちらまで

入力データ

(本関数の詳細はg02bx のマニュアルページを参照)

このデータをダウンロード
g02bx Example Program Data
 'u'     20       5 
11.25 48.9 7.43 2.270 15.48
10.87 47.7 7.45 1.971 14.97
11.18 48.2 7.44 1.979 14.20
10.62 49.0 7.38 2.026 15.02
11.02 47.4 7.43 1.974 12.92
10.83 48.3 7.72 2.124 13.58
11.18 49.3 7.05 2.064 14.12
11.05 48.2 6.95 2.001 15.34
11.15 49.1 7.12 2.035 14.52
11.23 48.6 7.28 1.970 15.25
10.94 49.9 7.45 1.974 15.34
11.18 49.0 7.34 1.942 14.48
11.02 48.2 7.29 2.063 12.92
10.99 47.8 7.37 1.973 13.61
11.03 48.9 7.45 1.974 14.20
11.09 48.8 7.08 2.039 14.51
11.46 51.2 6.75 2.008 16.07
11.57 49.8 7.00 1.944 16.60
11.07 47.9 7.04 1.947 13.41
10.89 49.6 7.07 1.798 15.84 

  • 1行目はタイトル行で読み飛ばされます。
  • 2行目に重みづけをするかどうかを示すフラグ(weight)、観測値の数(n)、変数の数(m)を指定しています。"u"は重みづけを使用しないことを意味します。
  • 3〜22行目は観測値(x)を指定しています。

出力結果

(本関数の詳細はg02bx のマニュアルページを参照)

この出力例をダウンロード
g02bx Example Program Results

      Means 
    11.0810    48.7900     7.2545     2.0038    14.6190 

      Standard deviations 
     0.2132     0.9002     0.2349     0.0902     1.0249 

      Correlation matrix
          1       2       3       4       5
 1   1.0000  0.4416 -0.5427  0.0696  0.3912
 2           1.0000 -0.5058 -0.0678  0.7057
 3                   1.0000  0.2768 -0.4352
 4                           1.0000 -0.1494
 5                                   1.0000


  • 3〜4行目に標本平均が出力されています。
  • 6〜7行目に標準偏差が出力されています。
  • 9〜15行目に相関行列が出力されています。

ソースコード

(本関数の詳細はg02bx のマニュアルページを参照)

※本サンプルソースコードは .NET環境用の科学技術・統計計算ライブラリである「NAG Library for .NET」の関数を呼び出します。
サンプルのコンパイル及び実行方法


このソースコードをダウンロード
//      g02bx Example Program Text
//      C# version, NAG Copyright 2008
using System;
using NagLibrary;
using System.IO;
namespace NagDotNetExamples
{
  public class G02BXE
  {
    static bool defaultdata = true;
    static string datafile = "";
    static void Main(String[] args)
    {
      if (args.Length == 1)
      {
        defaultdata = false;
        datafile = args[0];
      }
      StartExample();
    }
    public static void StartExample()
    {
      try
      {
        DataReader sr = null;
        if (defaultdata)
        {
          sr = new DataReader("exampledata/g02bxe.d");
        }
        else
        {
          sr = new DataReader(datafile);
        }
        int i,   j,   m,   n; string weight = "";
        int ifail;
        Console.WriteLine("g02bx Example Program Results");
        //      Skip heading in data file
        sr.Reset();
        sr.Reset();
        weight = sr.Next();
        n = int.Parse(sr.Next());
        m = int.Parse(sr.Next());
        double[,] r = new double[m, m];
        double[] std = new double[m];
        double[,] v = new double[m, m];
        double[] wt = new double[n];
        double[,] x = new double[n, m];
        double[] xbar = new double[m];
        if (m >= 1 && n > 1)
        {
          if ((weight == "W") || (weight == "w"))
          {
            for (i = 1; i <= n; i++)
            {
              sr.Reset();
              for (j = 1; j <= m; j++)
              {
                x[i - 1, j - 1] = double.Parse(sr.Next());
              }
              wt[i - 1] = double.Parse(sr.Next());
            }
          }
          else
          {
            for (i = 1; i <= n; i++)
            {
              sr.Reset();
              for (j = 1; j <= m; j++)
              {
                x[i - 1, j - 1] = double.Parse(sr.Next());
              }
            }
          }
          // 
          G02.g02bx(weight, n, m, x, wt, xbar, std, v, r, out ifail);
          // 
          if ((ifail == 0) || (ifail == 5))
          {
            Console.WriteLine(" ");
            Console.Write(" {0}", "     Means");
            Console.WriteLine(" ");
            for (i = 1; i <= m; i++)
            {
              Console.Write(" {0,10:f4}", xbar[i - 1]);
            }
            Console.WriteLine(" ");
            Console.WriteLine(" ");
            Console.Write(" {0}", "     Standard deviations");
            Console.WriteLine(" ");
            for (i = 1; i <= m; i++)
            {
              Console.Write(" {0,10:f4}", std[i - 1]);
            }
            Console.WriteLine(" ");
            // 
            //            Print the correlation matrix
            // 
            if (ifail == 5)
            {
              Console.WriteLine(" ");
              Console.Write(" {0}", " NOTE: some variances are zero");
            }
            Console.WriteLine(" ");
            X04.x04ca("Upper", "Non-unit", m, m, r, "     Correlation matrix", out ifail);
            Console.WriteLine(" ");
          }
          else
          {
            Console.WriteLine(" ");
            Console.WriteLine("** g02bx failed with ifail = {0,5}", ifail);
          }
        }
        else
        {
          Console.Write("  {0}{1,6}{2}{3,6}", "M or N is too large. M =", m, ", N =", n);
        }
        // 
      }
      catch (Exception e)
      {
        Console.WriteLine(e.Message);
        Console.Write( "Exception Raised");
      }
    }
  }
}


Results matter. Trust NAG.

Privacy Policy | Trademarks