統計ワークシート内で選択したデータ(列や行、ワークシート全体)の統計処理を行いたい場合があります。 データで操作する:数値データ:データ範囲の章には、列/行のインデックスでデータ範囲を構築する方法があり、元のデータをベクターデータにします。
列と行の記述統計量
ocmath_basic_summary_stats関数は、元データの合計数、平均値、標準偏差、歪度などの基本統計量を計算します。 詳細は、Origin Cヘルプを参照してください。次のOrigin Cコードは、vDataというベクターオブジェクトのデータのポイント数、平均、平均の標準誤差を計算し、出力します。
int N;
double Mean, SE;
ocmath_basic_summary_stats(vData.GetSize(), vData, &N, &Mean, NULL, &SE);
printf("N=%d\nMean=%g\nSE=%g\n", N, Mean, SE);
度数カウント
ocmath_frequency_count関数は、FreqCountOptions 構造体に従って度数カウントを計算するのに使用します。
// 度数カウントを行うソースデータ
vector vData = {0.11, 0.39, 0.43, 0.54, 0.68, 0.71, 0.86};
// ビンサイズ、設定の開始と終了などのオプションをセット
int nBinSize = 5;
FreqCountOptions fcoOptions;
fcoOptions.FromMin = 0;
fcoOptions.ToMax = 1;
fcoOptions.StepSize = nBinSize;
fcoOptions.IncludeLTMin = 0;
fcoOptions.IncludeGEMax = 0;
vector vBinCenters(nBinSize);
vector vAbsoluteCounts(nBinSize);
vector vCumulativeCounts(nBinSize);
int nOption = FC_NUMINTERVALS; // 最後のビンを拡張
int nRet = ocmath_frequency_count(
vData, vData.GetSize(), &fcoOptions,
vBinCenters, nBinSize, vAbsoluteCounts, nBinSize,
vCumulativeCounts, nBinSize, nOption);
if( STATS_NO_ERROR == nRet )
out_str("Done");
さらに、離散/カテゴリーデータに対して度数カウントを計算する2つの関数があります。 1つはテキストデータに対する ocu_discrete_frequencies で、もう1つは数値データに対する ocmath_discrete_frequencies です。また、2次元データに対して度数カウントを計算する2つの関数があります。ocmath_2d_binning_stats と ocmath_2d_binningです。
相関係数
ocmath_corr_coeff関数は、Pearson rank, Spearman rank, Kendall rankの相関係数を計算するのに使われます。
matrix mData = {{10,12,13,11}, {13,10,11,12}, {9,12,10,11}};
int nRows = mData.GetNumRows();
int nCols = mData.GetNumCols();
matrix mPeaCorr(nCols, nCols);
matrix mPeaSig(nCols, nCols);
matrix mSpeCorr(nCols, nCols);
matrix mSpeSig(nCols, nCols);
matrix mKenCorr(nCols, nCols);
matrix mKenSig(nCols, nCols);
if(STATS_NO_ERROR == ocmath_corr_coeff(nRows, nCols, mData, mPeaCorr, mPeaSig,
mSpeCorr, mSpeSig, mKenCorr, mKenSig))
{
out_str("Done");
}
正規性の検定
*ocmath_shapiro_wilk_test関数を使って、Shapiro-Wilkの正規性の検定を実行します。
*ocmath_lilliefors_test関数を使って、Lillieforsの正規性の検定を実行します。
*ocmath_kolmogorov_smirnov_test 関数を使って、Kolmogorov-Smirnovの正規性の検定を実行します。
vector vTestData = {0.11, 0.39, 0.43, 0.54, 0.68, 0.71, 0.86};
NormTestResults SWRes;
if( STATS_NO_ERROR == ocmath_shapiro_wilk_test(vTestData.GetSize(), vTestData,
&SWRes, 1) )
{
printf("DOF=%d, TestStat=%g, Prob=%g\n", SWRes.DOF, SWRes.TestStat, SWRes.Prob);
}
|