関連情報

C#による 偏相関/分散共分散行列の計算

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

Keyword: 偏相関, 分散共分散行列, 計算

概要

本サンプルは偏相関/分散共分散行列の計算を行うC#によるサンプルプログラムです。 本サンプルは以下に示される観測値について相関・偏相関行列の計算を行います。

偏相関/分散共分散行列のデータ 

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

入力データ

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

このデータをダウンロード
g02by Example Program Data
15 3
112 0.30 0.09
140 0.49 0.16
143 0.61 0.22
120 0.49 0.14
196 2.64 0.75
294 3.45 0.86
513 4.46 1.34
518 4.46 1.34
430 1.22 0.47
274 1.22 0.47
255 0.32 0.22
236 0.29 0.23
256 0.50 0.26
222 0.32 0.16
213 0.32 0.16
 2  1
-1 -1  1 

  • 1行目はタイトル行で読み飛ばされます。
  • 2行目に観測値の数(n)と相関行列の変数の数(m)を指定しています。
  • 3〜17行目に死亡者数と煙、二酸化硫黄の濃度を表す観測値(x)を指定しています。
  • 19行目はY変数の数(ny)とX変数の数(nx)を指定しています。
  • 20行目はどの変数がX変数/Y変数に属するかを示すパラメータ(isz)を指定しています。0未満の値の場合はY変数、0より大きい値の場合はX変数に属することを意味します。

出力結果

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

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

 Correlation matrix
          1       2       3
 1   1.0000  0.7560  0.8309
 2           1.0000  0.9876
 3                   1.0000

 Partial Correlation matrix
          1       2
 1   1.0000 -0.7381
 2           1.0000

  • 3〜7行目に相関行列が出力されています。
  • 9〜12行目に偏相関行列が出力されています。

ソースコード

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

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


このソースコードをダウンロード
//      g02by Example Program Text
//      C# version, NAG Copyright 2008
using System;
using NagLibrary;
using System.IO;
namespace NagDotNetExamples
{
  public class G02BYE
  {
    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/g02bye.d");
        }
        else
        {
          sr = new DataReader(datafile);
        }
        int j,   k,   m,   n,   nx,   ny; int ifail;
        Console.WriteLine("g02by Example Program Results");
        //      Skip heading in data file
        sr.Reset();
        sr.Reset();
        n = int.Parse(sr.Next());
        m = int.Parse(sr.Next());
        double[,] p = new double[m, m];
        double[,] r = new double[m, m];
        double[] std = new double[m];
        double[] wt = new double[n];
        double[,] x = new double[n, m];
        double[] xbar = new double[m];
        int[] isz = new int[m];
        if (m >=1 && n >= 1)
        {
          sr.Reset();
          for (j = 1; j <= n; j++)
          {
            for (k = 1; k <= m; k++)
            {
              x[j - 1, k - 1] = double.Parse(sr.Next());
            }
          }
          // 
          //         Calculate correlation matrix
          // 
          // 
          G02.g02bx("U", n, m, x, wt, xbar, std, r, p, out ifail);
          // 
          if (ifail == 0)
          {
            // 
            //            Print the correlation matrix
            // 
            Console.WriteLine(" ");
            X04.x04ca("Upper", "Non-unit", m, m, p, "Correlation matrix", out ifail);
            sr.Reset();
            ny = int.Parse(sr.Next());
            nx = int.Parse(sr.Next());
            sr.Reset();
            for (j = 1; j <= m; j++)
            {
              isz[j - 1] = int.Parse(sr.Next());
            }
            // 
            //            Calculate partial correlation matrix
            // 
            // 
            G02.g02by(m, ny, nx, isz, r, p, out ifail);
            // 
            if (ifail == 0)
            {
              // 
              //               Print partial correlation matrix
              // 
              Console.WriteLine(" ");
              X04.x04ca("Upper", "Unit", ny, ny, p, "Partial Correlation matrix", out ifail);
            }
            else
            {
              Console.WriteLine(" ");
              Console.WriteLine("** g02by failed with ifail = {0,5}", ifail);
            }
          }
          else
          {
            Console.WriteLine(" ");
            Console.WriteLine("** g02bx failed with ifail = {0,5}", ifail);
          }
        }
        // 
      }
      catch (Exception e)
      {
        Console.WriteLine(e.Message);
        Console.Write( "Exception Raised");
      }
    }
  }
}


Results matter. Trust NAG.

Privacy Policy | Trademarks