/*
俩 正态总体 均值差的检验
in:
n1 n2
n1:
n2:
sigema
*/
/*
x_ -y_ -sigema
t= ------------------
Sw sqrt(1/n1+1/n2)
(n1-1)Sa_2+(n2-1)Sb_2
Sw= --------------------------
n1+n2-2
*/
#include <iostream>
#include <vector>
#include <cmath>
using namespace std;
int main()
{
int n1, n2;
cin >> n1 >> n2;
vector<double> v1(n1), v2(n2);
for (int i = 0; i < n1; ++i)
cin >> v1[i];
for (int i = 0; i < n2; ++i)
cin >> v2[i];
double sigema;
cin >> sigema;
double x_, y_;
double pingsumX = 0, pingsumY = 0, sumX = 0, sumY = 0;
for (auto x : v1)
{
sumX += x;
pingsumX += x * x;
}
for (auto x : v2)
{
sumY += x;
pingsumY += x * x;
}
x_ = (sumX) / n1;
y_ = (sumY) / n2; //bug:写成x_了
double Sa_2 = (pingsumX - n1 * x_ * x_) / (n1 - 1);
double Sb_2 = (pingsumY - n2 * y_ * y_) / (n2 - 1);
double Sw_2 = ((n1 - 1) * Sa_2 + (n2 - 1) * Sb_2) / (n1 + n2 - 2);
double Sw = sqrt(Sw_2);
double t = (x_ - y_ - sigema) / (Sw * sqrt(1.0 / n1 + 1.0 / n2));
cout << "t=" << t;
}
两个正态总体均值差的检验(t)
最新推荐文章于 2023-08-31 12:05:27 发布