數理統計與數據分析-hw2


 

習題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.2Y_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.2Y_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_%置信區間的下區間

 

 

  1. 估計比率r_:

 

r_ =

 

   31.2500

  1. 置信區間的上界和下界分別是:

up =

 

   32.1901

 

 

btm =

 

   30.3099

  1. 周食物支出的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的比率估計量的抽樣分布:(上圖為樣本容量為25500個癌症死亡人數的簡單隨機估計直方圖,下圖為樣本容量為25500個癌症死亡人數的比率估計直方圖)

 

 

 

其計算結果為:

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簡單隨機樣本估計平均收入:

 

分層樣本估計平均收入:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM