R:如何为双向方差分析创建交互图
在尝试创建固定效应(模型1)双向方差分析数据的交互图时,我遇到了编码问题。我键入数据并将数据从excel导入RStudio。数据如下R:如何为双向方差分析创建交互图,r,plot,summary,anova,two-way,R,Plot,Summary,Anova,Two Way,在尝试创建固定效应(模型1)双向方差分析数据的交互图时,我遇到了编码问题。我键入数据并将数据从excel导入RStudio。数据如下 Sex Genotype Activity Female I 2.838 Female I 4.216 Female I 2.889 Female I 4.198 Female II 3.55 Female II 4.556 Female II 3.087 Female II 1.943 Female III 3.6
Sex Genotype Activity
Female I 2.838
Female I 4.216
Female I 2.889
Female I 4.198
Female II 3.55
Female II 4.556
Female II 3.087
Female II 1.943
Female III 3.62
Female III 3.079
Female III 3.586
Female III 1.943
Male I 1.884
Male I 2.283
Male I 2.939
Male I 1.486
Male II 2.396
Male II 2.956
Male II 3.105
Male II 2.649
Male III 2.801
Male III 3.421
Male III 2.275
Male III 2.11
然后我将其保存为Excel工作簿。然后,我在RStudio中进入文件>导入数据集>Excel>选择我的数据集文件>选择第一行作为名称并打开Data Viewer。
我检查了我的数据,所有数据都在三列的三个标题下。
然后我做了方差分析:
Model_1 <- aov(Activity ~ Sex*Genotype, data=data7)
> summary(Model_1)
Df Sum Sq Mean Sq F value Pr(>F)
Sex 1 3.527 3.527 6.563 0.0196 *
Genotype 2 0.178 0.089 0.165 0.8488
Sex:Genotype 2 1.166 0.583 1.085 0.3591
Residuals 18 9.673 0.537
但是,当我这样做时,我会得到以下错误:
Error in tapply(response, list(x.factor, trace.factor), fun) : object 'Genotype' not found
我如何使基因型和性别成为一个对象?当它们出现在方差分析表中时,它们不应该已经是对象了吗
另外,我想为每个细胞制作一个平均值、SD和n的表格,但当我尝试使用单向方差分析时,它对双向方差分析不起作用。你怎么做这样的桌子
我在网上尝试过以下例子,但并没有一个能帮助我创建交互图,我也并没有看到任何好的例子(甚至在这个网站上),说明如何为双向方差分析制作一个均值、SD和n的表格,这些都对我的情况有效。
有什么包可以帮我吗
如果有人能帮我解释我做错了什么,以及如何制作桌子,我将不胜感激 有两种方法。
使用基函数
#nj is your dataframe which I loaded using
nj <-read.table("nj_data.txt", header = T)
#Base R - using built-in functions
# the Dot indicates variable(column) to work on
# if you have more than one variable use their names
#good practice to use na.rm = T, to make sure you exclude
# NA - missing values, other wise mean and sd will report NA
aggregate(. ~ Sex+Genotype, data = nj,
FUN = function(x) c(Mean = mean(x, na.rm = T),
n = length(x),
sd = sd(x, na.rm = T)))
#using dplyr - I suggest this as syntax is nicer
library(dplyr)
nj %>% group_by(Sex, Genotype) %>%
summarise_all(funs(mean(., na.rm = T),sd(., na.rm = T),n()))
#here the "." in mean and sd means using the data given
#equivalent to x in base R above
#nj是我使用
nj%组(按性别、基因型)%>%
总结所有数据(funs(平均值(,na.rm=T),sd(,na.rm=T),n())
#这里的“平均值”和sd表示使用给定的数据
#相当于上述R底的x
阅读Tidyverse(一组新的库,以简化数据分析)
在
还有ggplot——这是一本关于使用ggplot的交互图的不错的入门书
以下是基本的解决方案,也许有些笨拙,但很有效:
data7$group=paste(data7$Sex,data7$Genotype,sep="_")
tapply(data7$Activity,data7$group,sd)
阅读
?交互。绘图
,特别是示例。基本上,您需要让它知道数据在哪里,正如您将在命令中看到的,您没有提到它。用(data7,{interaction.plot(基因型,性别,活动,乐趣=平均值,类型=c(“b”),xlab=“generic”,ylab=“酶活性(酶单位(U)=1µmol min-1)”,main=“interaction plot”)}试试这个,
和你的表格查询?摘要
谢谢你的帮助,我能够用(dataHW7,{相互作用图(基因型、性别、活性、乐趣=平均值,类型=c(“b”),pch=16,xlab=“基因型”,ylab=“酶活性(酶单位(U)=1µmol min-1)”,main=“相互作用图”,ylim=c(0,4)))。我在获取平均值、SD和n表时仍然遇到问题。在查看了?摘要和本网站后,我能够通过“model.tables”(model_1,type='means')获得每个单元格的平均值`;但是,我还没有弄清楚如何获得每个单元格的SD。您对如何进行还有什么建议,或者我应该看一个例子吗?我很确定我想使用tapply函数,但我已经尝试了tapply(Activity,Sex,SD)
和tapply(Activity,Genype,SD)
,我尝试了和(dataHW7,{tapply(Activity,Sex,sd)}
但是这给了我整行的sd。我想要按单元格而不是整列或整行。非常感谢!你解释得这么好,我已经看过了链接,它们看起来在将来会很有用。我不知道为什么na.rm=T
如此重要。我只是想检查一下我是否理解了“.”`符号。因此,对于聚合,点代表变量/列活动,因此如果我有两列,我可能不会使用点,而是执行活动+生存~Sex+基因型
?不客气,很高兴知道这对你有帮助。本着学习的精神,我建议你尝试键入的内容,作为提示,我将发布int到?aggregate
中的示例,尤其是公式规范中带有cbind
的示例。此时它将开始变得混乱,您未来的自己/他人将被抛在脑后,因此我建议适应dplyr版本,更清晰的语法有助于更好的可读性
data7$group=paste(data7$Sex,data7$Genotype,sep="_")
tapply(data7$Activity,data7$group,sd)