C と GSLを活用した科学計算:統計,FFT,ウェーブレット,補間,ベクトル・行列操作
GSL の統計計算に関する機能について一部分を紹介する.
【外部ページへのリンク】
- 算術平均,推定分散,標準偏差,自己相関係数,共分散
GNU Scientific Library -- Reference Manual の 20 章 「Statistics」
前準備
GSL のインストール
Windows での GSL のインストール(ソースコードを使用)(MSYS2,configure,make を利用): 別ページ »で説明
double の配列に関する統計量
【要点】
- C言語 の double の配列に対して、 算術平均,推定分散,標準偏差,自己相関係数,共分散 などの統計量は簡単に求めることができる.
- 下の1行は必須
#include<gsl/gsl_statistics_double.h>
- 飛び幅 (stride)
飛び幅を 1 より大きい値に設定すると、double の配列の中の値を、等間隔で飛び飛びに使う。
- MSYS2 MINGW64 を実行する
スタートメニューで,「MSYS2」の下の「MSYS2 MINGW64」を選ぶ.
- プログラムの準備
#include<stdio.h> #include<gsl/gsl_statistics.h> #define LEN 6 int main(int argc, char** argv) { double data[LEN] = {10.5, 18.2, 10.3, 15.4, 16.2, 18.3}; double max = gsl_stats_max( data, 1, LEN ); double min = gsl_stats_min( data, 1, LEN ); double mean = gsl_stats_mean( data, 1, LEN ); double sd = gsl_stats_sd( data, 1, LEN ); printf( "max: \t%f \n", max ); printf( "min: \t%f \n", min ); printf( "mean: \t%f \n", mean); printf( "sd: \t%f \n", sd ); return 0; }
- ビルドして実行
gcc -I"C:\gsl\include" -c -o a.o a.c gcc -L"C:\gsl\lib" -o a.exe a.o -lgsl -lgslcblas ./a.exe
機能まとめ
- 算術平均
データ長 N で,飛び幅 1 のデータセット a の算術平均(標本平均とも言う)
gsl_stats_mean(a, 1, N)
- 推定分散
データ長 N で,飛び幅 1 のデータセット a の推定平均(標本平均とも言う)
gsl_stats_variable(a, 1, N)
- 標準偏差
データ長 N で,飛び幅 1 のデータセット a の標準偏差.これは、分散の平方根.
gsl_stats_sd(a, 1, N)
- 標準偏差
データ長 N で,飛び幅 1 のデータセット a の標準偏差. 但し,算術平均値を mean として与える.
gsl_stats_sd_m(a, 1, N, mean)
- 自己相関係数
データ長 N で,飛び幅 1 のデータセット a の自己相関係数.
gsl_stats_lag1_autocorrelation(a, 1, N)
- 自己相関係数
データ長 N で,飛び幅 1 のデータセット a の自己相関係数. 但し,算術平均値を mean として与える.
gsl_stats_lag1_autocorrelation_m(a, 1, N, mean)
- 共分散
データ長 N で,飛び幅 1 のデータセット a, b の共分散.
gsl_stats_covariance(a, 1, b, 1, N)
- 共分散
データ長 N で,飛び幅 1 のデータセット a, b の共分散. 但し,a と b の平均値 mean_a, mean_b を与える
gsl_stats_covariance_m(a, 1, b, 1, N, mean_Za, mean_b)