我认为通过制作一个返回均值抽样分布结果的小程序(标准误差),我可以在数据统计中让生活更轻松一些。它成功完成了这一部分,但是为了尝试使用我找到here的公式返回z得分,它返回-1#IND
。我对该公式的解释是:
((1 / (sqrt(2 * pi) * stdev)) * pow(e, (normalpow))
其中
double normalpow = -0.5 * ((mean - popmean) * (mean-popmean) / stdev)
我做了一些调查,发现(mean - popmean) * (mean - popmean)
正在评估0
无论如何。如何解决normalpow
评估为0
的问题。
#include <iostream>
#include <string>
#include <sstream>
#include <math.h>
using namespace std;
double number ;
double mean ;
double popmean ;
double stdev ;
double square = 2;
double e = 2.71828182845904523536;
double pi = 3.14159265358979323846;
double normalpow = -0.5*((mean-popmean)*(mean-popmean)/stdev);
int main ()
{
string continuer ;
do
{
cout << "Enter Sample Mean: " << endl;
cin >> mean;
cout << "Enter Population Mean: " << endl;
cin >> popmean;
cout << "Enter Standard Deviation: " << endl;
cin >> stdev;
cout << "Enter Sample Size: " << endl;
cin >> number;
if (stdev == 0)
cout << ((mean-popmean)/(number))<< endl;
else
{
cout << ((mean-popmean)/((stdev)/(sqrt(number))))<< endl;
cout << ((1/(sqrt(2*pi)*stdev))*pow(e, (normalpow)))<< endl;
}
cout << "If you want to continue, Press Y" << endl ;
cin >> continuer;
} while (continuer == "Y" || continuer == "y") ;
return 0;
}
答案 0 :(得分:2)
你的问题在这里:
double normalpow = -0.5*((mean-popmean)*(mean-popmean)/stdev);
此时,mean
,popmean
和stdev
具有垃圾值,因为它们尚未初始化。听起来你想要的是一个功能。
double normalPow(double mean, double popmean, double stddev)
{
return -0.5*((mean-popmean)*(mean-popmean)/stdev);
}
然后在你的主要电话中打电话:
double normalpow = normalPow(mean, popmean, stdev);
当然,您应该检查函数中的stdev
是否等于或接近0.
。
答案 1 :(得分:1)
using namespace std;
double number ;
double mean ;
double popmean ;
double stdev ;
double square = 2;
double e = 2.71828182845904523536;
double pi = 3.14159265358979323846;
double normalpow = -0.5*((mean-popmean)*(mean-popmean)/stdev);
这些都是具有静态存储持续时间的变量,因此没有显式初始化的变量初始化为0。
因此mean
,popmean
和stdev
在初始化normalpow
时均为0,并且初始化结果为
double normalpow = -0.5*(0.0*0.0/0.0);
给出了NaN。
之后你永远不会改变normalpow
,因此涉及它的任何计算都会导致NaN。
答案 2 :(得分:0)
这取决于mean
和popmean
的计算方式。 mean - popmean
如果相同则评估为零:mean == popmean
。
答案 3 :(得分:0)
您正在使用的公式不正确,因为您没有计算标准偏差的平方。