点推定の方法
・モーメント法
大きさnの標本から算出される次の推定量
を原点の周りのk次のモーメント(積率)という
1次のモーメント
2次のモーメント
ここで
また
を以下のように変形する
ここで
なぜなら
故に上の式は
と変形される
ここで分散の母数の推定量を
とすると
上の式変形より
平均値や分散の定義式にそのまま標本から得られた1次、2次のモーメントの値を代入した結果がモーメント法の算出結果になる
/// <summary>
/// n次モーメント
/// </summary>
/// <param name="dec">標本のdecimal型の配列</param>
/// <param name="n">n次モーメント</param>
/// <returns>n次モーメント</returns>
public static decimal moment(decimal[] dec,int n)
{
decimal sum = 0;
for (int x = 0; x < dec.GetLength(0); x++)
{
sum += decimal_pow(dec[x], n);
}
return sum / dec.GetLength(0);
}
/// <summary>
/// decimal型の累乗
/// </summary>
/// <param name="dec">decimal型/何を</param>
/// <param name="n">int型/何乗するか</param>
/// <returns>累乗された値</returns>
public static decimal decimal_pow(decimal dec, int n)
{
decimal pow = 1;
for (int i = 1; i <= n; ++i)
{
pow = pow * dec;
}
return pow;
}
例.97,100,103のサンプルから母集団の平均、分散を推定する
//モーメント法
decimal mom_1,mom_2;
decimal[] sample = new decimal[3];
sample[0] = 97;
sample[1] = 100;
sample[2] = 103;
mom_1 = stat.moment(sample, 1);
mom_2 = stat.moment(sample, 2);
Console.WriteLine("1次モーメント="+mom_1.ToString());
Console.WriteLine("2次モーメント=" + mom_2.ToString());
Console.WriteLine("母平均の推定値=" + mom_1.ToString());
Console.WriteLine("母分散の推定値=" + (mom_2-stat.decimal_pow(mom_1,2)).ToString());
Console.ReadLine();
0 件のコメント:
コメントを投稿