C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++で2つの系列の平均と分散の組み合わせを見つける


コンセプト

サイズbおよびaの2つの異なるシリーズarr1[b]およびarr2[a]が与えられた2つに関して。私たちのタスクは、結合された系列の平均と分散を決定することです。

入力

Arr1[] = { 24, 46, 35, 79, 13, 77, 35 };
Arr2[] = { 66, 68, 35, 24, 46 };

出力

Mean1: 44.1429
Mean2: 47.8
StandardDeviation1: 548.694
StandardDeviation2: 294.56
Combined Mean: 45.6667
d1 square: 2.322
d2_square: 4.5511
Combined Variance: 446.056

メソッド

さて、

n1=「リージョン1」の観測数

n2=「リージョン1」の観測数

X1=領域1の平均。

X2=リージョン2の平均。

S 1 =領域1の標準偏差。

S 2 =領域2の標準偏差。

S 1 2 =領域1の分散。

S 2 2 =領域2の分散。

X=グループ全体の平均

とします。

したがって、d 1 =X – X1

およびd2 =X – X2

グループX全体の平均を次のように計算します

(n1 * X1 + n2 * X2)/(n1 + n2)

グループ全体の分散を次のように計算します

n1 *(S 1 2 + d 1 2 )+ n2 *(S 2 2 + d 2 2 )/(n1 + n2)

// C++ program to find combined mean
// and variance of two series.
#include <bits/stdc++.h>
using namespace std;
// Shows function to find mean of series.
float mean(int Arr[], int b){
   int sum1 = 0;
   for (int i = 0; i < b; i++)
      sum1 = sum1 + Arr[i];
   float mean = (float)sum1 / b;
   return mean;
}
// Shows function to find the standard
// deviation of series.
float sd(int Arr[], int b){
   float sum1 = 0;
   for (int i = 0; i < b; i++)
      sum1 = sum1 + (Arr[i] - mean(Arr, b)) *
   (Arr[i] - mean(Arr, b));
   float sdd = sum1 / b;
   return sdd;
}
//Shows function to find combined variance
// of two different series.
float combinedVariance(int Arr1[], int Arr2[],
int b, int a){
   // Here, mean1 and mean2 are the mean
   // of two arrays.
   float mean1 = mean(Arr1, b);
   float mean2 = mean(Arr2, a);
   cout << "Mean1: " << mean1
   << " mean2: " << mean2 << endl;
   // Here, sd1 and sd2 are the standard
   // deviation of two array.
   float sd1 = sd(Arr1, b);
   float sd2 = sd(Arr2, a);
   cout << "StandardDeviation1: " << sd1
   << " StandardDeviation2: " << sd2
   << endl;
   // Here, combinedMean is variable to store
   // the combined mean of both array.
   float combinedMean = (float)(b * mean1 +
   a * mean2) / (b + a);
   cout << "Combined Mean: " << combinedMean
   << endl;
   // Here, d1_square and d2_square are
   // the combined mean deviation.
   float d1_square = (mean1 - combinedMean) *(mean1 - combinedMean);
   float d2_square = (mean2 - combinedMean) *(mean2 - combinedMean);
   cout << "d1 square: " << d1_square<< " d2_square: " << d2_square
   << endl;
   // Here, combinedVar is variable to store
   // combined variance of both array.
   float combinedVar = (b * (sd1 + d1_square) + a *(sd2 + d2_square)) / (b + a);
   cout << "Combined Variance: " << combinedVar;
}
// Driver function.
int main(){
   int Arr1[] = { 24, 46, 35, 79, 13, 77, 35 };
   int Arr2[] = { 66, 68, 35, 24, 46 };
   int b = sizeof(Arr1) / sizeof(Arr1[0]);
   int a = sizeof(Arr2) / sizeof(Arr2[0]);
   // Shows function call to combined mean.
   combinedVariance(Arr1, Arr2, b, a);
   return 0;
}

出力

Mean1: 44.1429 mean2: 47.8
StandardDeviation1: 548.694 StandardDeviation2: 294.56
Combined Mean: 45.6667
d1 square: 2.322 d2_square: 4.5511
Combined Variance: 446.056

  1. ソートされていない2つの配列の和集合と共通部分を見つけるC++プログラム

    この記事では、2つの指定されたソートされていない配列の和集合と共通部分を見つけるプログラムについて説明します。 2つのアレイを「A」と「B」で表します。次に、これらの配列の結合はA∪Bで示されます。 これは基本的に、指定された両方の配列のすべての要素の配列です。ただし、各要素は1回だけ繰り返されます。 これを見つけるために、別の配列を作成し、最初の配列からすべての要素をコピーします。次に、2番目の配列の要素をトラバースし、それがユニオン配列にすでに存在するかどうかを確認します。そうでない場合は、ユニオン配列に追加します。 同様に、2つの配列の共通部分はA∩Bで示されます。 これは、指定さ

  2. Pythonで2つの系列の平均と分散の組み合わせを見つける

    それぞれサイズbとaの2つの異なるシリーズA1とA2があるとします。結合された系列の平均と分散を見つける必要があります。 したがって、入力がA1 =[24、46、35、79、13、77、35]およびA2 =[66、68、35、24、46]の場合、出力は平均=[44.1429、47.8]になります。 ]、sd =[548.694、294.56]、結合された平均=45.6667、d1_square =2.322、d2_square =4.5511、combined_var =446.056 これを解決するには、次の手順に従います- 関数mean()を定義します。これには時間がかかります