選擇題
設一個有偏的硬幣,拋了100次,出現1次人頭,99次字。問用最大似然估計(ML)和最小均方誤差(LSE)估計出現人頭的概率哪個大?
LSE
設使用LSE估計,出現人頭的概率爲θθ, 則出現字的概率爲1−θ1−θ。
已知觀測量爲:(觀測到的)出現人頭的概率爲11001100, (觀測到的)出現字的概率爲9910099100,則由最小二乘估計:
Q(θ)=argminθ∑1001(θ−θ^)2 =argminθ(1100−θ)2+[99100−(1−θ)]2∗99Q(θ)=argminθ∑1100(θ−θ^)2 =argminθ(1100−θ)2+[99100−(1−θ)]2∗99
令∂Q(θ)∂θ=0∂Q(θ)∂θ=0,解得θ=1100θ=1100;
ML
設使用ML估計,所以x服從伯努利分佈,x∼B(朝上,θ)x∼B(朝上,θ),
則概率密度函數爲:
P(x|θ)={θ,1−θ,if x 人頭朝上if x 字朝上
P(x|θ)={θ,if x 人頭朝上1−θ,if x 字朝上
則連續100次試驗的似然函數爲:
P(x1,x2,..x100|θ)=C1100θ1∗(1−θ)99=100∗θ1∗(1−θ)99P(x1,x2,..x100|θ)=C1001θ1∗(1−θ)99=100∗θ1∗(1−θ)99
最大化似然函數,則θθ至少爲駐點,對似然函數取對數並求偏導:
lnP(x1,x2,..x100|θ)=ln100+lnθ+99ln(1−θ)lnP(x1,x2,..x100|θ)=ln100+lnθ+99ln(1−θ)
對θθ求偏導爲0,得到:
∂lnP(x1,x2,..x100|θ)∂θ=1θ−991−θ=0∂lnP(x1,x2,..x100|θ)∂θ=1θ−991−θ=0, 解得θ=1100.θ=1100.
兩者雖然得到的估計值是一樣的,但是原理完全不同,要對他們的推導過程非常清楚。
編程題
一個正整數N的因子中可能存在若干連續的數字。例如630可以分解爲3*5*6*7,其中5、6、7就是3個連續的數字。給定任一正整數N,要求編寫程序求出最長連續因子的個數,並輸出最小的連續因子序列。
輸入樣例:
630
輸出樣例:
3
5*6*7
#include <iostream>
#include <cmath>
using namespace std;
long int num, temp;
int main(){
cin >> num;
int first = 0, len = 0, maxn = sqrt(num) + 1;
for (int i = 2; i <= maxn; i++) {
int j;
temp = 1;
for (j = i; j <= maxn; j++) {
temp *= j;
if (num % temp != 0) break;
}
if (j - i > len) {
len = j - i;
first = i;
}
}
if (first == 0) {
cout << 1 << endl << num;
} else {
cout << len << endl;
for (int i = 0; i < len; i++) {
cout << first + i;
if (i != len - 1) cout << '*';
}
}
return 0;
}