栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

单因子方差分析Python实现(小鸡增肥)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

单因子方差分析Python实现(小鸡增肥)

#anova_lm
##《概率论与数理统计》378页例8.1.2
from statsmodels.stats.anova import anova_lm
from statsmodels.formula.api import ols
import pandas as pd

data= pd.DataFrame(
    {
        "weights":[73,9,60,1,2,12,9,28,
                   107,92,-10,109,90,74,122,1,
                   93,29,80,21,22,32,29,48],
        "a":["1"]*8+["2"]*8+["3"]*8
    }
)
model = ols('weights ~a', data=data)
test = model.fit()
anova_lm(test)

Out:
            df        sum_sq      mean_sq         F    PR(>F)
a          2.0   9660.083333  4830.041667  3.594816  0.045432
Residual  21.0  28215.875000  1343.613095       NaN       NaN

自编

import numpy as np
a1=np.array([73,9,60,1,2,12,9,28])
a2=np.array([107,92,-10,109,90,74,122,1])
a3=np.array([93,29,80,21,22,32,29,48])
m=8
r=3
n=m*r
y_bar=(sum(a1+a2+a3))/(m*r)
y1_d_bar=np.mean(a1)
y2_d_bar=np.mean(a2)
y3_d_bar=np.mean(a3)
sa=m*((y1_d_bar-y_bar)**2+(y2_d_bar-y_bar)**2+(y3_d_bar-y_bar)**2)
se=sum((a1-y1_d_bar)**2)+sum((a2-y2_d_bar)**2)+sum((a3-y3_d_bar)**2)
f=(sa/(r-1))/(se/(n-r))

f
Out[3]: 3.594815861638174

拒绝域

>> finv(0.95,2,21)

ans =

    3.4668

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/954600.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号