数理统计大作业

  |  

文章导航

研一上数理统计大作业,使用一种数理统计方法进行分析,解决问题。

题目

为了研究不同树种和地理位置对松树生长的影响,我们对4个地区的3种同龄松树的直径进行测量,得到的数据见下表。其中A1,A2,A3分别表示3个不同的树种,B1至B4分别表示4个不同的地区。对每种水平组合进行了5次测量。给定显著性水平α=0.05,对上述试验结果进行分析,研究两种因素对松树的生长有无显著影响。

三种同龄松树的直径测量数据

B1 B2 B3 B4
A1 23, 25, 21, 14, 15 20, 17, 11, 26, 21 16, 19, 13, 16, 24 20, 21, 18, 27, 24
A2 28, 30, 19, 17, 22 26, 24, 21, 25, 26 19, 18, 19, 20, 25 26, 26, 28, 29, 23
A3 18, 15, 23, 18, 10 21, 25, 12, 12, 22 19, 23, 22, 14, 13 22, 13, 12, 22, 19

解题

方差分析

考虑二者的交互作用,计算两种因素、交互作用和误差的平方和、自由度与F值,与拒绝域边界进行比较,计算PR。方差分析结果如下表所示:

双因素方差分析表

方差来源 平方和 自由度 均方和 F值 PR(>F)
因素A 352.533333 2 176.2666665 8.958916 0.000494
因素B 87.516667 3 29.17222233 1.482705 0.231077
交互作用 71.733333 6 11.9555555 0.607652 0.722890
误差 944.400000 48
总和 1456.18333 59

将PR值与α值进行比较,若PR小于α,则拒绝原假设H0,认为该因素对松树生长有显著影响;否则接受原假设H0,认为该因素对松树生长无显著影响。

从上表可得:

0.000494 << 0.05——因素A,即树种对于松树的生长有显著影响;

0.231077 >> 0.05——因素A,即地区对于松树的生长无显著影响;

0.722890 >> 0.05——因素A,即二者的交互作用对于松树的生长无显著影响。

由此我们得出结论:

仅树种对松树生长有显著影响,地区和交互作用对松树生长都无显著影响。

Shapiro-Wilk正态性检验

由于方差分析的前提假设是样本在每个因素下的水平都呈现正态分布,而我们进行方差分析的结果是否有效,和样本是否服从正态分布密切相关。所以,在完成方差分析后,我们还需要对数据的正态性进行检验。

此处我们使用Shapiro-Wilk正态性检验方法:

假设H0: 一定样本量n(3<n<50)的研究对象总是符合正态分布。

将样本量为n的样本按照大小顺序编排,然后根据公式计算统计量W的值,该值越接近于1,且显著水平大于0.05时,我们就没法拒绝原假设。

使用此方法检验每个因素在不同水平下样本的正态性,得到如下结果:

正态检验结果表

水平 统计量W 显著水平P
因素A水平1 0.9758586287498474 0.8702935576438904
因素A水平2 0.9438899755477905 0.28368762135505676
因素A水平3 0.9106301665306091 0.06552256643772125
因素B水平1 0.9835260510444641 0.9880000948905945
因素B水平2 0.8537424802780151 0.019627654924988747
因素B水平3 0.948333740234375 0.4986009895801544
因素B水平4 0.9451896548271179 0.45210620760917664

从上表可以看出,仅因素B的水平2未通过正态分布检验,由此可知,数据的整体正态性优良,得到的结论说服性强。

Bartlett方差齐性检验

对于方差分析,我们除了假设正态分布外,还假设了同种因素各水平样本方差相同。所以我们使用Bartlett方差齐性检验:

假设H0: 研究对象方差相同。

根据公式计算统计量K2的值,显著水平大于0.05,我们就没法拒绝原假设。

假设有r个分组,每组的标准差为S12,S22,Sr2由这些标准差还可以计算出MSe,统计量K2近似服从r - 1的卡方分布。

其中:

使用此方法检验每个因素样本的正方差,得到如下结果:

方差齐性检验结果表

水平 统计量K2 显著水平P
因素A 0.5900002171357336 0.8702935576438904
因素B 2.043625626141553 0.5634015923679045

从上表可以看出,数据在两因素各水平下样本方差基本相同。

源代码

代码1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
'''
第一部分双因素方差分析代码
'''
y = np.array([23, 25, 21, 14, 15, 20, 17, 11, 26, 21,
16, 19, 13, 16, 24, 20, 21, 18, 27, 24,
28, 30, 19, 17, 22, 26, 24, 21, 25, 26,
19, 18, 19, 20, 25, 26, 26, 28, 29, 23,
18, 15, 23, 18, 10, 21, 25, 12, 12, 22,
19, 23, 22, 14, 13, 22, 13, 12, 22, 19])
A = np.repeat([1,2,3],[20,20,20])
B_1 =np.repeat([1,2,3,4],[5,5,5,5])
## 构造因素B的水平对照
B= np.concatenate((B_1,B_1,B_1))
trees = pd.DataFrame({'y':y,'A':A,'B':B})
## 进行方差分析
tree_lm = smf.ols('y ~ C(A, Sum)*C(B, Sum)', data=trees).fit()
table = anova_lm(tree_lm, typ=2)
print(table)

输出: sum_sq df F PR(>F) C(A, Sum) 352.533333 2.0 8.958916 0.000494 C(B, Sum) 87.516667 3.0 1.482705 0.231077 C(A, Sum):C(B, Sum) 71.733333 6.0 0.607652 0.722890 Residual 944.400000 48.0 NaN NaN

代码2:

1
2
3
4
5
6
7
8
## 正态性检验
print('因素A水平1的正态性检验:',st.shapiro(y[A==1]))
print('因素A水平2的正态性检验:',st.shapiro(y[A==2]))
print('因素A水平3的正态性检验:',st.shapiro(y[A==3]))
print('因素B水平1的正态性检验:',st.shapiro(y[B==1]))
print('因素B水平2的正态性检验:',st.shapiro(y[B==2]))
print('因素B水平3的正态性检验:',st.shapiro(y[B==3]))
print('因素B水平4的正态性检验:',st.shapiro(y[B==4]))

输出:

因素A水平1的正态性检验: (0.9758586287498474, 0.8702935576438904)

因素A水平2的正态性检验: (0.9438899755477905, 0.28368762135505676)

因素A水平3的正态性检验: (0.9106301665306091, 0.06552256643772125)

因素B水平1的正态性检验: (0.9835260510444641, 0.9880000948905945)

因素B水平2的正态性检验: (0.8537424802780151, 0.019627654924988747)

因素B水平3的正态性检验: (0.948333740234375, 0.4986009895801544)

因素B水平4的正态性检验: (0.9451896548271179, 0.45210620760917664)

代码3:

1
2
3
## 方差齐性检验
print("因素A:",st.bartlett(y[A==1],y[A==2],y[A==3]))
print("因素B:",st.bartlett(y[B==1],y[B==2],y[B==3],y[B==4]))

输出:

因素A:BartlettResult(statistic=0.5900002171357336, pvalue=0.7445315066337076)

因素B:BartlettResult(statistic=2.043625626141553, pvalue=0.5634015923679045)

考试小抄

祖传数理统计小抄:考试小抄

本站总访问量 您是第位访客