C++笔记:两因素试验中的交互作用与方差分析

需积分: 39 7 下载量 122 浏览量 更新于2024-08-19 收藏 1.07MB PPT 举报
交互作用(互作)是C++编程中在多因素实验设计中的一个重要概念。在进行两因素或多因素分析时,它描述了两个或多个因素之间的相互影响,导致它们各自效应的改变。在统计学中,这种现象表现为一个因素的效果在另一个因素的不同水平下有所不同。例如,在C++笔记记录中提到的日粮添加赖氨酸和蛋氨酸对雏鸡增重影响的例子中,A因素(赖氨酸和蛋氨酸的添加)的效应(492g vs 475g)随B因素(不同水平的日粮)的变化而变化,这表明A和B之间存在交互作用,记作A×B。 交互作用可以被理解为简单效应的复合效果。简单效应是指在单个因素固定时,另一个因素不同水平对结果产生的直接影响。在这个例子中,A因素的简单效应可以通过比较A1和A2水平下的结果来计算,即A2-A1=2g。B因素的简单效应是B2-B1=25g。 主效应则是指单一因素自身的变化对平均值的影响,如A因素的主效应为492g - 475g = 17g,B因素的主效应为496g - 471g = 25g。这些主效应可以看作是所有简单效应的平均值。 在实际分析中,如果发现两个因素的交互作用显著,那么在解释实验结果时就不能只考虑单一因素的影响,而需要同时考虑它们的共同作用。例如,互作效应(A1B1+A2B2)的计算可以帮助我们理解在特定的日粮条件下,添加赖氨酸和蛋氨酸的综合影响。 交互作用在C++编程中,特别是在多因素数据分析中,对于准确理解和解释复杂试验结果至关重要。理解和掌握这一概念有助于编写更精确的代码来处理和解析这类实验数据。

解释这段代码cal_correlation<-function(interaction_tab,ex1,ex2,filter){ cat('calculating correlation\n') if (ncol(interaction_tab)==2){ cl = makeCluster(parallel::detectCores() - 1) clusterEvalQ(cl,library(ggm)) clusterEvalQ(cl,library(corpcor)) clusterExport(cl,c("ex1","ex2","interaction_tab"),envir=environment()) corr <- parSapply( cl, 1:nrow(interaction_tab), #whole number of combinations function(i) { xcor=cor(t(ex1[interaction_tab[i,1],]),t(ex2[interaction_tab[i,2],]), method = "pearson") return(xcor) } ) stopCluster(cl) res<-cbind(interaction_tab,corr) res<-res[abs(res[,3])>filter,] return(res) }else if (ncol(interaction_tab)==3){#abandoned cl = makeCluster(parallel::detectCores() - 1) clusterEvalQ(cl,library(ggm)) clusterEvalQ(cl,library(corpcor)) clusterExport(cl,c("ex1","ex2","interaction_tab"),envir=environment()) mydata1 <- parSapply( cl, 1:nrow(interaction_tab), #whole number of combinations function(i) { cox_all=matrix(nrow = 3, ncol = 1) ce1_1= as.character(interaction_tab[i,1]) ce2_1= as.character(interaction_tab[i,2]) miRNA1= as.character(interaction_tab[i,3]) s1<-cbind(t(ex2[ce1_1,]), t(ex2[ce2_1,]), t(ex1[miRNA1,])) xcor=cor(s1,method = "pearson") cox_all[1,1]=xcor[2,1] cox_all[2,1]=xcor[3,1] cox_all[3,1]=xcor[3,2] return(cox_all) } ) stopCluster(cl) scc<-data.frame(mydata1) scc<-t(scc) res<-cbind(interaction_tab,scc) colnames(res)<-c('x','y','miRNA','x_y','mi_x','mi_y') #post process of corr res<-res[res$x_y>filter,]#select triplets with |pcc|>filter res<-res[abs(res$mi_x)>filter & abs(res$mi_y)>filter & (res$mi_y)*(res$mi_x)>0,] return(res) } }

2023-07-13 上传