
標本分散と不偏分散 ~ばらつきを表す?元を予想する?~
分散はばらつきを表すけど、標準偏差とはちょっと違う性質を持ってるから、どっちか片方だけじゃちょっと問題があるよねーって話を前にしたわけです。 ただ、一言に「分散」と言っても色んな種類の分散があって、種類によってはばらつきを表すし、種類によっ...
/**************************************************************** ** 関西人か関東人かをベイズ論で判別しようというプログラムです ** 相手が関西弁を話したか否かで、相手が関西人である確率が変わります ** ** 極めて簡易で適当な判別プログラムなので、あまりいじめてあげないでください *****************************************************************/ #include#include using namespace std; double BayesianUpdate(double, double, double); // ベイズ更新関数(事前確率, AでかつAが起こる確率, BでかつAが起こる確率) int main() { int result; double PrimaryProbability = 0.5; // 現象を確認する前の事前確率(理由不十分の原理により、0.5に設定) double WestAccent_west = 0.95; // 関西人でかつ関西弁を話す確率 double WestAccent_east = 0.02; // 関東人でかつ関西弁を話す確率 double CurrrentP, PostP; CurrrentP = PrimaryProbability; while (1) { cout << "現在、相手が関西人である確率 : " << CurrrentP << endl; cout << endl; cout << "関西弁を話したか?(No : 0 | Yes : 1 | end : -1)---"; cin>> result; cout << endl; if (result == -1) { break; } else if (result == 0) { PostP = BayesianUpdate(CurrrentP, 1 - WestAccent_west, 1 - WestAccent_east); } else { PostP = BayesianUpdate(CurrrentP, WestAccent_west, WestAccent_east); } CurrrentP = PostP; } return 0; } double BayesianUpdate(double Primary, double Conditional1, double Conditional2) { double Probability1, Probability2; Probability1 = Primary * Conditional1; Probability2 = (1 - Primary) * Conditional2; return Probability1 / (Probability1 + Probability2); }