问题描述
我必须分析实验数据集才能找到最有效的分子生物学反应组合。
实验有四个因素:温度、RPM、时间、催化活性。我正在测量反应效率(EE)。如何找到四个因素的有效组合以获得最高效率 (EE)?
- 没有重复测量。所有数据均为独立实验数据
据我所知 - EE 是参数数据,因子是分类数据(固定组合)。 我是否必须进行 Fourway 方差分析?
如果是这样,这个模型是否适合分析
library(lsmeans)
lm(EE ~ Temperature + RPM + Time+ Catalytic +
Temperature:RPM +
Temperature:Time +
Temperature:Catalytic +
RPM:Time+
RPM+Catalytic+
Time+Catalytic+
Temperature:RPM:Time +
Temperature:RPM:Catalytic+
Temperature:Time:Catalytic+
RPM:Time:Catalytic+
Temperature:RPM:Time:Catalytic,"data")
然后,我如何获得每个成对比较的显着值?
这是一个示例的示例数据集。
> dput(df)
structure(list(TEMPERATURE = c(40,40,42.5,45,45),RPM = c(150,150,200,200),TIME = c(24,24,48,72,96,96),CAT = c(4,6,8,10,12,4,12),EE = c(50,53,54,57,59,56,61,64,58,60,62,63,52,55,44,50,49,66,46,65,67,51,42,61)),class = c("spec_tbl_df","tbl_df","tbl","data.frame"
),row.names = c(NA,-120L),spec = structure(list(cols = list(
TEMPERATURE = structure(list(),class = c("collector_double","collector")),RPM = structure(list(),TIME = structure(list(),CAT = structure(list(),EE = structure(list(),"collector"))),default = structure(list(),class = c("collector_guess",skip = 1),class = "col_spec"))
解决方法
尝试这样的事情:
library(rsm)
mod = rsm(EE ~ SO(Temperature,RPM,Time,Catalytic),data = data)
summary(mod)
这将拟合二阶曲面(模型方程包括所有预测变量、双向交互和平方)。摘要显示了一个静止点和相关的统计数据。如果所有的特征值都是负的,那么它就是一个峰值。否则你就有了某种鞍点。
该模型与 OP 中的模型不同,因为它没有三向或四向交互作用,但包含预测变量的平方,这对于拟合二阶响应曲面非常重要。
更多细节
我不得不稍微修改一下以说明 R 区分大小写的事实!
> mod = rsm(EE ~ SO(TEMPERATURE,TIME,CAT),data = df)
这里存在一个问题,即 RPM 只有两个值,因此我们无法估计纯二次效应。所以有一个 NA 系数,这会扰乱静止点的计算。但是,我们仍然可以绘制拟合曲面(尽管有一些警告消息)
> par(mfrow = c(2,3))
> contour(mod,~TEMPERATURE+RPM+TIME+CAT)
看起来我们最好选择大的 CAT 和较低的 RPM(见那个图),所以再看看:
> par(mfrow=c(1,1))
> contour(mod,~ TEMPERATURE + TIME,at = list(CAT = 12,RPM = 150))
因此,从视觉上看,我们似乎在温度 43.5、时间 65、催化剂 12 和 rpm 150 附近获得了最佳响应。
如果你坚持将这些建模为因子,是可以做到的,但你需要将所有的预测变量转换为因子。这是一个常见的错误;你可以有一个设计的实验,只有几个不同的定量变量值,但 R 不会读你的想法并假设它是一个因素;你必须把它转换成一个。在下文中,我选择拟合最多具有 2 向交互作用的模型。
> facmod = lm(EE ~ (factor(TEMPERATURE) + factor(TIME) + factor(RPM) + factor(CAT))^2,data = df)
> library(emmeans)
> emmip(facmod,TIME ~ TEMPERATURE | CAT*RPM)
最高拟合响应是在催化剂 12、RPM 150、温度 42.5 或更大、时间 96 时。很明显,150 RPM 更好(左与右比较),高 CAT 更好(垂直比较面板) .这些是不同的模型和有些不同的结果。我更喜欢 rsm 方法,因为它更系统。
,对于筛选 DOE,您收集的数据比所需的多。 这是一个起点,我欢迎补充意见。
我会模拟所有因素的线性组合:
model <-lm(EE ~ TEMPERATURE + RPM + TIME +CAT,data=df)
summary(model)
Call:
lm(formula = EE ~ TEMPERATURE + RPM + TIME + CAT,data = df)
Residuals:
Min 1Q Median 3Q Max
-10.1850 -1.5742 0.3383 1.7767 9.7033
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 51.50833 6.47932 7.950 1.42e-12 ***
TEMPERATURE 0.27000 0.14245 1.895 0.06056 .
RPM -0.10533 0.01163 -9.056 4.10e-15 ***
TIME 0.03639 0.01084 3.358 0.00107 **
CAT 1.20417 0.10281 11.713 < 2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 3.185 on 115 degrees of freedom
Multiple R-squared: 0.6706,Adjusted R-squared: 0.6591
F-statistic: 58.52 on 4 and 115 DF,p-value: < 2.2e-16
查看斜率估计的符号。虽然这个简单的模型假设线性关系,但斜率的物理意义是比较低值的平均值和高值的平均值。 例如,温度项的斜率是正的。这意味着当温度从低值 (40C) 升高到高值 (45C) 时,效率会增加。
温度、时间和 CAT 作为正斜率,我将采用可用的最大值。
RPM 有一个负斜率,所以我会选择可用的最低值。
因此,我从实验中得出的预测将产生 EE=66, 而实验的最高结果是:
df[which.max(df$EE),]
# A tibble: 1 x 5
TEMPERATURE RPM TIME CAT EE
<dbl> <dbl> <dbl> <dbl> <dbl>
1 42.5 150 96 12 67
现在您可以通过查看此模型的结果来研究非线性关系: 致电:
lm(formula = EE ~ TEMPERATURE * RPM * TIME * CAT,data = df)
此处交互项的斜率比线性项小几个数量级。这可能会产生误导,因为变量未标准化。
祝你好运。