ワークシート内で選択したデータ(列や行、ワークシート全体)の統計処理を行いたい場合があります。 データで操作する:数値データ:データ範囲の章には、列/行のインデックスでデータ範囲を構築する方法があり、元のデータをベクターデータにします。
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); }