習題7.7
15,
a,
%醫院總數為393所以設N=393 %以n為變量去作圖p和n的關系式 %其中s為總體的方差經計算為589.7 %s1的即樣本均值的方差的,根據書中p149頁公式計算得到 %公式:s1=(s*sqrt(N-n))./sqrt(n*(N-1)) %其中./是為了保證n向量的按位相除可以得到p的向量形式結果 %p的關系中是以200./s1為變量的標准正態分布,所以把normcdf() %公式做出經計算的分布函數的圖像就可以 N=393 n=10:1:100 s=sqrt(var(hospitals.discharges)) s1=(s*sqrt(N-n))./sqrt(n*(N-1)) p=2*(1-normcdf(200./s1,0,1)) figure plot(n,p,'-')
b,
%計算得到delta的辦法是使用norminv函數求得 %0.10時的正態的位置,由於是雙邊的所以取0.95 %乘上之前得到的s1就可以得到答案 N=393 n=20 s=sqrt(var(hospitals.discharges)) s1=(s*sqrt(N-n))./sqrt(n*(N-1)) delta=s1*norminv(0.95,0,1)
n=20時
delta =
211.5765
n=40時
delta =
145.5410
n=60時
delta =
115.4183
P=0.5時
n=20,40,60的情況分別是
delta =
86.7592 59.6806 47.3285
21,
由於置信區間的寬度等於樣本方差和z(α/2)的乘積,z(α/2)在95%的置信度下基本不變,所以樣本方差中的參數n會發生改變,如果樣本方差變為之前的1/2,那么n后=4n前/(1+2n前/N)。不考慮修正系數的話是原來的4倍。
22 ,
47,
%如果需要查看結果可以去掉句尾的分號,不需要加上分號即可 N=393%樣本總數為393 n=128%抽樣樣本數為64/128 M=500%500次抽樣 data=[]%空矩陣 for i=1:M%for循環開始 index1=randperm(numel(hospitals)/2);%用randperm函數對hospitala數據的行數進行打亂重排得到一組亂序數 hos=hospitals(index1(1:n),:);%從hospitals數據表格中抽取n條數據放入hos表格中以便后面調用數據,而不是重復抽取導致數據驢唇不對馬嘴 data(i,1)=mean(hos.discharges);%對第一列的數據求均值放入data矩陣的第i行第1列 data(i,2)=mean(hos.beds);%對第二列的數據求均值放入data矩陣的第i行第2列 end mux=mean(hospitals.beds);%計算總體的床位的均值mux muy=mean(hospitals.discharges);%計算總體的出院人數的均值muy r=muy/mux;%計算總體的比率r varx=var(hospitals.beds);%計算x的方差 vary=var(hospitals.discharges);%計算y的方差 sx=std(hospitals.beds);%計算x的標准差 sy=std(hospitals.discharges);%計算y的標准差 sxy=sum((hospitals.beds-mux).*(hospitals.discharges-muy))/N;%計算x和y 的總體協方差 rou=sxy/(sx*sy);%計算總體相關系數 yr=(data(:,1)./data(:,2))*mux;%計算Y_R ey=mean(yr)%計算E(Y_R) bias=(N-n)*(r*varx-rou*sx*sy)/((N-1)*n*mux) %muy比率估計的近似偏倚 bias1=ey-muy%樣本容量為n的500個出院人數均值的比率估計的偏倚 s1=std(data(:,1))%樣本容量為n的500個出院人數均值的簡單隨機估計的標准差 s2=std(yr)%樣本容量為n的500個出院人數均值的比率估計的標准差 vary=(N-n)*(r^2*varx+vary-2*r*rou*sx*sy)/(n*(N-1)); sy=sqrt(vary) figure subplot(2,2,1:2) histogram(data(:,1),20)%復現圖7.6(a subplot(2,2,3:4) histogram(yr,20)%復現圖7.6(b
n=64的樣本中推論7.4.2的Y_R的近似偏倚為
bias =
0.9803
E(Y_R)-muy的值為
bias1 =
0.7537
估計的近似標准差為
sy =
30.2861
其中抽樣500次的簡單隨機樣本和比率估計的標准差分別為:
s1 =
66.0579
s2 =
30.0280
n=128的樣本中推論7.4.2的Y_R的近似偏倚為
bias =
0.3948
E(Y_R)-muy的值為
bias1 =
0.0733
估計的近似標准差為
sy =
19.2200
其中抽樣500次的簡單隨機樣本和比率估計的標准差分別為:
s1 =
42.1647
s2 =
19.3754
48,
n=100;%抽樣樣本的數量:100個城市家庭 N=100000;%城市家庭共有100000戶 sumx=320;%x的加和值為320 sumy=10000;%y的加和值為10000 sumx2=1250;%x^2的加和值為1250 sumy2=1100000;%y^2的加和值為1100000 sumxy=36000;%xy的加和值為36000 r_=sumy/sumx%估計比率r的估計值 sxy=(sumxy-n*(sumx/n)*(sumy/n))/(n-1);%樣本協方差 sx=sqrt((sumx2-n*(sumx/n)^2)/n);%x樣本的標准差 sy=sqrt((sumy2-n*(sumy/n)^2)/n)%y樣本的標准差 rou_=sxy/(sx*sy)%rou樣本相關系數的計算 varr_=(N-n)*((r_^2)*sx^2+sy^2-2*r_*sx*sy)/(n*(N-1)*(sumx/n)^2);%樣本的估計方差 sr_=sqrt(varr_)%樣本的估計標准差 up=r_+norminv(0.975,0,1)*sr_%置信區間的上區間 btm=r_-norminv(0.975,0,1)*sr_%置信區間的下區間
- 估計比率r_:
r_ =
31.2500
- 置信區間的上界和下界分別是:
up =
32.1901
btm =
30.3099
- 周食物支出的90%置信區間的下界和上界分別是:
btm =
9.4799e+03
up =
1.0520e+04
n=100;%抽樣樣本的數量:100個城市家庭 N=100000;%城市家庭共有100000戶 sumy=10000;%y的加和值為10000 sumy2=1100000;%y^2的加和值為1100000 vary=n*(sumy2-n*(sumy/n)^2) ssumy=sqrt((sumy2-n*(sumy/n)^2)) btm=sumy-norminv(0.95,0,1)*ssumy%置信區間的下區間 up=sumy+norminv(0.95,0,1)*ssumy%置信區間的上區間
65 a~k,
a.
clear all cancer=importdata('cancer.txt');%載入數據cancer的數據 data=cancer(:,1);%讀取第一列的數據放入data figure histogram(data)%畫出直方圖
b.
cancer=importdata('cancer.txt');%載入數據cancer的數據 data=cancer(:,1);%讀取第1列的數據放入data mean1=mean(data)%均值 sum1=sum(data)%總數 var1=var(data)%方差 s1=std(data)%標准差
癌症死亡人數的總體均值、總數、方差和標准差分別是:
mean1 =
39.8571
sum1 =
11997
var1 =
2.5987e+03
s1 =
50.9778
c.
N=301;%有N條數據 n=25;%每次抽樣的數量為n M=500;%進行M次重復獨立實驗 for i=1:M index1=randperm(N);%用randperm函數對cancer數據的行數進行打亂重排得到一組亂序數 data=[data mean(cancer(index1(1:n),1))];%把得到的抽樣數據放進data end figure histogram(data)%畫出直方圖
d.
cancer=importdata('cancer.txt');%載入數據cancer的數據 N=301;%有N條數據 n=25;%每次抽樣的數量為n M=500;%進行M次重復獨立實驗 data=[];%定義經矩陣data for i=1:M index1=randperm(N);%用randperm函數對cancer數據的行數進行打亂重排得到一組亂序數 data=[data mean(cancer(index1(1:n),1))];%把得到的抽樣數據放進data end mean(data) T=mean(data)*N
對500次抽取的25個樣本的均值求期望得到總體均值的估計為:39.7469。總數的估計為:1.2143e+04。
e.
cancer=importdata('cancer.txt');%載入數據cancer的數據 N=301;%有N條數據 n=25;%每次抽樣的數量為n M=500;%進行M次重復獨立實驗 data=[];%定義經矩陣data for i=1:M index1=randperm(N);%用randperm函數對cancer數據的行數進行打亂重排得到一組亂序數 data=[data mean(cancer(index1(1:n),1))];%把得到的抽樣數據放進data end var2=var(data) s2=std(data)
對500次抽取的25個樣本的均值求期望得到總體均值方差和標准差的估計分別為:
var2 =
95.9180
s2 =
9.7938
f.
95%置信區間的下界和上界分別是:
btm =
20.8164
up =
59.0962
包含總體值。
g.
cancer=importdata('cancer.txt');%載入數據cancer的數據 N=301;%有N條數據 n=100;%每次抽樣的數量為n M=500;%進行M次重復獨立實驗 data=[];%定義經矩陣data for i=1:M index1=randperm(N);%用randperm函數對cancer數據的行數進行打亂重排得到一組亂序數 data=[data mean(cancer(index1(1:n),1))];%把得到的抽樣數據放進data end mean2=mean(data) T=mean(data)*N var2=var(data) s2=std(data) btm=mean2-norminv(0.975,0,1)*s2 up=mean2+norminv(0.975,0,1)*s2
結果:
mean2 =
40.2013
T =
1.2101e+04
var2 =
17.1437
s2 =
4.1405
btm =
32.0861
up =
48.3165
h.
這個方法可能有效,因為縣的總人口通常通過女性人口的占比多少來影響乳腺癌發病人數。所以通過計算總人口和患癌死亡人數的變異系數與兩者相關系數的比較大小才能確定是否可以通過總人口的比率估計得出有效的結論。
i.
cancer=importdata('cancer.txt');%載入數據cancer的數據 N=301;%有N條數據 n=25;%每次抽樣的數量為n M=500;%進行M次重復獨立實驗 data=[];%定義經矩陣data for i=1:M index1=randperm(N);%用randperm函數對cancer數據的行數進行打亂重排得到一組亂序數 can=cancer(index1(1:n),:);%把得到的抽樣數據放進data data(i,1)=mean(can(:,1));%對第一列的數據求均值放入data矩陣的第i行第1列 data(i,2)=mean(can(:,2));%對第二列的數據求均值放入data矩陣的第i行第2列 end mux=mean(cancer(:,2));%計算總體的女性人口數的均值mux muy=mean(cancer(:,1))%計算總體的癌症死亡人數的均值muy r=muy/mux;%計算總體的比率r varx=var(cancer(:,2));%計算x的方差 vary=var(cancer(:,1));%計算y的方差 sx=std(cancer(:,2));%計算x的標准差 sy=std(cancer(:,1));%計算y的標准差 sxy=sum((cancer(:,2)-mux).*(cancer(:,1)-muy))/N;%計算x和y 的總體協方差 rou=sxy/(sx*sy);%計算總體相關系數 yr=(data(:,1)./data(:,2))*mux;%計算Y_R ey=mean(yr)%計算E(Y_R) bias=(N-n)*(r*varx-rou*sx*sy)/((N-1)*n*mux) %muy比率估計的近似偏倚 bias1=ey-muy%樣本容量為n的500個癌症死亡人數均值的比率估計的偏倚 s1=std(data(:,1))%樣本容量為n的500個癌症死亡人數均值的簡單隨機估計的標准差 s2=std(yr)%樣本容量為n的500個癌症死亡人數均值的比率估計的標准差 vary=(N-n)*(r^2*varx+vary-2*r*rou*sx*sy)/(n*(N-1)); sy=sqrt(vary) figure subplot(2,2,1:2) histogram(data(:,1),20) subplot(2,2,3:4) histogram(yr,20)
樣本數為25的比率估計量的抽樣分布:(上圖為樣本容量為25的500個癌症死亡人數的簡單隨機估計直方圖,下圖為樣本容量為25的500個癌症死亡人數的比率估計直方圖)
其計算結果為:
s1 =
9.2789
s2 =
2.4147
比率估計的標准差顯著小於簡單隨機估計的標准差。
j.
同一組抽樣數據中d的估計為:
ey1 =
40.2878
T1 =
1.2127e+04
比率估計得出的是:
ey2 =
39.9347
T2 =
1.2020e+04
其中,總體的均值和總數分別為:
mean1 =
39.8571
sum1 =
11997
可知,比率估計的均值和總數更接近於總體的均值和方差。
k.
簡單隨機抽樣的95%的置信區間的上下界和比率估計的95%的置信區間的上下界分別是:
btm1 =
20.5058
up1 =
58.3555
btm2 =
34.6944
up2 =
44.6762
l.
cancer=importdata('cancer.txt');%載入數據cancer的數據 N=301;%有N條數據 n=16;%每次抽樣的數量為n S=4;%分層抽樣分為4層 data=[];%定義空矩陣data用於存儲抽樣得到的數據 mu=[];%定義空矩陣mu用於存儲每層得到的總體均值數據 s=[] nl=[] x_s=[];%定義空矩陣_s用於存儲每層得到的均值*層比例的數據用於最后的加總 for i=1:S if i<S index1=randperm(75);%1:3層每層75打亂順序 can=cancer(ceil((i-1)*300/S)+index1(1:n),:);%在每層中抽取n個觀察值 data=[data can];%存儲得到的觀察值數據 mu=[mu mean(cancer(ceil((i-1)*300/S)+index1,1))];%存儲每層的均值數據 s=[s std(cancer(ceil((i-1)*300/S)+index1,1))] x_s=[x_s 75*mean(data(:,2*i-1))/301]%存儲前3層均值*層比例的數據 else index1=randperm(76);%4層76條數據打亂順序 can=cancer(ceil((i-1)*300/S)+index1(1:n),:);%抽取n個觀察值 data=[data can];%存儲得到的觀察值數據 mu=[mu mean(cancer(ceil((i-1)*300/S)+index1,1))];%存儲4層的均值數據 s=[s std(cancer(ceil((i-1)*300/S)+index1,1))] x_s=[x_s 76*mean(data(:,2*i-1))/301]%存儲第4層均值*層比例的數據 end end mux=mean(cancer(:,1))%總體均值真實值 T=sum(cancer(:,1))%總體總數真實值 X_S=sum(x_s)%樣本估計的總體均值 TS=N*X_S%樣本估計的總體總數
死亡人數的總體均值和總數的真實值:
mux =
39.8571
T =
11997
死亡人數的總體均值和總數的樣本估計值:
X_S =
41.2087
TS =
1.2404e+04
m.
wl=[75/301,75/301,75/301,76/301] down=sum(s.*wl) for i=1:S if i<S nl(1,i)=round(n*S*(75*s(1,i)/301)/down); else nl(1,i)=round(n*S*(76*s(1,i)/301)/down); end end nl
如果總共抽取樣本64個,那么比例分配的抽樣比例是:16/75,16/75,16/75,16/76.最優分配的抽樣比是:3/75,5/75,9/75,48/75.
var_all=var(cancer(:,1)) var_xs=var_all*(N-n*S)/(n*(N-1)) var_so=power(down,2)/(n*S) var_sp=sum(wl.*power(s,2))/(n*S)
簡單隨機抽樣、比例分配和最優分配三種方法得到的總體均值估計的方差分別是:
var_xs =128.3126
var_so = 8.3383
var_sp =19.2759
可見比例分配對於簡單隨機抽樣的方差降低十分明顯,而最優分配對於比例分配的方差也有所改善。
n
假設總體分層抽樣共抽取64個樣本,4層的話每層16個樣本;8層的話每層8個樣本;16層的話每層4個樣本;32層的話每層2個樣本;64層的話每層1個樣本。代入估計可得:
8層:
var_xs =256.6252
var_so =4.5543
var_sp =13.5653
16層:
var_xs =513.2504
var_so =2.1297
var_sp =5.5788
32層:
var_xs =1.0265e+03
var_so =2.2526
var_sp =5.1518
64層:
不會算。
事實證明,層數越多,改進的空間也會越小。
67 .
a.
families=importdata('families.txt');%載入families數據集 fam=families.data;%提取數據集中的數據部分 N=43886;%數據集中數據總數為N n=500;%樣本數為n fm=[];%fm空矩陣用於存取抽取的數據 for i=1:n%for循環開始 index1=randperm(N);%打亂順序 fm=fam(index1(1:n),:);%抽取n個數據 end p_=sum(fm(:,1)==3)/n%得到總體比例的估計:樣本比例 sp_=p_*(1-p_)*(1-n/N)/(n-1)%通過方差公式得到樣本方差 btm1=p_-norminv(0.975,0,1)*sp_%95%置信區間的下界 up1=p_+norminv(0.975,0,1)*sp_%95%置信區間的上界 baby_=mean(fm(:,3)) sbaby_=std(fm(:,3))*(N-n)/(n*(N-1)) btm2=baby_-norminv(0.975,0,1)*sbaby_ up2=baby_+norminv(0.975,0,1)*sbaby_ edu_=sum(fm(:,6)<39)/n sedu_=edu_*(1-edu_)*(1-n/N)/(n-1) btm3=edu_-norminv(0.975,0,1)*sedu_ up3=edu_+norminv(0.975,0,1)*sedu_ inc_=mean(fm(:,4)) sinc_=std(fm(:,4))*(N-n)/(n*(N-1)) btm4=inc_-norminv(0.975,0,1)*sinc_ up4=inc_+norminv(0.975,0,1)*sinc_
其中,女戶主家庭所占比例、每戶家庭的平均孩子數、家庭戶主沒有高中畢業證書的比例和平均家庭收入的總體估計、標准誤差和95%置信區間的下界和上界分別是:
p_ =0.1960
sp_ = 3.1220e-04
btm1 =0.1954
up1 =0.1966
baby_ =0.9320
sbaby_ =0.0023
btm2 =0.9275
up2 =0.9365
edu_ =0.1960
sedu_ =3.1220e-04
btm3 = 0.1954
up3 =0.1966
inc_ =4.3030e+04
sinc_ =67.2945
btm4 =4.2898e+04
up4 =4.3162e+04
b.
families=importdata('families.txt');%載入families數據集 fam=families.data;%提取數據集中的數據部分 N=43886;%數據集中數據總數為N n=400;%樣本數為n M=100%抽取M個容量為n 的樣本 fm=[];%fm空矩陣用於存取抽取的數據 inc=[]%income的空矩陣 for i=1:M%for循環開始 index1=randperm(N);%打亂順序 fm=fam(index1(1:n),:);%抽取n個數據 inc=[inc mean(fm(:,4))];%放入每組的income均值 end x=37000:10:46000;%用於正態分布的繪圖 mean1=mean(inc)%mean1是樣本收入均值 s1=std(inc)%s1為樣本標准差 figure subplot(2,2,1:2) plot(x,normcdf(x,mean1,s1))%畫出正態分布圖 hold on cdfplot(inc)%畫出累計分布圖 subplot(2,2,3:4) histogram(inc,y)%畫出直方圖 histfit(inc)%畫出正態分布擬合圖 figure normplot(inc)%畫出正態概率圖
100個估計的平均數和標准差為:
mean1 =
4.1416e+04
s1 =
1.5526e+03
經驗累積分布函數疊加正態累計分布函數,和直方圖疊加同均值和標准差的正態密度線:
正態概率圖:
b1=sum(power((inc-mean1),3))/(n*power(s1,3))
偏度系數b1為:
b1 =
0.0817
100個容量100的樣本:
經驗累積分布函數疊加正態累計分布函數,和直方圖疊加同均值和標准差的正態密度線:
正態概率圖:
偏度系數b1為:
b1 =
0.3604
c.
families=importdata('families.txt');%載入families數據集 fam=families.data;%提取數據集中的數據部分 N=43886;%數據集中數據總數為N n=500;%樣本數為n fm=[];%fm空矩陣用於存取抽取的數據 f=[];%f空矩陣用於裝i類型家庭的收入數據 figure for i=1:3%for循環開始 index1=randperm(N);%打亂順序 fm=fam(index1(1:n),:);%抽取n個數據 index2=find(fm(:,1)==i);%找到第i個類型家庭的索引 f=fm(index2,4);%用索引找到i類家庭的收入 subplot(2,3,i)%子圖 histogram(f,10)%畫直方圖 subplot(2,3,i+3) boxplot(f)%箱線圖 f=[]; end
直方圖和箱線圖:
d.
families=importdata('families.txt');%載入families數據集 fam=families.data;%提取數據集中的數據部分 N=43886;%數據集中數據總數為N n=400;%樣本數為n fm=[];%fm空矩陣用於存取抽取的數據 f=[];%f空矩陣用於裝i類型家庭的收入數據 figure for i=1:4%for循環開始 index1=randperm(N);%打亂順序 fm=fam(index1(1:n),:);%抽取n個數據 index2=find(fm(:,5)==i);%找到第i個分區的索引 f=fm(index2,4);%用索引找到i分區的收入 subplot(2,4,i)%子圖 histogram(f,10)%畫直方圖 subplot(2,4,i+4) boxplot(f)%箱線圖 f=[]; end
收入:
家庭規模:北區和西區的家庭規模會大於東區和南區。
教育程度:南區和西區的教育程度會高於東區和北區。
e.
每個地區的生育意願有差別嗎?
可以看到西區的生育意願高於其他區。
f.
400簡單隨機樣本估計平均收入:
分層樣本估計平均收入: