Chương 3 ƯỚC LƯỢNG THAM SỐ CỦA MÔ HÌNH TỪ DỮ LIỆU THỰC
3.2. C HỌN SỐ TRẠNG THÁI CỦA MÔ HÌNH
Trong thực hành có rất nhiều cách để chọn số trạng thái của mô hình, chủ yếu sử dụng 2 cách sau: quan sát qua đồ thị và chọn số trạng thái bằng tiêu chuẩn thông tin Bayes (BIC).
Trong 2 cách nói trên thì sử dụng tiêu chuẩn thông tin BIC sẽ dễ dàng quan sát và lựa chọn số trạng thái hơn cách quan sát qua đồ thị. Tuy nhiên, việc áp dụng các lý thuyết liên quan đến tiêu chuẩn BIC vào việc tính toán rất phức tạp. Ngoài ra, do các điều kiện khách quan về thời gian nên luận văn chỉ trình bày cách lựa chọn số trạng thái của mô hình thông qua việc quan sát đồ thị.
Chọn số trạng thái qua quan sát đồ thị
Tạo file số liệu có tên “chisosang” để lưu trữ dãy số liệu vừa tính được vào Workspace trong Matlab. Ta sử dụng file này cho các chương trình tính toán sau:
Vẽ đồ thị của dãy chỉ số sáng vừa tính được function bieudo_histogram
load('chisosang')
0 5 10 15 20 25 30 35
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Bieu do cua day chi so sang thang 10/2013
32
y=chisosang;
% Vẽ biểu đồ hist(y,20)
title('Bieu do cua day chi so sang hang ngay Kh') xlabel('ngay')
ylabel('Kh')
axis([0.15 0.85 0 5])
Biểu đồ histogram của dãy chỉ số sáng
Hình 2: Biểu đồ thể hiện chỉ số sáng tháng 10/2013
Chọn số trạng thái
Như đã đề cập ở Chương 2, qua quan sát người ta có thể chấp nhận giả thiết dãy dữ liệu nhƣ trộn hỗn hợp của các phân phối chuẩn.
Từ đồ thị, ta lần lƣợt chọn số trạng thái bằng 2, 3 và 4 thì ta thấy chọn số trạng thái bằng 2 (N=2) và 4 (N=4) là tốt nhất.
Ta sẽ ƣớc lƣợng các tham số của mô hình lần lƣợt với N=2 và N=4.
0.2 0.3 0.4 0.5 0.6 0.7 0.8
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
Bieu do cua day chi so sang hang ngay Kh
ngay
Kh
33
3.3. Ƣớc lƣợng lọc các tham số của mô hình
Từ các dữ liệu đã đƣợc tính toán ta sẽ tiến hành ƣớc lƣợng các tham số của mô hình lần lượt với N=2 và N=4, với các chương trình ước lượng như sau
Trường hợp N=2
Tập các tham số cần ƣớc lƣợng là
ij,1 2; ,1 2; 1, 2. T a i j c c Khi đó, ma trận chuyển xác suất là
11 12
21 22
a a .
A a a
Chú ý rằng
1 ij, 1, 2.
ii
i j
a a i
Chương trình 1
Tính trung bình và độ lệch chuẩn function uocluong_2_CT10_13
% Tạo ma trận đơn vị vuông cấp 2 e=eye(2);
load('chisosang');
y=chisosang;
% Tính trung bình my=mean(y)
% Tính độ lệch chuẩn
vy=sqrt(sum((y-my).^2)/length(y))
Kết quả nhận đƣợc my = 0.4797
vy = 0.1046
Khởi tạo các giá trị ban đầu A=[.7 .3 ;.6 .4]
A=A'
34
c=[.55 .7];
sig=.076;
p0=[.2; .8];
sigma=[sig sig]
Kết quả nhƣ sau 0.7000 0.6000 0.3000 0.4000
A
c = 0.5500 0.7000 sigma = 0.0760 0.0760
Tạo vòng lặp (số vòng lặp n=100) ước lượng các tham số L=100;
for n=1:L n
% Tính các a_ij (i≠j) A12(n)=A(1,2);
A21(n)=A(2,1);
p=p0;
% Số lượng các bước nhảy J1=zeros(2,2);
J2=zeros(2,2);
% Thời gian xuất hiện O1=zeros(2,1);
O2=zeros(2,1);
T1=zeros(2,1);
T2=zeros(2,1);
TT1=zeros(2,1);
35
TT2=zeros(2,1);
for k=1:length(y) G=zeros(2,2);
for i=1:length(c)
G(:,i)=(normpdf((y(k)-c(i))/sigma(i))/(sigma(i)*normpdf(y(k))))*e(:,i);
end % Kết thúc vòng lặp i
sp=(p'*G(:,1))*A*e(:,1)+(p'*G(:,2))*A*e(:,2);%+(p'*G(:,3))*A*e(:,3)+(p'*G(:
,4))*A*e(:,4);
sO1=zeros(2,1);
sO2=zeros(2,1);
sT1=zeros(2,1);
sT2=zeros(2,1);
sTT1=zeros(2,1);
sTT2=zeros(2,1);
for t=1:2
sO1= sO1 +(O1'*G(:,t))*A(:,t);
sO2= sO2 +(O2'*G(:,t))*A(:,t);
sT1= sT1 +(T1'*G(:,t))*A(:,t);
sT2= sT2 +(T2'*G(:,t))*A(:,t);
sTT1= sTT1 +(TT1'*G(:,t))*A(:,t);
sTT2= sTT2 +(TT2'*G(:,t))*A(:,t);
end % Kết thúc vòng lặp t
ss=sum(sp);
36
O1=(sO1 + (p'*G(:,1))*A(:,1))/ss;
O2=(sO2 + (p'*G(:,2))*A(:,2))/ss;
T1=(sT1 + (p'*G(:,1))*A(:,1)*(y(k)))/ss;
T2=(sT2 + (p'*G(:,2))*A(:,2)*(y(k)))/ss;
TT1=(sTT1 + (p'*G(:,1))*A(:,1)*(y(k))^2)/ss;
TT2=(sTT2 + (p'*G(:,2))*A(:,2)*(y(k))^2)/ss;
sJ1=zeros(2,2);
sJ2=zeros(2,2);
for s=1:2 for t=1:2
sJ1(:,s)= sJ1(:,s) +(J1(:,s)'*G(:,t))*A(:,t);
sJ2(:,s)= sJ2(:,s) +(J2(:,s)'*G(:,t))*A(:,t);
end % Kết thúc vòng lặp s
J1(:,s)=(sJ1(:,s) + (p'*G(:,1))*A(s,1)*e(:,s))/ss;
J2(:,s)=(sJ2(:,s) + (p'*G(:,2))*A(s,2)*e(:,s))/ss;
end % Kết thúc vòng lặp i p=sp/ss;
end % Kết thúc vòng lặp k
% Tính trung bình: CT (2.12) c(1)=sum(T1)/sum(O1);
c(2)=sum(T2)/sum(O2);
c
% Tính độ lệch chuẩn: CT (2.13) sigma(1)=sqrt((sum(TT1)-…
-2*c(1)*sum(T1)+(c(1))^2*sum(O1))/sum(O1));
sigma(2)=sqrt((sum(TT2)-…
37
-2*c(2)*sum(T2)+(c(2))^2*sum(O2))/sum(O2));
sigma
% Ma trận chuyển xác suất : CT (2.9) A(2,1)= sum(J1(:,2))/sum(O1);%r=1 A(1,2)= sum(J2(:,1))/sum(O2);%r=2 A
p;
end % Kết thúc vòng lặp n A11=1-A(2,1)
A22=1-A(1,2)
% Vẽ đồ thị
plot(A12,'LineWidth',2) hold on
plot(A21,'LineWidth',2) set(gca,'xtick',[1 L]);
axis([1 L 0 1]);
ylabel('A');% xlabel('a)');
title('Uoc luong cua ma tran xac suat chuyen A, N=2');
figure(1);
Kết thúc 100 vòng lặp ta nhận được kết quả như sau Trung bình: c = 0.4607 0.5131
Độ lệch chuẩn: sigma = 0.1138 0.0751 0.7000 0.5870
0.3112 0.4000
A
A11 = 0.6888 A22 = 0.4130
38
Đồ thị nhận được như sau
Hình 3: Biểu đồ thể hiện sự phát triển của ƣớc lƣợng ma trận chuyển xác suất A, N=2.
Kết luận: Các tham số của mô hình sau khi ƣớc lƣợng nhƣ sau
Ma trận xác suất chuyển của mô hình:
0.6888 0.5870 0.3112 0.4130 .
A
Trung bình
c1 0.4607,c2 0.5131 .
Độ lệch chuẩn
1 0.1138,2 0.0751 .
Từ các tham số đã ước lượng ta có mô hình với các trạng thái phân bố chuẩn sau đây
1 0.4607 0.1138 .1
y
2 0.5131 0.0751 2.
y
1 100
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
A
Uoc luong cua ma tran xac suat chuyen A, N=2
39
Trường hợp N=4
Tập các tham số cần ƣớc lƣợng là
ij,1 4; ,1 2, ,3 4; 1, 2, 3, 4. T a i j c c c c Khi đó, ma trận chuyển xác suất là
11 12 13 14
21 22 23 24
31 32 33 34
41 42 43 44
a a a a
a a a a
A a a a a
a a a a
Chú ý rằng :
1 ij, 1, 2,3, 4.
ii
i j
a a i
Chương trình 2
Tính trung bình và độ lệch chuẩn của dữ liệu
% Khởi tạo hàm ƣớc lƣợng function uocluong_4_CT10_13;
%Tạo ma trận đơn vị vuông cấp 4 e=eye(4);
load('chisosang');
y=chisosang;
% Tính trung bình my=mean(y)
% Tính độ lệch chuẩn
vy=sqrt(sum((y-my).^2)/length(y))
Kết quả như sau my = 0.4797
vy = 0.1046
Khởi tạo các giá trị ban đầu
A=[.3 .4 .2 .1; .3 .4 .1 .2; .2 .4 .3 .1 ; .3 .4 .1 .2];
40
A=A';
c=[.25 .5 .7 .8];
sig=.076;
p0=[.2; .2; .4; .2];
sigma=[sig sig sig sig];
Kết quả như sau
0.3000 0.3000 0.2000 0.3000 0.4000 0.4000 0.4000 0.4000 0.2000 0.1000 0.3000 0.1000 0.1000 0.2000 0.1000 0.2000 A
c = 0.2500 0.5000 0.7000 0.8000 sig = 0.0760
sigma = 0.0760 0.0760 0.0760 0.0760
Tạo vòng lặp (số vòng lặp n=100) ước lượng các tham số L=100;
for n=1:L n
% Tính các a_ij (i≠j)
A12(n)=A(1,2); A13(n)=A(1,3); A14(n)=A(1,4); A21(n)=A(2,1);
A23(n)=A(2,3); A24(n)=A(2,4); A31(n)=A(3,1); A32(n)=A(3,2);
A34(n)=A(3,4); A41(n)=A(4,1); A42(n)=A(4,2); A43(n)=A(4,3);
p=p0;
% Số lượng bước nhảy J1=zeros(4,4);
J2=zeros(4,4);
J3=zeros(4,4);
J4=zeros(4,4);
% Thời gian xuất hiện
41
O1=zeros(4,1);
O2=zeros(4,1);
O3=zeros(4,1);
O4=zeros(4,1);
T1=zeros(4,1);
T2=zeros(4,1);
T3=zeros(4,1);
T4=zeros(4,1);
TT1=zeros(4,1);
TT2=zeros(4,1);
TT3=zeros(4,1);
TT4=zeros(4,1);
for k=1:length(y) G=zeros(4,4);
for i=1:length(c)
G(:,i)=(normpdf((y(k)-…
c(i))/sigma(i))/(sigma(i)*normpdf(y(k))))*e(:,i);
end
sp=(p'*G(:,1))*A*e(:,1)+(p'*G(:,2))*A*e(:,2)+(p'*G(:,3))*A*e(:,3)+
(p'*G(:,4))*A*e(:,4);
sO1=zeros(4,1);
sO2=zeros(4,1);
sO3=zeros(4,1);
sO4=zeros(4,1);
sT1=zeros(4,1);
42
sT2=zeros(4,1);
sT3=zeros(4,1);
sT4=zeros(4,1);
sTT1=zeros(4,1);
sTT2=zeros(4,1);
sTT3=zeros(4,1);
sTT4=zeros(4,1);
for t=1:4
sO1= sO1 +(O1'*G(:,t))*A(:,t);
sO2= sO2 +(O2'*G(:,t))*A(:,t);
sO3= sO3 +(O3'*G(:,t))*A(:,t);
sO4= sO4 +(O4'*G(:,t))*A(:,t);
sT1= sT1 +(T1'*G(:,t))*A(:,t);
sT2= sT2 +(T2'*G(:,t))*A(:,t);
sT3= sT3 +(T3'*G(:,t))*A(:,t);
sT4= sT4 +(T4'*G(:,t))*A(:,t);
sTT1= sTT1 +(TT1'*G(:,t))*A(:,t);
sTT2= sTT2 +(TT2'*G(:,t))*A(:,t);
sTT3= sTT3 +(TT3'*G(:,t))*A(:,t);
sTT4= sTT4 +(TT4'*G(:,t))*A(:,t);
end
ss=sum(sp);
O1=(sO1 + (p'*G(:,1))*A(:,1))/ss;
O2=(sO2 + (p'*G(:,2))*A(:,2))/ss;
O3=(sO3 + (p'*G(:,3))*A(:,3))/ss;
43
O4=(sO4 + (p'*G(:,4))*A(:,4))/ss;
T1=(sT1 + (p'*G(:,1))*A(:,1)*(y(k)))/ss;
T2=(sT2 + (p'*G(:,2))*A(:,2)*(y(k)))/ss;
T3=(sT3 + (p'*G(:,3))*A(:,3)*(y(k)))/ss;
T4=(sT4 + (p'*G(:,4))*A(:,4)*(y(k)))/ss;
TT1=(sTT1 + (p'*G(:,1))*A(:,1)*(y(k))^2)/ss;
TT2=(sTT2 + (p'*G(:,2))*A(:,2)*(y(k))^2)/ss;
TT3=(sTT3 + (p'*G(:,3))*A(:,3)*(y(k))^2)/ss;
TT4=(sTT4 + (p'*G(:,4))*A(:,4)*(y(k))^2)/ss;
sJ1=zeros(4,4);
sJ2=zeros(4,4);
sJ3=zeros(4,4);
sJ4=zeros(4,4);
for s=1:4
for t=1:4
sJ1(:,s)= sJ1(:,s)+(J1(:,s)'*G(:,t))*A(:,t);
sJ2(:,s)= sJ2(:,s)+(J2(:,s)'*G(:,t))*A(:,t);
sJ3(:,s)= sJ3(:,s)+(J3(:,s)'*G(:,t))*A(:,t);
sJ4(:,s)= sJ4(:,s)+(J4(:,s)'*G(:,t))*A(:,t);
end
J1(:,s)=(sJ1(:,s)+(p'*G(:,1))*A(s,1)*e(:,s))/ss;
J2(:,s)=(sJ2(:,s)+(p'*G(:,2))*A(s,2)*e(:,s))/ss;
J3(:,s)=(sJ3(:,s)+(p'*G(:,3))*A(s,3)*e(:,s))/ss;
J4(:,s)=(sJ4(:,s)+(p'*G(:,4))*A(s,4)*e(:,s))/ss;
end p=sp/ss;
end
44
% Tính trung bình
c(1)=sum(T1)/sum(O1); c(2)=sum(T2)/sum(O2); c(3)=sum(T3)/sum(O3);
c(4)=sum(T4)/sum(O4);
c
% Tính độ lệch chuẩn
sigma(1)=sqrt((sum(TT1)2*c(1)*sum(T1)+(c(1))^2*…
sum(O1))/sum(O1));
sigma(2)=sqrt((sum(TT2)2*c(2)*sum(T2)+(c(2))^2*…
sum(O2))/sum(O2));
sigma(3)=sqrt((sum(TT3)2*c(3)*sum(T3)+(c(3))^2*…
sum(O3))/sum(O3));
sigma(4)=sqrt((sum(TT4)2*c(4)*sum(T4)+(c(4))^2*…
sum(O4))/sum(O4));
sigma % A
A(2,1)= sum(J1(:,2))/sum(O1);%r=1 A(3,1)= sum(J1(:,3))/sum(O1);
A(4,1)= sum(J1(:,4))/sum(O1);
A(1,2)= sum(J2(:,1))/sum(O2);%r=2 A(3,2)= sum(J2(:,3))/sum(O2);
A(4,2)= sum(J2(:,4))/sum(O2);
A(1,3)= sum(J3(:,1))/sum(O3);%r=3 A(2,3)= sum(J3(:,2))/sum(O3);
A(4,3)= sum(J3(:,4))/sum(O3);
45
A(1,4)= sum(J4(:,1))/sum(O4);%r=4 A(2,4)= sum(J4(:,2))/sum(O4);
A(3,4)= sum(J4(:,3))/sum(O4);
A p;
end % Kết thúc vòng lặp A11=1-A(2,1)-A(3,1)-A(4,1) A22=1-A(1,2)-A(3,2)-A(4,2) A33=1-A(1,3)-A(2,3)-A(4,3) A44=1-A(1,4)-A(2,4)-A(3,4) % Vẽ đồ thị
plot(A12,'LineWidth',2)
hold on; plot(A13,'LineWidth',2) hold on; plot(A14,'LineWidth',2)
hold on; plot(A21,'LineWidth',2) hold on; plot(A23,'LineWidth',2) hold on; plot(A24,'LineWidth',2)
hold on; plot(A31,'LineWidth',2) hold on; plot(A32,'LineWidth',2) hold on; plot(A34,'LineWidth',2)
hold on; plot(A41,'LineWidth',2) hold on; plot(A42,'LineWidth',2) hold on; plot(A43,'LineWidth',2)
hold off;
46
set(gca,'xtick',[1 L]);
axis([1 L 0 1]);
ylabel('A');
title('Uoc luong cua ma tran xac suat chuyen A, N=4');
figure(1);
Kết thúc 100 vòng lặp ta nhận được kết quả như sau n = 100
Trung bình: c = 0.3226 0.4319 0.5512 0.6373 Độ lệch chuẩn: sigma = 0.1044 0.0545 0.0351 0.0092
0.3000 0.1157 0.0000 0.4810 0.8307 0.4000 0.6102 0.0000 0.0000 0.4050 0.3000 0.4642 0.0000 0.2071 0.0000 0.2000 A
A11 = 0.1693 A22 = 0.2722 A33 = 0.3898 A44 = 0.0547
47
Đồ thị nhận được như sau
Hình 4: Biểu đồ thể hiện sự phát triển của ƣớc lƣợng ma trận chuyển xác suất A, N=4.
Kết luận: Các tham số của mô hình sau khi ƣớc lƣợng nhƣ sau
Ma trận xác suất chuyển của mô hình:
0.1693 0.1157 0.0000 0.4810 0.8307 0.2722 0.6102 0.0000 0.0000 0.4050 0.3898 0.4642 0.0000 0.2071 0.0000 0.0547 A
Trung bình
c1 0.3226,c2 0.4319,c3 0.5512,c4 0.6373 .
Độ lệch chuẩn
1 0.1044,2 0.0545,3 0.0351,4 0.0092 .
1 100
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
A
Uoc luong cua ma tran xac suat chuyen A, N=4
48
Từ các tham số đã ước lượng ta có mô hình với các trạng thái phân bố chuẩn sau đây
1 0.3226 0.1044 .1
y
2 0.4319 0.0545 2.
y
3 0.5512 0.0351 .3
y
4 0.6373 0.0092 4.
y