精华内容
下载资源
问答
  • 基于R语言aov通用批量分析

    千次阅读 2020-03-16 16:47:47
    之前的博文for循环与plyr包执行方差分析及其多重比较的批量分析里提到使用两种方法进行aov批量分析,但局限是...// aov batch in R aov.batch <- function(df,mod,nf,alpha=.05) { library(agricolae) res...

    之前的博文for循环与plyr包执行方差分析及其多重比较的批量分析里提到使用两种方法进行aov批量分析,但局限是方差分析模型是固定的,那么有没有办法将其改为通用型函数。

    答案是当然可以!

    1 首先改写通用函数

    // aov batch in R
    aov.batch <- function(df,mod,nf=NULL,alpha=.05) {
      library(agricolae)
      
      res<-list()
      fit<-aov(mod,data=df) 
      aov.res<-summary(fit) # list
      
      res1<-list()
        if(is.null(nf)) {
        tt<-as.character(mod[[3]])
        fn<-tt[tt!="+"]
        nf<-length(fn)
      } else{
        fn<-names(df)[nf]
        nf<-length(fn)
      }
      
      for(j in 1:nf){
        res1[[j]]<-duncan.test(fit,fn[j],alpha=.05)$groups
      }
      names(res1)<-fn
      
      res<-list(aov.res,res1)
      names(res)<-c('aov','comp1')
      res
    }
    
    aovr.print<-function(res,idx){
      print(res[idx])
    }
    

    请注意:暂时不能处理因子互作的多重比较。

    2 运行示例

    // 指定具体的方差分析模型
    aov1.batch<-function(df,mod=y~Clone+Treat){
      res<-aov.batch(df,mod=mod)
      res
    }
    # 数据重构
    dat1 <- tidyr::gather(dat,key=Trait,y,-c(1:3))
    aov.res <- plyr::dlply(dat1,"Trait",aov1.batch)
    

    示例数据:

    > head(dat[,1:6])
      Clone Treat Rep    EC      RWC       RWD
    1     1     1   1 17.25 88.43537 11.564626
    2     2     1   1 16.88 92.36111  7.638889
    3     3     1   1 20.05 81.14754 18.852459
    4     4     1   1 23.14 62.90323 37.096774
    5     5     1   1 24.06 85.32110 14.678899
    6     6     1   1 15.98 65.00000 35.000000
    

    3 查看结果

    > idx<-names(aov.res)
    > aovr.print(aov.res,idx)
    All aov results are as following:
    EC :
    $`aov`
                Df Sum Sq Mean Sq F value Pr(>F)    
    Clone        8   5269     659   55.45 <2e-16 ***
    Treat        3  17594    5865  493.75 <2e-16 ***
    Residuals   96   1140      12                   
    ---
    Signif. codes:  0***0.001**0.01*0.05.0.1 ‘ ’ 1
    
    $comp1
    $comp1$`Clone`
            y groups
    5 48.6575      a
    4 44.0475      b
    9 40.9050      c
    3 36.9675      d
    1 35.2275      d
    2 32.1100      e
    7 29.6600     ef
    8 29.1475     fg
    6 26.7125      g
    
    $comp1$Treat
             y groups
    4 53.53111      a
    3 41.11333      b
    2 29.84556      c
    1 19.25889      d
    ...
    

    到此,演示结束。
    通用函数aov.batch编写后,不能直接使用,需要再次生产另一个专用函数aov1.batch,后续的程序才能运行。

    展开全文
  • R语言

    2019-11-26 20:31:07
    随着大数据的概念变得...R语言作为功能强大并且免费的数据挖掘工具,在数据挖掘领域获得了越来越多用户的青睐。近几年,中国R语言大会在越来越多的城市举行,参会人数也呈现爆发式增长,尤其是业界人士占据了相...

    随着大数据的概念变得越来越流行,对数据的探索、分析和挖掘已经成为大数据分析领域的基本技能之一。作为探索和分析数据的基本理论和工具,利用科学的数据挖掘技术进行数据预处理和借助成熟的数据挖掘算法进行模型拟合成为时下的热门技术之一。R语言作为功能强大并且免费的数据挖掘工具,在数据挖掘领域获得了越来越多用户的青睐。近几年,中国R语言大会在越来越多的城市举行,参会人数也呈现爆发式增长,尤其是业界人士占据了相当大的比例,R语言已成为企业界做数据分析挖掘必备的利器之一。

    邓一硕写过一篇文章“R语言书籍的学习路线图”,很有参考意义,初级入门、高级入门、绘图与可视化、计量经济学、时间序列分析与金融等内容,涉及到30多本R语言书籍和小册子,但大部分都是英文的。
    引用CSDN前辈的地址:https://blog.csdn.net/faith_binyang/article/details/79584655

    CSDN上有两集免费的短介绍视频,其中推荐了一些学习方法:
    中文书籍推荐:
    在这里插入图片描述
    R语言社区

    R语言博客
    在这里插入图片描述
    操作:
    养成好的习惯,首先更改目录。getwd()获得当前目录,setwd(" ")设定新的目录。
    注释符号:#。
    语句后面加分号(;)和MATLAB里面一样,是不显示该执行结果的意思。向上光标也是找回上一命令的意思。R中用(NA)表示缺失值。R中区分大小写,变量命名是用(字母、数字、句点)。寻求帮助用(?+函数名称)。
    调用程序包:library(MASS以MASS为例)。
    R中的与运算是(&)、或运算是(|)、非运算是(!)。
    常见统计函数如下:
    在这里插入图片描述

    矩阵与数组:矩阵是特殊的数组。
    矩阵:matrix;数组:array。
    访问向量:x[i];访问矩阵A[i,j]。
    函数matrix( )用来创建矩阵。默认按列排列。矩阵的±*/^都是对其中各个元素。
    函数array()用来创建数组。

    数据的读写
    read.table():读表格形式的文件。
    scan()读纯文本格式文件。
    绘图
    (1)高级绘图函数,创建一个新的图形,表2.6。
    (2)低级绘图函数,在现存的图形上添加元素,表2.6。
    在这里插入图片描述
    在这里插入图片描述
    箱形图:
    在这里插入图片描述
    参数检验与非参数检验
    参数假设检验:事先假定总体的分布类型已知且都认为服从正态分布。
    非参数检验:泛指“对分布类型已知的统计进行参数检验”之外的所有检验方法,对总体的分布进行假设,又叫拟合优度检验。
    以下是非参数检验的几个方法:
    (1)卡方检验(Chi-Square Test):用于检验样本数据是否与某种概率分布的理论数值相符合,进而推断样本数据是否来自该分布的样本的问题。(原假设是不存在显著差异。概率p值小于显著水平α,拒绝原假设,即样本所属总体的分布与指定的理论分布存在显著差异;概率p值大于显著水平α,成立原假设,即样本所属总体的分布与指定的理论分布无显著差异;α一般为0.05)。R语言函数chisq.test()。
    (2)K-S检验:可利用样本数据推断总体是否服从某一理论分布。(原假设是不存在显著差异。概率p值小于显著水平α,拒绝原假设,即样本所属总体的分布与指定的理论分布存在显著差异;概率p值大于显著水平α,成立原假设,即样本所属总体的分布与指定的理论分布无显著差异;α一般为0.05)R语言函数ks.test()。
    (3)正态性的图检验:检验总体是否为正态分布。(因为很多统计方法中都假定样本来自正态总体,所以正态检验就很重要。原假设是…服从正态分布)QQ图法,qqnorm( );qqline( )。

    关联性检验
    考察两个变量之间是否存在关系,例如研究肺癌与吸烟的关系,称为独立性检验。
    1.卡方统计量,两个变量之间的相关程度。,观测值与期望值之间的接近程度,越接近,卡方值越小。
    2.列联表检验
    3.Fisher精确检验

    蒙特卡罗

    随机抽样方法,随机数的生成方法,利用蒙特卡罗方法解决积分问题,目前觉得这一部分我暂时用不到,所以暂时不整理。
    第六章随机模拟实验、第七章随机过程计算与仿真也不整理。

    方差分析与试验设计

    在这里插入图片描述

    单因素方差分析

    在一项实验中,让一个因素的水平发生变化,其他因素水平保持不变,叫做单因素试验。处理单因素试验的统计推断问题称为单因素方差分析。
    在这里插入图片描述
    在这里插入图片描述
    R语言中函数aov()进行方差分析。函数summary()可以列出方差分析表的详细结果。aov()进行方差分析时需要进行正态性检验和方差一致性检验:命令shapiro.test()是正态性检验,适用于样本容量n小于等于50时;命令bartlett.test()是方差一致性检验。
    另外,levene.test()可以进行方差分析,适用于正态分布或非正态分布或分布不明的数据。
    方差分析后的多重比较,就是进行方差分析得知了因子之间存在差异,想要知道具体哪些因子间存在差异,命令pairwise.t.test()。

    两因素等重复试验的方差分析

    在这里插入图片描述

    回归分析

    在这里插入图片描述
    变量间的统计关系:在统计推断中,把具有密切关系,但又不能由某一个或某一些变量唯一确定另外一个变量的关系,称为变量之间的统计关系或相关关系
    关于这个“统计关系”,现代统计学已经形成两个重要分支:相关关系回归分析
    在这里插入图片描述
    1.散点图:可以反映两个变量之间是否具有相关性,但不能体现相关强度。
    2.相关系数:可以反映相关强度。叫做线性相关系数或Pearson相关系数。
    多元线性回归分析:R^2。
    在这里插入图片描述

    展开全文
  • R语言学习八

    2017-01-13 16:03:27
    aov()函数 aov()函数的语法为aov(formula,data=dataframe) 例如用y来代表因变量,用字母A,B,C来代表因子,则常用的一些符号表达式如下: 对应的结果如下: 双因素的ANOVA分析: T检验: ...

    方差

    aov()函数
    aov()函数的语法为aov(formula,data=dataframe)
    例如用y来代表因变量,用字母A,B,C来代表因子,则常用的一些符号表达式如下:
    这里写图片描述
    这里写图片描述
    对应的结果如下:
    这里写图片描述
    双因素的ANOVA分析:
    这里写图片描述
    T检验:
    这里写图片描述
    函数简介:
    这里写图片描述
    相关性:
    这里写图片描述
    这里写图片描述
    线性模型,一般使用pwr.f2.test()来完成相应的功效分析
    卡方检验:卡方检验主要用来评价两个类别型变量的关系,典型的零假设就是变量之间独立,备择假设是不独立,pwr.chisq.test() 函数可以用来评估卡方检验的功效、效应值和所需样本大小。格式为:
    pwr.chisq.test(w=,N=,df=,sig.level=,power=)
    其中,w是效应值,N是总样本大小,df是自由度。
    这里写图片描述
    统计检验有一些效应值基准,可以用于平时的参考:
    这里写图片描述
    下节将讲述绘图

    展开全文
  • R中经常会用aov()和lm()两个函数进行方差分析,aov 函数的内核使用了lm算法,但二者有一定的区别。 aov() 默认(summary) 结果是基于Type I 平方和,而 lm() 默认(summary)的结果是Type III平方和。aov()分析的...

    R:aov和lm方差分析的区别

    在R中经常会用aov()和lm()两个函数进行方差分析,aov 函数的内核使用了lm算法,但二者有一定的区别。
    aov() 默认(summary) 结果是基于Type I 平方和,而 lm() 默认(summary)的结果是Type III平方和。aov()分析的结果受自变量输入顺序的影响,而lm()与自变量输入顺序无关。当然这种差异是针对非平衡数据而言。对于平衡全处理的数据结构,二者分析的结果是一致的。

    Ⅲ型平方和与Ⅰ型平方和

    如果是等组设计,这几种平方和没有任何区别。不同类型的平方和是针对非等组设计提出的。需要通过线性模型来理解。

    I型平方和也叫顺序平方和,需要考虑各主效应的进入顺序。但I型平方和不正交,顺序不同计算出的结果也不同,不推荐使用。

    II型平方和叫偏序平方和,不考虑主效应顺序,但在计算主效应时不考虑交互作用。

    如果各效应之间不存在交互作用,II型平方和效力较高III型平方和也叫正交平方和,不考虑顺序,但不能将总平方和完全分解。目前非等组设计中推荐使用的是III型平方和

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    from statsmodels.formula.api import ols #拟合线性模型的包
    from statsmodels.stats.anova import anova_lm#进行方差分析的包
    import pandas as pd
    import numpy as np
    data={
        'XA1':  [1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1],
        'XA2':  [0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1,-1,-1,-1],
        'XB1':  [1,1,1,-1,-1,-1,-1,-1,1,1,1,1,-1,-1,-1,-1,-1,1,1,1,-1,-1,-1,-1],
        'XAB11':[1,1,1,-1,-1,-1,-1,-1, 0,0,0,0, 0,0,0,0,0,-1,-1,-1,1,1,1,1],
        'XAB21':[0,0,0, 0,0,0,0,0,1,1,1,1, -1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1],
        'Y':[6,3,3,6,3,5,5,2,7,6,7,5,8,7,8,9,8,9,7,5,10,12,11,7],
        'A':[1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3],
        'B':[1,1,1,2,2,2,2,2,1,1,1,1,2,2,2,2,2,1,1,1,2,2,2,2]
    }#其中前5行是虚拟变量,Y是观测值,A,B是分类变量
    df=pd.DataFrame(data)
    model_none=ols('Y~1',data=df).fit()#零模型,即没有任何效应
    #-----------------首先进场的三种情况-----------------
    model_A=ols('Y~XA1+XA2',data=df).fit()#只有A因素,即A先入场
    model_B=ols('Y~XB1',data=df).fit()#只有B因素,即B先入场
    #------------------其次进场的情况----------------------
    model_AB=ols('Y~XA1+XA2+XB1',data=df).fit()#A,B主效应同时存在
    #------------------最后进场,全模型-------------------------
    model_full=ols('Y~XA1+XA2+XB1+XAB11+XAB21',data=df).fit()#全模型
    #------------------以下为方差分析结果---------------------
    model_anova_ABR=ols('Y~C(A,Sum)+C(B,Sum)+C(A,Sum):C(B,Sum)',data=df).fit()
    #用分类变量进行方差分析,进场顺序为ABR
    anova_Result_ABR=anova_lm(model_anova_ABR,typ=1)#此时选择Ⅰ型平方和
    
    model_anova_BAR=ols('Y~C(B,Sum)+C(A,Sum)+C(A,Sum):C(B,Sum)',data=df).fit()
    #用分类变量进行方差分析,进场顺序为BAR
    anova_Result_BAR=anova_lm(model_anova_BAR,typ=1)#此时选择Ⅰ型平方和
    

    先来计算进场顺序依次为A主效应,B主效应,AB交互作用的Ⅰ型平方和。看看结果如何

    #以下计算进场顺序A-B-R的Ⅰ型平方和
    SSEN=model_none.mse_resid*model_none.df_resid#零模型残差
    SSEA=model_A.mse_resid*model_A.df_resid#A先进场模型残差
    SSEAB=model_AB.mse_resid*model_AB.df_resid#AB模型残差,此时B第二个进场
    SSEF=model_full.mse_resid*model_full.df_resid#全模型残差
    SSA=SSEN-SSEA#A主效应
    SSB=SSEA-SSEAB#B主效应
    SSR=SSEAB-SSEF#交互作用效应
    print('用回归计算的Ⅰ型平方和输出结果为:'
          '\nSSA:%.3f,\nSSB:%.3f,\nSSR:%.3f'%(SSA,SSB,SSR))
    #依次打印A主效应平方和,B主效应平方和,交互作用平方和
    
    用回归计算的Ⅰ型平方和输出结果为:
    SSA:83.766,
    SSB:15.226,
    SSR:7.083
    print('Ⅰ型平方和方差分析输出结果为:\n',anova_Result_ABR)#打印方差分析结果
    
    Ⅰ型平方和方差分析输出结果为:
                            df     sum_sq    mean_sq          F    PR(>F)
    C(A, Sum)             2.0  83.765873  41.882937  17.310973  0.000064
    C(B, Sum)             1.0  15.226146  15.226146   6.293241  0.021911
    C(A, Sum):C(B, Sum)   2.0   7.082981   3.541490   1.463762  0.257627
    Residual             18.0  43.550000   2.419444        NaN       NaN
    print('各主效应与交互作用平方和之和为:%.3f'%(np.sum(anova_Result_ABR.sum_sq[0:3])))
    
    各主效应与交互作用平方和之和为:106.075
    

    可见,此时用回归模型计算的结果与用方差分析计算的结果相同,注意此时的方差分析使用的是Ⅰ型平方和。而且Ⅰ型平方和的主效应与交互作用之和刚好等于组间平方和106.075

    接下来再计算进场顺序为B主效应,A主效应,AB交互作用的Ⅰ型平方和看看

    #以下计算进场顺序B-A-R的Ⅰ型平方和
    SSEN=model_none.mse_resid*model_none.df_resid#零模型残差
    SSEB=model_B.mse_resid*model_B.df_resid#B先进场模型残差
    SSEAB=model_AB.mse_resid*model_AB.df_resid#AB模型残差,此时A第二个进场
    SSEF=model_full.mse_resid*model_full.df_resid#全模型残差
    SSA=SSEN-SSEB#A主效应
    SSB=SSEB-SSEAB#B主效应
    SSR=SSEAB-SSEF#交互作用效应
    print('用回归计算的Ⅰ型平方和输出结果为:'
          '\nSSA:%.3f,\nSSB:%.3f,\nSSR:%.3f'%(SSA,SSB,SSR))
    #依次打印A主效应平方和,B主效应平方和,交互作用平方和
    
    用回归计算的Ⅰ型平方和输出结果为:
    SSA:11.668,
    SSB:87.324,
    SSR:7.083
    print('Ⅰ型平方和方差分析输出结果为:\n',anova_Result_BAR)#打印方差分析结果
    
    Ⅰ型平方和方差分析输出结果为:
                            df     sum_sq    mean_sq          F    PR(>F)
    C(B, Sum)             1.0  11.667857  11.667857   4.822536  0.041435
    C(A, Sum)             2.0  87.324162  43.662081  18.046325  0.000050
    C(A, Sum):C(B, Sum)   2.0   7.082981   3.541490   1.463762  0.257627
    Residual             18.0  43.550000   2.419444        NaN       NaN
    print('各主效应与交互作用平方和之和为:%.3f'%(np.sum(anova_Result_BAR.sum_sq[0:3])))
    
    各主效应与交互作用平方和之和为:106.075
    

    在这里插入图片描述

    详细阅读:用回归理解方差分析

    为了更好理解这篇文章,你可能需要了解:

    • 两因素方差分析
    • 平方和的分解
    • 方差分析模型
    • 虚拟变量

    推荐先阅读

    用回归来理解方差分析(一):单因素方差分析
    用回归来理解方差分析(二):两因素方差分析

    双因素方差分析python

    from statsmodels.formula.api import ols #拟合线性模型的包
    from statsmodels.stats.anova import anova_lm#进行方差分析的包
    import pandas as pd
    import numpy as np
    data={
        'XA1':  [1,1,1,1, 1, 1, 1, 1,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1],
        'XA2':  [0,0,0,0, 0, 0, 0, 0,1,1,1,1,1,1,1,1,-1,-1,-1,-1,-1,-1,-1,-1],
        'XB1':  [1,1,1,1,-1,-1,-1,-1,1,1,1,1,-1,-1,-1,-1,1,1,1,1,-1,-1,-1,-1],
        'XAB11':[1,1,1,1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,-1,-1,-1,-1,1,1,1,1],
        'XAB21':[0,0,0,0,0,0,0,0,1,1,1,1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1],
        'Y':[5,3,4,2,6,3,5,5,7,6,7,8,8,7,8,5,9,7,5,7,10,12,11,7],
        'A':[1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3],
        'B':[1,1,1,1,2,2,2,2,1,1,1,1,2,2,2,2,1,1,1,1,2,2,2,2]
    }#其中前5行是虚拟变量,Y是观测值,A,B是分类变量
    df=pd.DataFrame(data)
    model_lin=ols('Y~XA1+XA2+XB1+XAB11+XAB21',data=df).fit()#用虚拟变量进行回归
    model_anova=ols('Y~C(A)*C(B)',data=df).fit()#用分类变量进行方差分析
    anova_Result=anova_lm(model_anova)
    
    print(anova_Result)
    
    df     sum_sq    mean_sq          F    PR(>F)
    C(A)        2.0  79.083333  39.541667  17.905660  0.000052
    C(B)        1.0  12.041667  12.041667   5.452830  0.031315
    C(A):C(B)   2.0   9.083333   4.541667   2.056604  0.156887
    Residual   18.0  39.750000   2.208333        NaN       NaN
    #利用方差分析结果计算决定系数,组间平方和(主效应与交互作用之和)/总平方和
    R_square=np.sum(anova_Result.sum_sq[0:3])/np.sum(anova_Result.sum_sq)
    print(R_square)
    
    0.7159869008633524
    #打印回归分析结果
    print(model_lin.summary())
    
    OLS Regression Results                            
    ==============================================================================
    Dep. Variable:                      Y   R-squared:                       0.716
    Model:                            OLS   Adj. R-squared:                  0.637
    Method:                 Least Squares   F-statistic:                     9.075
    Date:                Sat, 11 Apr 2020   Prob (F-statistic):           0.000191
    Time:                        18:02:59   Log-Likelihood:                -40.109
    No. Observations:                  24   AIC:                             92.22
    Df Residuals:                      18   BIC:                             99.29
    Df Model:                           5                                         
    Covariance Type:            nonrobust                                         
    ==============================================================================
                     coef    std err          t      P>|t|      [0.025      0.975]
    ------------------------------------------------------------------------------
    Intercept      6.5417      0.303     21.566      0.000       5.904       7.179
    XA1           -2.4167      0.429     -5.633      0.000      -3.318      -1.515
    XA2            0.4583      0.429      1.068      0.299      -0.443       1.360
    XB1           -0.7083      0.303     -2.335      0.031      -1.346      -0.071
    XAB11          0.0833      0.429      0.194      0.848      -0.818       0.985
    XAB21          0.7083      0.429      1.651      0.116      -0.193       1.610
    ==============================================================================
    Omnibus:                        1.556   Durbin-Watson:                   2.330
    Prob(Omnibus):                  0.459   Jarque-Bera (JB):                1.295
    Skew:                          -0.535   Prob(JB):                        0.523
    Kurtosis:                       2.614   Cond. No.                         1.73
    ==============================================================================
    
    Warnings:
    [1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
    #利用回归模型输出各预测值
    model_lin.predict()
    
    array([ 3.5 ,  3.5 ,  3.5 ,  3.5 ,  4.75,  4.75,  4.75,  4.75,  7.  ,
            7.  ,  7.  ,  7.  ,  7.  ,  7.  ,  7.  ,  7.  ,  7.  ,  7.  ,
            7.  ,  7.  , 10.  , 10.  , 10.  , 10.  ])
    #利用回归模型输出参数估计值
    model_lin.params
    
    Intercept    6.541667
    XA1         -2.416667
    XA2          0.458333
    XB1         -0.708333
    XAB11        0.083333
    XAB21        0.708333
    dtype: float64
    #输出原始观测值的总均值
    np.mean(df['Y'])
    
    6.541666666666667
    

    2 不等组设计的平方和Ⅲ型

    from statsmodels.formula.api import ols #拟合线性模型的包
    from statsmodels.stats.anova import anova_lm#进行方差分析的包
    import pandas as pd
    import numpy as np
    data={
        'XA1':  [1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1],
        'XA2':  [0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1,-1,-1,-1],
        'XB1':  [1,1,1,-1,-1,-1,-1,-1,1,1,1,1,-1,-1,-1,-1,-1,1,1,1,-1,-1,-1,-1],
        'XAB11':[1,1,1,-1,-1,-1,-1,-1, 0,0,0,0, 0,0,0,0,0,-1,-1,-1,1,1,1,1],
        'XAB21':[0,0,0, 0,0,0,0,0,1,1,1,1, -1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1],
        'Y':[6,3,3,6,3,5,5,2,7,6,7,5, 8,7,8,9,8, 9,7,5,10,12,11,7],
        'A':[1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3],
        'B':[1,1,1,2,2,2,2,2,1,1,1,1,2,2,2,2,2,1,1,1,2,2,2,2]
    }#其中前5行是虚拟变量,Y是观测值,A,B是分类变量
    df=pd.DataFrame(data)
    model_full=ols('Y~XA1+XA2+XB1+XAB11+XAB21',data=df).fit()#全模型回归
    model_A=ols('Y~XB1+XAB11+XAB21',data=df).fit()#去掉A因素主效应
    model_B=ols('Y~XA1+XA2+XAB11+XAB21',data=df).fit()#去掉B因素主效应
    model_R=ols('Y~XA1+XA2+XB1',data=df).fit()#去掉交互作用
    model_anova=ols('Y~C(A,Sum)*C(B,Sum)',data=df).fit()#用分类变量进行方差分析
    anova_Result=anova_lm(model_anova,typ=3)
    
    SSE=model_full.mse_resid*model_full.df_resid#全模型残差
    SSEA=model_A.mse_resid*model_A.df_resid#去A模型残差
    SSEB=model_B.mse_resid*model_B.df_resid#去B模型残差
    SSER=model_R.mse_resid*model_R.df_resid#去交互模型残差
    print(SSEA-SSE,SSEB-SSE,SSER-SSE)
    #依次打印A主效应平方和,B主效应平方和,交互作用平方和
    
    74.03142710822807 15.639893617021286 7.082980539433265
    print(anova_Result)#打印方差分析结果
    
    sum_sq    df           F        PR(>F)
    Intercept            993.384574   1.0  410.583751  7.687336e-14
    C(A, Sum)             74.031427   2.0   15.299262  1.311731e-04
    C(B, Sum)             15.639894   1.0    6.464250  2.041777e-02
    C(A, Sum):C(B, Sum)    7.082981   2.0    1.463762  2.576274e-01
    Residual              43.550000  18.0         NaN           NaN
    
    展开全文
  • 使用R语言进行单(双)因素...R语言中使用 aov() 函数 拟合 ANOVA模型, 结果和回归模型中 lm() 函数一样 aov()函数 R 表达式中常见的特殊符号: R 常见研究设计的表达式: 单因素ANOVA: y ~ A 协变量的单因素ANOV
  • R语言中的循环函数

    千次阅读 2018-12-25 22:14:38
    摘要: R语言中有几个常用的函数,可以按组对数据进行处理,apply, lapply, sapply, tapply, mapply,等。这几个函数功能有些类似,下面介绍下这几个函数的用法。 Apply 这是对一个Matrix或者Array进行某个维度的运算...
  • R:aov和lm方差分析的区别

    千次阅读 2019-11-12 11:47:15
    R中经常会用aov()和lm()两个函数进行方差分析,aov 函数的内核使用了lm算法,但二者有一定的区别。 aov() 默认(summary) 结果是基于Type I 平方和,而 lm() 默认(summary)的结果是Type III平方和。aov()分析的...
  • R语言常用函数整理

    千次阅读 2020-10-21 08:45:43
    R语言基础函数整理 R语言常用函数整理本篇是基础篇,即R语言自带的函数。 一、数据管理 vector:向量 numeric:数值型向量 logical:逻辑型向量 character;字符型向量 list:列表 data.frame:数据框 c:连接为...
  • R语言】rpois函数参数详解

    千次阅读 2020-12-05 15:00:48
    rpois函数主要用于产生泊松分布的随机数,其中参数n代表产生数据个数,参数lambda表示产生一组数据的(非负)均值,具体如下: rpois(n, lambda) n:number of random values to return. lambda:vector of (non-...
  • 下面我总结一下R语言如何对常用的方差分析进行操作。1. 方差分析的假定 上面这个思维导图,也可以看出,方差分析有三大假定:正态,独立和齐次,如果不满足,可以使用广义线性模型或者混合线性模型,或者广义线性...
  • 这篇推文会分别介绍经常使用的差异显著性检验方法在R语言中的实现。方法选择差异显著性检验具有多种方法,分别针对不同的情况,我们要根据自身情况选择合适的方法进行分析。⚠️以上方法均为比较不同组数据见均值的...
  • R语言中的常用函数

    千次阅读 多人点赞 2017-03-22 13:24:42
    语言的数学运算和一些简单的函数整理如下: 向量可以进行那些常规的算术运算,不同长度的向量可以相加,这种情况下最短的向量将被循环使用。   改变编译环境的语言(英语) Sys.setenv(LANGUAGE="en") ...
  • R语言常用函数

    千次阅读 2014-09-15 22:08:02
    R语言常用函数 基本 一、数据管理 vector:向量 numeric:数值型向量 logical:逻辑型向量character;字符型向量 list:列表 data.frame:数据框c:连接为向量或列表 length:求长度 subset:求子集seq,from...
  • R语言 回归分析函数说明

    万次阅读 2018-11-02 21:19:56
    回归分析相关的函数 1、一元线性回归 lm() #计算beta0,beta1参数 summary() # 提取lm()参数信息 anovn() #方差分析 predict() # 根据给出自变量预测因变量的值 例: a=lm(y~1+x,data=…) #对x,y回归分析 ...
  • R语言之方差分析篇

    万次阅读 多人点赞 2014-06-14 17:11:51
    还可通过设定options()函数修改R会话中的默认对照方法 eg: options(contrasts=c(contr.SAS","contr.helmert")) ...
  • R语言基本函数(转)

    2019-07-13 17:25:38
    每一种分布有四个函数:d――density(密度函数),p――分布函数,q――分位数函数r――随机数函数。 比如,正态分布的这四个函数为dnorm,pnorm,qnorm,rnorm 列出各分布后缀,前面加前缀d、p、q或r就构成...
  • R语言常用函数参考

    千次阅读 2019-09-28 14:42:08
    每一种分布有四个函数:d――density(密度函数),p――分布函数,q――分位数函数r――随机数函数。 比如,正态分布的这四个函数为dnorm,pnorm,qnorm,rnorm。下面我们列出各分布后缀,前面加前缀d、p、q或r就...
  • [R]R语言常用函数参考

    千次阅读 2014-09-16 11:33:09
    每一种分布有四个函数:d――density(密度函数),p――分布函数,q――分位数函数r――随机数函数。 比如,正态分布的这四个函数为dnorm,pnorm,qnorm,rnorm。下面我们列出各分布后缀,前面加前缀d、p、q或r就...
  • R语言函数总结

    万次阅读 多人点赞 2018-06-20 10:15:44
    R语言与数据挖掘:公式;数据;方法R语言特征对大小写敏感通常,数字,字母,. 和 _都是允许的(在一些国家还包括重音字母)。不过,一个命名必须以 . 或者字母开头,并且如果以 . 开头,第二个字符不允许是数字。基本...
  • R语言之常用函数

    千次阅读 2014-08-31 14:42:00
    对一般数据进行运算的常用函数: 数学函数: 1、round() #四舍五入 例:x round(x, 0) #保留整数位 round(x, 2) #保留两位小数 round(x, -1) #保留到十位   2、signif() #取有效数字(跟学过的有效数字...
  • R语言常用数学函数

    千次阅读 2017-06-09 13:43:05
    语言的数学运算和一些简单的函数整理如下: 向量可以进行那些常规的算术运算,不同长度的向量可以相加,这种情况下最短的向量将被循环使用。   改变编译环境的语言(英语) Sys.setenv(LANGUAGE="en") ...
  • 先言:R语言常用界面操作 帮助:help(nnet) = ?nnet =??nnet 清除命令框中所有显示内容:Ctrl+L 清除R空间中内存变量:rm(list=ls())、gc() 获取或者设置当前工作目录:getwd、setwd 保存指定文件或者从...
  • R 语言常用函数整理

    2016-10-26 15:28:48
    每一种分布有四个函数:d――density(密度函数),p――分布函数,q――分位数 函数r――随机数函数。比如,正态分布的这四个函数为dnorm,pnorm,qnorm,rnorm。下 面我们列出各分布后缀,前面加前缀d、p、q或r...
  • R语言方差分析ANOVA

    万次阅读 多人点赞 2017-02-27 16:23:18
    #调用aov函数进行方差分析(检验组间差异) medicine .aov <- aov( Response ~ Treatment , data =medicine) #summary提取方差分析的结果 summary (medicine.aov) 分析上述计算结果,Df表示自由度,Sum ...
  • R语言基本函数集合

    千次阅读 2014-04-05 21:55:27
    常用函数参考 http://www.stathome.cn/manual/s/14.html 这一节分类列出常用的函数,需要时可以参看帮助。 基本 一、数据管理 vector:向量  numeric:数值型向量  logical:逻辑型向量 character;字符...
  • R语言实现方差分析

    千次阅读 2020-03-23 21:42:45
    方差分析对数据的要求:满足正态性...用aov()函数进行方差分析,基本格式为: aov(formula, data=NULL, projections=FALSE, qr=TRUE, contrasts=NULL, …) 其中,formula为方差分析公式; data为数据框; pro...
  • 【R】R语言常用函数

    2019-09-22 11:21:44
    R语言常用函数 基本 一、数据管理vector:向量 numeric:数值型向量 logical:逻辑型向量character;字符型向量 list:列表 data.frame:数据框c:连接为向量或列表 length:求长度 subset:求子集seq,from:...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 558
精华内容 223
关键字:

r语言aov函数