27 #define arcs_assert(a) (assert(a))
30 #define EventLogVar(a)
42 template <
size_t N,
size_t M>
45 for(
size_t i = 1; i <= M; ++i){
46 for(
size_t j = 1; j <= N; ++j) Ubar += U.
GetElement(j,i);
48 return Ubar/(double)(N*M);
56 template <
size_t N,
size_t M>
58 y = sumrow(U)/(double)N;
66 template <
size_t N,
size_t M>
68 y = sumcolumn(U)/(double)M;
73 static double Mean(
const std::array<double, N>& u){
75 for(
size_t i = 0; i < N; ++i){
78 return ubar/(double)N;
86 template <
size_t N,
size_t M>
89 double Ubar =
Mean(U);
92 double xi_xbar = 0, s2 = 0;
93 for(
size_t i = 1; i <= M; ++i){
94 for(
size_t j = 1; j <= N; ++j){
96 s2 += xi_xbar*xi_xbar;
99 return s2/(double)(N*M);
109 double ubar =
Mean(u);
112 double xi_xbar = 0, s2 = 0;
113 for(
size_t i = 0; i < N; ++i){
114 xi_xbar = u[i] - ubar;
115 s2 += xi_xbar*xi_xbar;
125 template <
size_t N,
size_t M>
128 double Ubar =
Mean(U);
131 double xi_xbar = 0, s2 = 0;
132 for(
size_t i = 1; i <= M; ++i){
133 for(
size_t j = 1; j <= N; ++j){
135 s2 += xi_xbar*xi_xbar;
138 return s2/(double)(N*M - 1);
146 template <
size_t N,
size_t M>
154 for(
size_t i = 1; i <= N; ++i){
155 xi_xbar = getcolumn(U, i) - ubar;
156 s2 += xi_xbar & xi_xbar;
158 y = s2/(double)(N - 1);
166 template <
size_t N,
size_t M>
174 for(
size_t i = 1; i <= M; ++i){
175 xi_xbar = getrow(U, i) - ubar;
176 s2 += xi_xbar & xi_xbar;
178 y = s2/(double)(M - 1);
188 double ubar =
Mean(u);
191 double xi_xbar = 0, s2 = 0;
192 for(
size_t i = 0; i <= N; ++i){
193 xi_xbar = u[i] - ubar;
194 s2 += xi_xbar*xi_xbar;
196 return s2/(double)(N - 1);
204 template <
size_t N,
size_t M>
214 template <
size_t N,
size_t M>
224 template <
size_t N,
size_t M>
234 static double Variance(
const std::array<double, N>& u){
243 template <
size_t N,
size_t M>
253 template <
size_t N,
size_t M>
264 template <
size_t N,
size_t M>
285 template <
size_t N,
size_t M>
288 double Ubar1 =
Mean(U1);
289 double Ubar2 =
Mean(U2);
292 double U1_Ubar1 = 0, U2_Ubar2 = 0, v = 0;
293 for(
size_t i = 1; i <= M; ++i){
294 for(
size_t j = 1; j <= N; ++j){
297 v += U1_Ubar1*U2_Ubar2;
300 return v/(double)(N*M);
309 static double Covariance(
const std::array<double, N>& u1,
const std::array<double, N>& u2){
311 double ubar1 =
Mean(u1);
312 double ubar2 =
Mean(u2);
315 double u1_ubar1 = 0, u2_ubar2 = 0, v = 0;
316 for(
size_t i = 0; i < N; ++i){
317 u1_ubar1 = u1[i] - ubar1;
318 u2_ubar2 = u2[i] - ubar2;
319 v += u1_ubar1*u2_ubar2;
330 template <
size_t N,
size_t M>
335 return Cov/(sqrt(Var1)*sqrt(Var2));
344 static double Correlation(
const std::array<double, N>& u1,
const std::array<double, N>& u2){
348 return Cov/(sqrt(Var1)*sqrt(Var2));
行列/ベクトル計算クラス(テンプレート版)
Definition Matrix.hh:44
constexpr TT GetElement(size_t n, size_t m) const
指定した要素番号の値を返す関数
Definition Matrix.hh:489
統計処理クラス(テンプレート行列&std::array版)
Definition Statistics.hh:35
static double SampledVariance(const Matrix< N, M > &U)
行列U全体の標本分散を求める
Definition Statistics.hh:87
static void UnbiasedVarianceColumn(const Matrix< N, M > &U, Matrix< N, 1 > &y)
行列Uの縦方向の不偏分散を求めて横ベクトルを出力する関数
Definition Statistics.hh:167
static double Variance(const Matrix< N, M > &U)
行列U全体の分散を求める(エイリアス)
Definition Statistics.hh:205
static void MeanRow(const Matrix< N, M > &U, Matrix< 1, M > &y)
行列Uの横方向の平均を計算して縦ベクトルを出力する関数
Definition Statistics.hh:57
static double Covariance(const std::array< double, N > &u1, const std::array< double, N > &u2)
配列u1と配列u2の間の共分散を計算する
Definition Statistics.hh:309
static double StandardDeviation(const std::array< double, N > &u)
配列uの標準偏差を求める
Definition Statistics.hh:275
static void MeanColumn(const Matrix< N, M > &U, Matrix< N, 1 > &y)
行列Uの縦方向の平均を計算して横ベクトルを出力する関数
Definition Statistics.hh:67
static double Correlation(const Matrix< N, M > &U1, const Matrix< N, M > &U2)
行列U1と行列U2の間のピアソンの相関係数を求める
Definition Statistics.hh:331
static void VarianceRow(const Matrix< N, M > &U, Matrix< 1, M > &y)
行列Uの横方向の不偏分散を求めて縦ベクトルを出力する関数(エイリアス)
Definition Statistics.hh:215
static double SampledVariance(const std::array< double, N > &u)
配列uの標本分散を求める
Definition Statistics.hh:107
static void StandardDeviationRow(const Matrix< N, M > &U, Matrix< 1, M > &y)
行列Uの横方向の標準偏差を求めて縦ベクトルを出力する関数
Definition Statistics.hh:254
static double Variance(const std::array< double, N > &u)
配列uの分散を求める(エイリアス)
Definition Statistics.hh:234
static double StandardDeviation(const Matrix< N, M > &U)
行列U全体の標準偏差を求める
Definition Statistics.hh:244
static double UnbiasedVariance(const Matrix< N, M > &U)
行列U全体の不偏分散を求める
Definition Statistics.hh:126
static double Correlation(const std::array< double, N > &u1, const std::array< double, N > &u2)
配列u1と配列u2の間のピアソンの相関係数を求める
Definition Statistics.hh:344
static double Mean(const std::array< double, N > &u)
配列uの平均を計算する
Definition Statistics.hh:73
static double UnbiasedVariance(const std::array< double, N > &u)
配列uの不偏分散を求める
Definition Statistics.hh:186
static double Mean(const Matrix< N, M > &U)
行列U全体の平均を計算する
Definition Statistics.hh:43
static void UnbiasedVarianceRow(const Matrix< N, M > &U, Matrix< 1, M > &y)
行列Uの横方向の不偏分散を求めて縦ベクトルを出力する関数
Definition Statistics.hh:147
static double Covariance(const Matrix< N, M > &U1, const Matrix< N, M > &U2)
行列U1と行列U2の間の共分散を計算する
Definition Statistics.hh:286
static void VarianceColumn(const Matrix< N, M > &U, Matrix< N, 1 > &y)
行列Uの縦方向の不偏分散を求めて横ベクトルを出力する関数(エイリアス)
Definition Statistics.hh:225
static void StandardDeviationColumn(const Matrix< N, M > &U, Matrix< N, 1 > &y)
行列Uの縦方向の標準偏差を求めて横ベクトルを出力する関数
Definition Statistics.hh:265