美文网首页
scipy有交互双因素方差分析

scipy有交互双因素方差分析

作者: 一路向后 | 来源:发表于2021-06-25 22:31 被阅读0次

    1.问题描述

    欲考察不同教材在不同教学方法下的教学效果。现有3种教材,4种不同的教学方法,教材和教学方法有12种不同的组合,在随机抽取的12个不同的班级进行教学,每个班级按随机抽签的方式确定接受哪一种教学处理。一个学期后,每个班抽取2名被测进行测试,数据如下表所示,试对数据结果进行分析处理。

    教材A/教学方法B B_1 B_2 B_3 B_4
    A_1 83,80 90,86 98,92 69,63
    A_2 70,61 84,78 86,83 95,90
    A_3 90,94 54,53 78,79 87,89

    2.源码实现

    import numpy as np
    from scipy.stats import f
    
    X = np.array([[[83, 80], [90, 86], [98, 92], [69, 63]],
            [[70, 61], [84, 78], [86, 83], [95, 90]],
            [[90, 94], [54, 53], [78, 79], [87, 89]]])
    
    a = len(X)
    b = len(X[0])
    c = len(X[0][0])
    
    SST = np.square(X - X.mean()).sum()
    SSA = b * c * np.square(X.mean(axis=2).mean(axis=1) - X.mean()).sum()
    SSB = a * c * np.square(X.mean(axis=2).mean(axis=0) - X.mean()).sum()
    
    SSAB = 0
    
    for i in range(0, a):
        for j in range(0, b):
            SSAB += np.square(X[i][j].mean() - X.mean(axis=2).mean(axis=1)[i] - X.mean(axis=2).mean(axis=0)[j] + X.mean())
    
    SSAB *= c
    
    SSE = SST - SSA - SSB - SSAB
    
    MSA = SSA / (a-1)
    MSB = SSB / (b-1)
    MSAB = SSAB / ((a-1)*(b-1))
    MSE = SSE / (a*b*(c-1))
    
    FA = MSA / MSE
    FB = MSB / MSE
    FAB = MSAB / MSE
    
    print(f.ppf(0.95, dfn=a-1, dfd=a*b*(c-1)))
    print(FA)
    print(f.ppf(0.95, dfn=b-1, dfd=a*b*(c-1)))
    print(FB)
    print(f.ppf(0.95, dfn=(a-1)*(b-1), dfd=a*b*(c-1)))
    print(FAB)
    

    3.运行及其结果

    $ python3 example.py
    3.88529383465
    3.87777777778
    3.4902948195
    13.1259259259
    2.99612037752
    45.0185185185
    

    4.结果解析

    因为F_A<F_{0.95}(2,12),所以教材对教学效果的影响不显著。因为F_B>F_{0.95}(3,12),所以教学方法对教学效果影响显著。因为F_{AB}>F_{0.95}(6,12),所以教材与教学方法的不同组合对教学效果影响显著。

    相关文章

      网友评论

          本文标题:scipy有交互双因素方差分析

          本文链接:https://www.haomeiwen.com/subject/uifayltx.html