再有协方差,逻辑回归,卡方,统计这一块就结束了。感觉我在统计这一块花了好多的时间啊,最近疯狂钻。等我把这弄完,R这一块我就不更新了,数据清洗也不要了。博士前都不来更新了!还有好多事情等着我去做,还有论文没写,还有fMRI没研究,还有matlab没有学,我真是个不务正业到极点了,555,希望以后会用到这些知识和手段,不然我巨亏。要赶紧抓时间学习专业知识和领域技术,能发文章的技术才是好技术。
今天就写方差分析的ggplot的画图,以及协方差分析,和逻辑回归。
画方差分析,这里推荐一个用的很多的,不用纠结配色等问题,能快速生成符合杂志要求的包,ggpubr,这个包包含两个函数,里面有stat_compare_means( ),可以添加p值,显著性标签。
palette 调色板,用于按组着色或填充的调色板。允许的值包括灰色调色板的“灰色”;啤酒调色板,如“RdBu”、“Blues”…;或自定义调色板,如c(“蓝色”、“红色”);以及ggsci R包中的科学期刊调色板,如:“npg”、“aaas”、“lancet”、“jco”、“ucscgb”、“uchicago”、“simpsons”和“rickandmorty”。
comparisons 长度为2的向量的列表。向量中的条目要么是X轴上的2个值的名称,要么是对应于感兴趣组的索引的2个整数,以进行比较。
add 用于添加另一绘图元素的字符矢量(例如:点图或误差线)。允许的值是“无”、“点图”、“抖动”、“方框图”、“点”、“平均值”、“平均值”、“平均值”、“平均值”、“平均值”、“平均值范围”、“中值”、“中值iqr”、“中值mad”、“中值范围”中的一个值或其组合
add.params parameters (color, shape, size, fill, linetype) for the argument ‘add’; e.g.: add.params = list(color = “red”).
ggboxplot(red.cell.folate,x=‘ventilation’,y=‘folate’,fill= “ventilation”, color = ‘ventilation’,
palette = ‘jco’,ylab = ‘FFF’,xlab = ‘VVVV’)+ #备注1
stat_compare_means( label.y = 400,method = ‘anova’)+ #备注2
stat_compare_means(comparisons = list(c(1,2),c(2,3),c(1,3)),label.y = c(380,420,450)) #备注3
备注1:比较简单,不介绍了,palette可以选择杂志的配色。
备注2:函数默认的是Kruskal Wallis检验,可以选择Kruskal、anova,还有两样本的t和Wilcox。
备注3:comparisons是添加两两比较的p值,挺好用的。值得一提的是,可以用因子的储存符号,1,2,3来指定两两组合,也可以用因子的名字来指定,如list(c(‘xxa,‘xxb’),c (‘xxb’,‘xxc’), c ( ‘xxc’, ‘xxa’))。这个也很容易理解。
若想去掉图与轴之间的间隙,可以设置成原点scale_y_continuous(expand = c(0,0)),但是需要重新设置y轴的显示范围,很麻烦,我这里就不弄了。
相应的,还有小提琴图(ggviolin()),线段图(ggline())、柱状图(ggbarplot())。随便示例一个。
ggline(red.cell.folate,x=‘ventilation’,y=‘folate’,add =
c(‘mean_se’,‘jitter’),palette = ‘jco’,ylab = ‘FFF’,xlab = ‘VVVV’)+
stat_compare_means( label.y = 430,label.x = .6,method = ‘anova’)+
stat_compare_means(comparisons = list(c(1,2),c(2,3),c(1,3)),label.y = c(380,400,420))
以上就是最常用的了。说实话感觉还是有点小小的麻烦,但是这个自动设置配色确实好评,挺好的。我一般是画一张图就保存其代码,以后要用的时候调出来改改参数。
话说,我突然想到这里有一个坑。就是stat_compare_means函数用的comparisons,**有没有经过校正?没有校正的话,那用了3次两两比较,犯错几率大大增高。**表现在此图就是,图上没有显示显著差异,但是LSD法发现其中两组有显著差异。所以基于此,我觉得ggpubr包虽然方便,可以直接生成顶级杂志配色,但是缺少了严谨性,(1)如果一定要用ggpubr,要么把显示两两比较的p值选项改为stat_compare_means(…label = ’ p.signif '…),这样就显示显著性的符号而没有数字。要么就直接用ggplot2画,手握画笔肯定是最好,表达最充分的。(2)其实换个角度,可以来个骚操作,就是用Photoshop抠图,这么白的图太容易扣了,重新p上去LSD分析后的p值,这非常容易。最不济用ppt也行。(3)最麻烦的方法就是ggplot重新画,因为ggplot的stat没办法用高级统计方法。
下面是我用ggplot实现的上个图,真的是累死我了,我强烈建议大家还是用抠图的方法把,简单省事,别折腾自己了。
真是有被我的毅力给惊讶到,这样基本实现出了上个图,还可以自己自定义p值,可以先用LSD算出来,然后用这个添加小星星或者abc。但是我还是强烈建议大家P图,几分钟弄完的事儿,就没浪费自己的时间,咱又不是专门写代码的料子。
协方差分析
这里留一个坑,日后来补。这个需要花费半天的时间去理解数学思维。本来不用研究这么深的,用的真的很少。但是上次看文献的时候,看到领域内有个大佬的文章用了这个分析方法,当时觉得很有意思就留了个印象,应该不会太难,相信我能学会。以前觉得某某会某个方法,好厉害的样子,发了高分文章,现在回过头来思考,其实方法是固定的,最前沿的方法不一定好,因为它还没经过验证,而提出问题的重要性远大于方法,先提出问题,再用自己会的方法,然后思考这个得出的结果可靠不可靠,再去寻找改进的方法去计算。这样才是一个完整的科研思路,当然,别人用了某个方法解决了问题,这个方法就可以留意下。谁又能说清楚哪些方法一定有用,哪些方法一定没用呢?像我可能只应用到统计学的很小的一部分方法,但是这学习的过程,教给了我严谨的逻辑思维,不能过分追求p值,但是也要尊重p值不显著的事情。这个度靠自己把握,你觉得有意思就往下深入挖掘。
可重复的双因素方差分析
数据展示:
可以看出数据有3个变量,2个分类1个离散。它有两个自变量:width 和 temp,一个因变量:time。
对上面运用双因素方差分析其实很简单,和单因素是基本一样的。
代码示例:anova(lm(time ~ width * temp )) #输出 width、temp、width:temp的p值。
逻辑回归分析