関連情報
ホーム > 製品 > NAG数値計算ライブラリ > C#向けNAGライブラリ > サンプルソースコード集 > 一般化線形モデルの推定可能関数とその標準誤差の計算

C#による 一般化線形モデルの推定可能関数とその標準誤差の計算

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

Keyword: 一般化線形モデル, 推定可能関数, 標準誤差

概要

本サンプルは一般化線形モデルの推定可能関数とその標準誤差の計算を行うC#によるサンプルプログラムです。 本サンプルは以下に示されるデータについて推定可能関数とその標準誤差の計算を行います。

一般化線形モデルのフィットのデータ 

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

入力データ

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

このデータをダウンロード
g02gn Example Program Data
 15 8 0
1.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 141.0
1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0  67.0
1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 114.0
1.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0  79.0
1.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0  39.0
0.0 1.0 0.0 1.0 0.0 0.0 0.0 0.0 131.0
0.0 1.0 0.0 0.0 1.0 0.0 0.0 0.0  66.0
0.0 1.0 0.0 0.0 0.0 1.0 0.0 0.0 143.0
0.0 1.0 0.0 0.0 0.0 0.0 1.0 0.0  72.0
0.0 1.0 0.0 0.0 0.0 0.0 0.0 1.0  35.0
0.0 0.0 1.0 1.0 0.0 0.0 0.0 0.0  36.0
0.0 0.0 1.0 0.0 1.0 0.0 0.0 0.0  14.0
0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0  38.0
0.0 0.0 1.0 0.0 0.0 0.0 1.0 0.0  28.0
0.0 0.0 1.0 0.0 0.0 0.0 0.0 1.0  16.0
 1   1   1   1   1   1   1   1   9
 3
 1.0  1.0  0.0 0.0  1.0 0.0 0.0 0.0 0.0
 0.0  1.0 -1.0 0.0  0.0 0.0 0.0 0.0 0.0
 0.0  1.0  0.0 0.0  0.0 0.0 0.0 0.0 0.0 

  • 1行目はタイトル行で読み飛ばされます。
  • 2行目は観測値の数(n)、独立変数の数(m)、反復についての情報が必要かどうか、また必要な場合の出力する割合(iprint)を指定しています。 "0"は何も出力しないことを意味します。
  • 3〜17行目に独立変数の観測値(x)と従属変数の観測値(y)を指定しています。
  • 18行目はモデルに独立変数が含まれるかどうかを示すパラメータ(isx)を指定しています。"1"は含まれることを意味します。さらに線形モデルの項数(ip)を指定しています。
  • 19行目は推定される関数の数(nextfn)を指定しています。
  • 20〜22行目は推定される線形関数(f)を指定しています。

出力結果

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

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

  Deviance =  9.0379e+000
  Degrees of freedom =  8 
       Estimate     Standard error 
          2.5977        0.0258
          1.2619        0.0438
          1.2777        0.0436
          0.0580        0.0668
          1.0307        0.0551
          0.2910        0.0732
          0.9876        0.0559
          0.4880        0.0675
         -0.1996        0.0904

  Function    1 
     1.00     1.00     0.00     0.00     1.00
     0.00     0.00     0.00     0.00 

  STAT =     4.8903 SE =     0.0674 Z =    72.5934

  Function    2 
     0.00     1.00    -1.00     0.00     0.00
     0.00     0.00     0.00     0.00 

  STAT =    -0.0158 SE =     0.0672 Z =    -0.2350

  Function    3 
     0.00     1.00     0.00     0.00     0.00
     0.00     0.00     0.00     0.00 

 Function not estimable

  • 3行目にデビアンス(deviance)が出力されています。
  • 4行目に自由度が出力されています。
  • 5〜14行目に一般化線形モデルの引数の推定値と標準誤差が出力されています。
  • 16〜18行目に1つ目の推定される線形関数が出力されています。
  • 20行目に関数function の推定値、関数 se(F)(function)の推定値の標準誤差、ゼロに等しい関数の検証のためのZ統計量が出力されています。
  • 22〜24行目に2つ目の推定される線形関数が出力されています。
  • 26行目に関数function の推定値、関数 se(F)(function)の推定値の標準誤差、ゼロに等しい関数の検証のためのZ統計量が出力されています。
  • 28〜30行目に3つめの推定される線形関数が出力されています。
  • 32行目に関数が推定可能ではないことが表示されています。

ソースコード

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

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


このソースコードをダウンロード
//      g02gn Example Program Text
//      C# version, NAG Copyright 2008
using System;
using NagLibrary;
using System.IO;
namespace NagDotNetExamples
{
  public class G02GNE
  {
    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/g02gne.d");
        }
        else
        {
          sr = new DataReader(datafile);
        }
        double a,   dev,   eps,   sestat,   stat,   tol,   z; int i,  idf,  ip,  iprint,  irank,  j,  m,  maxit,  n,  nestfn;
        bool est = false;
        int ifail;
        Console.WriteLine("g02gn Example Program Results");
        //      Skip heading in data file
        a = 0.0;
        sr.Reset();
        sr.Reset();
        n = int.Parse(sr.Next());
        m = int.Parse(sr.Next());
        iprint = int.Parse(sr.Next());
        double[] wt = new double[n];
        double[,] x = new double[n, m];
        double[] y = new double[n];
        int[] isx = new int[m];
        if (n >= 2 && m >= 1)
        {
          for (i = 1; i <= n; i++)
          {
            sr.Reset();
            for (j = 1; j <= m; j++)
            {
              x[i - 1, j - 1] = double.Parse(sr.Next());
            }
            y[i - 1] = double.Parse(sr.Next());
          }
          sr.Reset();
          for (j = 1; j <= m; j++)
          {
            isx[j - 1] = int.Parse(sr.Next());
          }
          ip = int.Parse(sr.Next());
          double[] b = new double[ip];
          double[] cov = new double[(ip*ip+ip)/2];
          double[] f = new double[ip];
          double[] se = new double[ip];
          double[,] v = new double[n, 7+ip];
          //         Set control parameters
          eps = 0.0000010e0;
          tol = 0.000050e0;
          maxit = 10;
          // 
          //         Fit Log-linear model using g02gc
          G02.g02gc("L", "M", "N", "U", n, x, m, isx, ip, y, wt, a, out dev, out idf, b, out irank, se, cov, v, tol, maxit, iprint, eps, out ifail);
          // 
          if ((ifail == 0) || (ifail >= (7)))
          {
            Console.WriteLine(" ");
            Console.WriteLine("  {0}{1,12:e4}", "Deviance = ", dev);
            Console.Write("  {0}{1,2}", "Degrees of freedom = ", idf);
            Console.WriteLine(" ");
            Console.Write(" {0}", "      Estimate     Standard error");
            Console.WriteLine(" ");
            for (i = 1; i <= ip; i++)
            {
              Console.WriteLine("  {0,14:f4}{1,14:f4}", b[i - 1], se[i - 1]);
            }
            sr.Reset();
            nestfn = int.Parse(sr.Next());
            for (i = 1; i <= nestfn; i++)
            {
              sr.Reset();
              for (j = 1; j <= ip; j++)
              {
                f[j - 1] = double.Parse(sr.Next());
              }
              // 
              G02.g02gn(ip, irank, b, cov, v, f, out est, out stat, out sestat, out z, tol,
              out ifail);
              // 
              if ((ifail == 0) || (ifail == 2))
              {
                Console.WriteLine(" ");
                Console.Write("  {0}{1,4}", "Function ", i);
                Console.WriteLine(" ");
                for (j = 1; j <= ip; j++)
                {
                  Console.Write(" {0, 8:f2}{1}", f[j - 1],j%5==0?"\n":"");
                }
                Console.WriteLine(" ");
                Console.WriteLine(" ");
                if (est)
                {
                  Console.WriteLine("  {0}{1,10:f4}{2}{3,10:f4}{4}{5,10:f4}", "STAT = ", stat, " SE = ", sestat, " Z = ", z);
                }
                else
                {
                  Console.WriteLine(" {0}", "Function not estimable");
                }
              }
              else
              {
                Console.WriteLine(" ");
                Console.WriteLine("** g02gn failed with ifail = {0,5}", ifail);
              }
            }
          }
          else
          {
            Console.WriteLine(" ");
            Console.WriteLine("** g02gc failed with ifail = {0,5}", ifail);
          }
        }
        // 
      }
      catch (Exception e)
      {
        Console.WriteLine(e.Message);
        Console.Write( "Exception Raised");
      }
    }
  }
}


Results matter. Trust NAG.

Privacy Policy | Trademarks