育种数据分析之放飞自我分享 http://blog.sciencenet.cn/u/yijiaobai 关注:生物统计,数量遗传,混合线性模型,生物信息,R,Perl,Python,GWAS,GS相关方法,文章及代码

博文

Python学生物统计---方差分析---学习笔记7

已有 6736 次阅读 2018-10-28 20:28 |个人分类:Python和Julia学习|系统分类:科研笔记

OLS: 最小二乘法

from scipy import stats

import pandas as pd

import numpy as npfrom statsmodels.formula.api 

import olsfrom statsmodels.stats.anova 

import anova_lmfrom statsmodels.stats.multicomp 

import pairwise_tukeyhsdimport matplotlib.pyplot as plt

7.1 单因素方差分析

7.1.csv


dat1



Varietyrepy
0Ab115.3
1Bb118.0
2Cb116.6
3Db116.4
4Eb113.7
5Fb117.0
6Ab214.9
7Bb217.6
8Cb217.8
9Db217.3
10Eb213.6
11Fb217.6
12Ab316.2
13Bb318.6
14Cb317.6
15Db317.3
16Eb313.9
17Fb318.2
18Ab416.2
19Bb418.3
20Cb417.8
21Db417.8
22Eb414.0
23Fb417.5


数据描述

有A,B, C,D,E五个品种,共有4个重复的产量数据。

  • Variety 品种

  • rep 重复

  • y 产量

dat1 = pd.read_csv("7.1.csv")
dat1.head()



Varietyrepy
0Ab115.3
1Bb118.0
2Cb116.6
3Db116.4
4Eb113.7


这里, 将Variety作为考察因素,使用最小二乘法OLS

model = ols('y ~ C(Variety)',dat1).fit()
anovat = anova_lm(model)
print(anovat)
              df     sum_sq    mean_sq          F        PR(>F)
C(Variety)   5.0  52.378333  10.475667  40.334118  3.662157e-09
Residual    18.0   4.675000   0.259722        NaN           NaN

结果可以看出,Variety之间的F检验达到极显著水平(P=3.66e-9)

7.2 二因素方差分析

7.2.csv


二因素方差分析,即有两个处理因素的方差分析。下面数据有两个处理:地点loc和品种cul,观测值为y

dat2 = pd.read_csv("7.2.csv")
dat2.head()



locculy
0AnnBH934.460
1AriBH934.417
2AugBH934.669
3CasBH934.732
4DelBH934.390


模型为y~loc + cul

formula = 'y~ loc + cul'

anova_results = anova_lm(ols(formula,dat2).fit())

print(anova_results)
             df      sum_sq    mean_sq          F        PR(>F)
loc        17.0   22.671174   1.333598   9.087496  2.327448e-15
cul         8.0  114.536224  14.317028  97.560054  1.611882e-52
Residual  136.0   19.958126   0.146751        NaN           NaN

结果可以看出,地点loc和品种cul间均达到极显著水平

7.3 二因素有交互方差分析

7.3.csv


二因素有交互的方差分析,模型为: y~A*B,或者为y ~ A + B + A:B

dat3 = pd.read_csv("7.3.csv")
dat3.head()



ABy
0A1b127
1A1b129
2A1b126
3A1b126
4A2b130


formula = 'y~C(A) + C(B) + C(A):C(B)'

anova_results = anova_lm(ols(formula,dat3).fit())

print(anova_results)
             df      sum_sq     mean_sq           F        PR(>F)
C(A)        2.0  315.833333  157.916667  129.204545  2.247182e-19
C(B)        4.0  207.166667   51.791667   42.375000  1.032420e-14
C(A):C(B)   8.0   50.333333    6.291667    5.147727  1.375790e-04
Residual   45.0   55.000000    1.222222         NaN           NaN

结果表明,因素A,B,A:B均达到极显著水平


Python生物统计---前言及Flag---学习笔记1


Python学生物统计---为什么是统计---学习笔记2


Python学生物统计---Python基础---学习笔记3


Python学生物统计---数据导入---学习笔记4


Python学生物统计---T检验---学习笔记6



关注公众号:




https://blog.sciencenet.cn/blog-2577109-1143281.html

上一篇:《大国宪制》读后感---题记
下一篇:如何对数据进行汇总统计(R语言)
收藏 IP: 106.39.56.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-12-22 12:15

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部