当前位置: 首页 > news >正文

二水平设计的单次重复

本文是实验设计与分析(第6版,Montgomery著傅珏生译)第6章2k析因设计第6.5的python解决方案。本文尽量避免重复书中的理论,着于提供python解决方案,并与原书的运算结果进行对比。您可以从Detail 下载实验设计与分析(第6版,Montgomery著傅珏生译)电子版。本文假定您已具备python基础,如果您还没有python的基础,可以从Detail 下载相关资料进行学习。

即使是对于中等大小的因子个数,2k析因设计的处理组合的总数也是很大的。例如,25设计有32个处理组合,26设计有64个处理组合等。因为资源通常受限,实验者能做的重复次数也就受到限制。通常可用的资源只允许对设计做一次重复,除非实验者愿意消去某些原来的因子。

每个试验组合仅进行一次实验的风险是,我们可能拟合了含噪声的模型。即,若响应y变化程度大,这可能会误导从实验中得到的结论。如图6.9a所示。该图中,直线代表真实的因子效应。但是,由于出现在响应变量(用阴影带表示)中的随机变异性,实验者得到了用照圆点表示的两个测量到的响应。于是,因子效应的估计接近于零。结果,实验者得到了关于该因子的错误结论。如果响应的变化程度较小,错误结论的可能性也会较小,另一种确保得到可靠的效应估计的方法是增加低(-)水平和高(+)水平因子间的距离,如图6.9b所示。该图中,低因子水平和高因子水平间的增加了的距离得到了真实因子效应的合理估计。

一次重复策略通常用于有相对多的需考虑因子的筛选实验。因为,我们在不能完全确信实验误差小的情形下,采取尽量拉开因子水平是一个好的做法,重读第1章中选择因子水平的指南,也许会有帮助

2k设计的单次重复有时称为无重复的析因设计,因为仅有一次重复,所以没有误差的内在估计(即“纯误差”)。无重复析因设计的一种分析法是,假定某些高阶的交互作用可被忽略,并将它们的均方组合起来用于估计误差.这要借助于效应稀疏原理(sparsity of effect principle),也就是,很多系统的一些主效应和低阶的交互作用处于支配地位,而很多高阶交互作用可被忽路。

    当分析无重复析因设计的数据时,有时出现真正的高阶交互作用。此时,将高阶交互作用集中起来作为误差均方使用是不恰当的。Daniel(1959)提出的分析方法是克服这一困难的简便途径。Daniel建议,检查效应估计量的正态概率图。可被忽略的效应是正态分布的,其均值为零方差为σ2,因此会大致落在图上的一条直线附近;而显著效应有非零均值因此不会落在这一直线上。因此,基于正态概率图,初始模型必须指定包含那些显显不为零的效应。显然可以将忽略的效应组合成误差的估计。

例6.2  24设计的单次重复

一种化学产品是在压力容器中生产的。在一个小规模的试验性工厂中进行一项析因实验,用以研究可能会影响这种产品浅透率的因子,4个因子是温度(A)、压强(B),甲醛浓度(C)和搅拌速度(D)。每一因子取两个水平,

24试验的单次重复所得的数据如:表6.10和图6.10所示。依随机次序进行16次试验。工程师感兴趣的是使渗透率达到最大。在当前的生产条件下,产品的渗透率钓为75gal/h(加仑/小时)。当前生产用的甲醛浓度,即因子C,为高水平。工程师希望尽可能减少甲醛浓度,们一直未能做到这一点,因为这总

是造成渗透率太低

     开始分析这些数据时,先将效应估计量画在正态概率纸上。24设计的对照常数的加号和减号表如表6.11所示。由这些对照,可以估计15个因子效应以及平方和,如表6.12所示。

这些效应的正态概率图如图611所示。沿直线上的所有效应可被忽路,而大的效应则远离此直线。此分析显露出的重要效应是主效应A,C,D以及AC交互作用和AD交互作用,

图6.12a画出了主效应A,C,D的图形。所有这3个效应都是正的,如果我们只考虑这些主效应,就可以将此3个效应以高水平来实验以使渗透率最大化。不过,还需考察任一重要的交互作用。我们知道,凡被显著的交互作用牵涉到的主效应,都没有多大的意义。

图6.12b画出了AC交互作用和AD交互作用的图形。这些交互作用是求解问题的关健。由AC交互作用看出,当浓度处于高水平时温度效应很小,当浓度处于低水平时温度效应很大,在低浓度,高温度时得到最好的结果。AD交互作用显示出,低祖时搅拌速度D的效应小,但高温时搅拌速度D有大的正的效应。因此,当A和D处于高水平而C处于低水平时,会得到最好的渗透率,这就允许将甲醛浓度减小至低水平,这是实验者的另一个目的

import numpy as np

import matplotlib.pyplot as plt

import statsmodels.formula.api as smf

import pandas as pd

import statsmodels.api as sm

from sklearn import linear_model

import seaborn as sns

import matplotlib.pyplot as plt

import mistat

from scipy import special

from scipy.stats import ncx2

x1 = [-1,1,-1,1,-1,1,-1,1,-1,1,-1,1,-1,1,-1,1]

x2 = [-1,-1,1,1,-1,-1,1,1,-1,-1,1,1,-1,-1,1,1]

x3 = [-1,-1,-1,-1,1,1,1,1,-1,-1,-1,-1,1,1,1,1]

x4=  [-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,1,1,1,1]

y1 = [45,71,48,65,68,60,80,65,43,100,45,104,75,86,70,96]

data = {"y1":y1,"x1":x1,"x2":x2,"x3":x3,"x4":x4}

data=pd.DataFrame(data)

model1 = smf.ols(formula='data.y1 ~ data.x1*data.x2*data.x3*data.x4', data=data).fit()

print(model1.summary2())

#这个时候如果进行方差分析是得不到结果的

anova_table = sm.stats.anova_lm(model1, typ=2)

anova_table

#会出现如下错误提示:ValueError: array must not contain infs or NaNs

#下面改变模型

model1 = smf.ols(formula='data.y1 ~ data.x1+data.x2+data.x3+data.x4+data.x1*data.x2+data.x1*data.x3+data.x1*data.x4+data.x2*data.x3+data.x2*data.x4+data.x3*data.x4+data.x1*data.x2*data.x3+data.x1*data.x2*data.x4+data.x1*data.x3*data.x4+data.x2*data.x3*data.x4', data=data).fit()

print(model1.summary2())

anova_table = sm.stats.anova_lm(model1, typ=2)

anova_table

>>> anova_table

                            sum_sq   df           F    PR(>F)

data.x1                  1870.5625  1.0  247.347107  0.040424

data.x2                    39.0625  1.0    5.165289  0.263883

data.x3                   390.0625  1.0   51.578512  0.088077

data.x4                   855.5625  1.0  113.132231  0.059678

data.x1:data.x2             0.0625  1.0    0.008264  0.942284

data.x1:data.x3          1314.0625  1.0  173.760331  0.048203

data.x1:data.x4          1105.5625  1.0  146.190083  0.052533

data.x2:data.x3            22.5625  1.0    2.983471  0.334095

data.x2:data.x4             0.5625  1.0    0.074380  0.830499

data.x3:data.x4             5.0625  1.0    0.669421  0.563451

data.x1:data.x2:data.x3    14.0625  1.0    1.859504  0.402820

data.x1:data.x2:data.x4    68.0625  1.0    9.000000  0.204833

data.x1:data.x3:data.x4    10.5625  1.0    1.396694  0.447071

data.x2:data.x3:data.x4    27.5625  1.0    3.644628  0.307178

Residual                    7.5625  1.0         NaN       NaN

1.设计投影

图6.11中的效应可以有另外的解释方式。因为B(压强)不显著且涉及B的所有交互作用可被忽略,所以可以在实验中放弃B使得设计变为A,C,D的有两次重复的23析因设计。考察表6.10中的列A,C,D,容易看出这些列形成有两次重复的23设计。使用这一简化假定,对数据进行的方差分析概括在表6.13中。由此分析所得的结论与由例6,2所得的结论本质上相同。注意,使用将24单次重复投影到有重复的23中去的方法,可以得到ACD交互作用的估计量以及建立在所谓的隐藏重复(hidden replication)基础上的误差估计量。

将无重复的析因设计投影到因子较少的有重复的析因设计中去这一概念非常有用。一般说来,如果有一个2k设计的单次重复,且其中的h(h<k)个因子可被忽略因而可被丢失,则原先的数据对应于留下来的k一h个因子的具有2h次重复的二水平析因设计。

import numpy as np

import matplotlib.pyplot as plt

import statsmodels.formula.api as smf

import pandas as pd

import statsmodels.api as sm

from sklearn import linear_model

import seaborn as sns

import matplotlib.pyplot as plt

import mistat

from scipy import special

from scipy.stats import ncx2

x1 = [-1,1,-1,1,-1,1,-1,1,-1,1,-1,1,-1,1,-1,1]

x2 = [-1,-1,1,1,-1,-1,1,1,-1,-1,1,1,-1,-1,1,1]

x3 = [-1,-1,-1,-1,1,1,1,1,-1,-1,-1,-1,1,1,1,1]

x4=  [-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,1,1,1,1]

y1 = [45,71,48,65,68,60,80,65,43,100,45,104,75,86,70,96]

data = {"y1":y1,"x1":x1,"x2":x2,"x3":x3,"x4":x4}

data=pd.DataFrame(data)

model1 = smf.ols(formula='data.y1 ~ data.x1+data.x3+data.x4+data.x1*data.x3+data.x1*data.x4+data.x3*data.x4+data.x1*data.x3*data.x4', data=data).fit()

print(model1.summary2())

anova_table = sm.stats.anova_lm(model1, typ=2)

anova_table

>>> anova_table

                            sum_sq   df          F    PR(>F)

data.x1                  1870.5625  1.0  83.367688  0.000017

data.x3                   390.0625  1.0  17.384401  0.003124

data.x4                   855.5625  1.0  38.130919  0.000267

data.x1:data.x3          1314.0625  1.0  58.565460  0.000060

data.x1:data.x4          1105.5625  1.0  49.272981  0.000110

data.x3:data.x4             5.0625  1.0   0.225627  0.647483

data.x1:data.x3:data.x4    10.5625  1.0   0.470752  0.512032

Residual                  179.5000  8.0        NaN       NaN

相关文章:

  • 阳台光伏+储能:安科瑞智能计量仪表来助力
  • 学习海康VisionMaster之直方图工具
  • uniapp+vue3页面滚动加载数据
  • 现代计算机图形学Games101入门笔记(十四)
  • 电磁兼容性优化设计在汽车电子芯片中的实践
  • 在 VSCode 中运行 Vue.js 项目
  • 动态范围调整(SEF算法实现)
  • 不清楚的点
  • Visual Studio旧版直链
  • “光伏+储能+智能调控”,CET中电技术分布式智能微网方案如何实现?
  • 从技术视角解构 Solana Meme 币生态
  • NanoPcT6 gpio操作
  • redisson基础
  • java 使用zxing生成条形码(可自定义文字位置、边框样式)
  • Pageassist安装(ollama+deepseek-r1)
  • Fura Red AM,Cell Permeant钙离子探针使用说明
  • 消息队列与Kafka基础:从概念到集群部署
  • 顶层设计-IM系统架构
  • 57页PPT|数字化工艺系统建设方案工艺数字化转型传统工艺数字化转型解决方案
  • 深入浅出横向联邦学习、纵向联邦学习、联邦迁移学习
  • 国家统计局公布2024年城镇单位就业人员年平均工资情况
  • 中国恒大披露清盘进展:要求债权人提交债权证明表
  • 青海省交通运输厅副厅长田明有接受审查调查
  • 宜昌谱写新叙事:长江大保护与高质量发展如何相互成就
  • 阿尔巴尼亚执政党连续第四次赢得议会选举,反对党此前雇用特朗普竞选经理
  • 老镇老宅楼:破旧,没产证,要不要更新?