#include <iostream>
#include <cmath>
#include <vector>
using namespace std;
//z检验
double getz(double x,double fi,double u,double n){
double up,down;
up=x-u;
down=fi/sqrt(n);
return up/down;
}
//求平均值
double getavervage(vector<double> &num){
double sum=0;
int n=num.size();
for(auto m:num){
sum+=m;
}
return sum/n;
}
//求标准差
double getStandardDeviation(double aver , vector<double> &num){
double sum=0;
for(auto item:num){
sum=sum+(item-aver)*(item-aver);
}
sum/=(num.size()-1);
return sqrt(sum);
}
int main() {
int i;
cout << "please choose(i=1 z检验,i=0 t检验)" << endl;
cin >> i;//i=1 z检验,i=0 t检验
if(i){
double x,fi,u,n,z;//原假设,标准差,现假设,样本数量,z
double za=1.96;//0.05查表得
cout << "input num : x. fi. u. n. za." << endl;
cin >> x >> fi >> u >> n >> za;
z=getz(x,fi,u,n);
if(z>za||z<-za){
cout << "拒绝原假设" << endl;
}else{
cout << "不能拒绝原假设" << endl;
}
}else{
double x,fi,u,aver,z;
int s;
cout << "请输入样本数量" << endl;
cin >> s;
cout << "请输入数据" << endl;
double za=1.96;
vector<double> num(s,0);
for(int i=0;i<s;++i){
cin >> num[i];
}
cout << "input u,za" << endl;
cin >> u >> za;
aver = getavervage(num);
fi = getStandardDeviation(aver,num);
z = getz(aver,fi,u,s);
if(z>za||z<-za){
cout << "拒绝原假设" << endl;
}else{
cout << "不能拒绝原假设" << endl;
}
}
return 0;
}
统计学实验:假设性检验(z检验和t检验)
最新推荐文章于 2024-06-28 15:02:50 发布