回帰分析(SML)


SM1OPN, SM1EX, SM1CLS, SM1RV (n元1次),
SM2OPN, SM2EX, SM2CLS, SM2RV (2元n次),
SM3OPN, SM3EX, SM3CLS, SM3RV (3元n次)
1.機 能
  ・sm1opn/sm1ex/sm1cls/sm1rv の各ルーチンでは,n元1次の回帰分析(8元まで)
    を行い,sm2opn/sm2ex/sm2cls/sm2rv の各ルーチンは,2元n次の回帰分析(8次
    まで)を,sm3opn/sm3ex/sm3cls/sm3rv の各ルーチンは,3元n次の回帰分析(5
    次まで)を行う.
  ・はじめに,sm1opn/sm2opn/sm3opn ルーチン呼び出しで,回帰分析処理の初期化を
    行い,sm1ex/sm2ex/sm3ex ルーチンの多数回呼び出しで,回帰分析を適用すべき
    個々のデータを与えたのち,sm1cls/sm2cls/sm3cls ルーチン呼び出しで,回帰係
    数を求める.また,sm1rv/sm2rv/sm3rv の各ルーチンでは,結果の回帰係数を用
    いた回帰式の値の計算を行う.
  ・sm1/sm2/sm3 の各ルーチン群は,相互に同時並行動作が可能であるが,同じ群の
    ものを2重に使用することはできない.
  ・回帰係数列の配列順序は,下記の例を参照のこと.

  <回帰式の配列順序の例>
   5元(t1-t5)に対する 1次回帰式:
     c0 + c1*t1 + c2*t2 + c3*t3 + c4*t4 + c5*t5
   2元(u,v)に対する 4次回帰式:
     c0 + c10*u + c11*v + c20*u*u + c21*u*v + c22*v*v
        + c30*u*u*u + c31*u*u*v + c32*u*v*v + c33*v*v*v
        + c40*u*u*u*u + c41*u*u*u*v + c42*u*u*v*v + c43*u*v*v*v + c44*v*v*v*v
   3元(x,y,z)に対する 3次回帰式:
     c0 + c11*x + c12*y + c13*z
        + c211*x*x + c212*x*y + c213*y*z + c222*y*y + c223*y*z + c233*z*z
        + c3111*x*x*x + c3112*x*x*y + c3113*x*x*z + c3122*x*y*y + c3123*x*y*z
          + c3133*x*z*z + c3222*y*y*y + c3223*y*y*z + c3233*y*z*z + c3333*z*z*z

2.呼出し手順と引数

      call sm1opn(nvar, nsrc)
      call sm2opn(ndg2, nsrc)
      call sm3opn(ndg3, nsrc)
  nvar    [int]   n元1次回帰の元の数 (n) (8≧nvar≧1) を与える.
  ndg2    [int]   2元n次回帰の次数 (n) (8≧ndg2≧1) を与える.
  ndg3    [int]   3元n次回帰の次数 (n) (5≧ndg3≧1) を与える.
  nsrc    [int]   回帰分析を適用する変量の個数(5≧nsrc≧1)を与える.

      call sm1ex(var, src)
      call sm2ex(u, v, src)
      call sm3ex(x, y, z, src)
  var     [float] n元1次回帰分析の 独立変数(元)の値を与える配列.
                  (要素数は,sm1opn 呼び出し時の nvar の値)
  u, v    [float] 2元n次回帰分析の 2個の独立変数値を与える.
  x, y, z [float] 3元n次回帰分析の 3個の独立変数値を与える.
  src     [float] 回帰分析を適用する変量値を与える配列.
                  (要素数は,sm1opn/sm2opn/sm3opn 呼び出し時の nsrc の値)

      call sm1cls(coef, m, n)
      call sm2cls(coef, m, n)
      call sm3cls(coef, m, n)
  coef    [float] 回帰係数列を返すための配列.
  m, n    [int]   配列 coef の整合寸法.[dimension coef(m,n)]
        通常は,m=回帰係数の個数,n=変量の個数(nsrc) とする.
        但し,m の値が回帰係数の個数より少ないと,その個数を越える係数の値は
        返されず,n の値が変量の個数よりも少ないと,その個数を越える変量に対
        する回帰係数列は返されない.また,m,n の値の方が大きい場合には,配列
        coef のうち,実際の回帰係数の個数を越える部分と変量の個数を越える部分
        には値が返されない.なお,係数値の取得を必要としない場合には,m,n に
        0 や 負 の値を与えてもかまわない.
        回帰係数の個数は,
            n元1次回帰(n=1,2,3,4,5,6,7,8)では,2, 3, 4, 5, 6, 7, 8, 9 ,
            2元n次回帰(n=1,2,3,4,5,6,7,8)では,3, 6,10,15,21,28,36,45 ,
            3元n次回帰(n=1,2,3,4,5)では,      4,10,20,35,56
        である.

      call sm1rv(var, sml)
      call sm2rv(u, v, sml)
      call sm3rv(x, y, z, sml)
  var     [float] n元1次回帰式の値を計算すべき独立変数の値を与える配列.
                  (要素数は,sm1opn 呼び出し時の nvar の値)
  u, v    [float] 2元n次回帰式の値を計算すべき2個の独立変数を与える.
  x, y, z [float] 3元n次回帰式の値を計算すべき3個の独立変数を与える.
  sml     [float] 回帰式の値の計算結果を収容する配列.
                  (要素数は,sm1opn/sm2opn/sm3opn 呼び出し時の nsrc の値)