분산에 대한 두 식이, 같음을 보이고, 컴퓨터에서 정확한 공식은 어떤 공식인가?..
#include <iostream>
#include <vector>
#include <numeric>
#include <gsl/gsl_statistics_double.h>
auto main() -> int{
using namespace std;
vector<double> data;
for(size_t i = 1; i < 101; i++){
data.emplace_back(i);
}
double m = (std::accumulate(data.begin(), data.end(), 0))/static_cast<double>(data.size());
double temp = 0;
for(size_t i = 0; i < data.size(); i++){
temp += pow((data[i] - m), 2);
}
double variance_1 = temp / static_cast<double>(data.size() - 1);
temp = 0;
for(size_t i = 0; i < data.size(); i++){
temp += pow(data[i], 2);
}
temp += static_cast<double>(data.size()) * pow(m, 2);
double variance_2 = temp / static_cast<double>(data.size() - 1);
cout << "평균 = " << m << endl;
cout << "분산_1 = " << variance_1 << endl;
cout << "분산_2 = " << variance_2 << endl;
cout << "분산_정답 = " << gsl_stats_variance_m(data.data(), 1, data.size(), m);
}
//평균 = 50.5
//분산_1 = 841.667
//분산_2 = 5993.69
//분산_정답 = 841.667
GSL 문서
'삽질' 카테고리의 다른 글
Vector Identity (0) | 2022.07.21 |
---|---|
좌표계 (0) | 2022.07.15 |
[C++/WinRT] Core 데스크탑 앱 "Hello World" example (0) | 2021.01.06 |
ATL + Direct2D (0) | 2020.11.12 |
ATL 스켈레톤 윈도우 (0) | 2020.10.30 |