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

一般的析因设计

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

二因子析因设计的结果可以推广至一般情况,其中因子A有a个水平,因子B有b个水平,因子C有c个水平,等等,这些因子安排在一个析因实验中。一般说来,当有完全实验的n次重复时,将有abc···n个总的观测值。当所有可能的交互作用包括在模型之内时,为了确定误差平方和,必须至少进行两次重复(n≥2)。

如果实验的所有因子都是固定的,则容易给出计算公式并检验关于主效应和交互作用的假设。对固定效应模型说来,主效应和交互作用的检验统计量都可以将相应的主效应或交互作用的均方除以误差均方而得。所有这些F检验都是上尾部的、单边的检验,任一主效应的自由度是因子的水平数减1,交互作用的自由度是和交互作用有关的各个成分的自由度的乘积。

例如,考虑三因子方差分析模型,设A,B,C是固定的,方差分析表如表5.12所示,关于主效应和交互作用的F检验可直接由期望均方得出。

通常,利用统计软件包计算方差分析,然而,偶尔手工计算平方和的公式也是有用的。总平方和由通常的办法得出:

主效应的平方和由因子A,B,C的总和yi…,y,j..,y..k,求得如下。

计算二因子交互作用的平方和,要用到A×B,A×C,B×C单元的总和。要计算这些量,通常借助于把原始数据表压缩为三个双向表。由下式得出这些平方和:

二因子小计的平方和从每个双向表的总和中得出。三因子交互作用的平方和由三项单元总和{yijk}算得为

误差平方和可以从总平方和减去每个主效应以及交互作用的平方和而得到,或者用

例5.3软饮料的灌装问题

一位软饮料灌装员成兴趣的问题是,在他的生产线上生产的瓶装饮料有更为一致的灌装高度。灌注机械从理论上说能以正确的标准高度来灌注每只饮料瓶,但实际上,围绕这一目标是有偏差的,灌装员希望更好地了解这种变异性的来源进而减小这种偏差。

在进行灌注时,生产线上的工程师能够控制3个变量:碳酸百分率(A),灌注器的操作压强(B),每分钟生产的瓶数或流水线速度(C)。压强和速度易于控制,但是在实际生产时,碳酸百分率却较难于控制,因为它随产品温度的变化而变化。不过,为了实验,工程师可以在3个水平上控制碳酸:10%,12%以及14%。他选取两种压强水平(20psi与30psi)和两种流水线速度水平(200bpm与250bpm)。他决定在这三因子的析因设计中做两次重复,所有24个试验的顺序是随机选取的。观测到的响应变量是相对于目标灌注高度的平均偏差,它是在每一组条件下生产瓶装饮料时观测到的。从这一实验中所得的数据如表5.13所示。正偏差表示灌注高度在目标之上,负篇差表示灌注高度在目标之下,表5.13中圆圈内的数是三向单元总和ijk。

由(5.27)式得出总校正平方和为

由(5.28)式、(5.20)式与(5.30)式算得主效应的平方和是

  

要计算二因子交互作用的平方和,必须求出双向单元的总和。例如,为了求碳酸-压强即AB的交互作用,需要表5.13中A×B的单元总和{yij..}。用(5.31)式,求得平方和为

碳酸-速度即AC的交互作用由表5.13所示的A×C的单元总和{yi.k.}以及(5.32)式求得

碳酸-速度即AC的交互作用由表5.13所示的A×C的单元总和{y.jk.}以及(5.32)式求得

压强-速度即BC的交互作用由表5.13的B×C的单元总和{yijk.}以及(5.33)式求得:

三因子交互作用的平方和由A×B×C的单元总和{yijk.}求得,那是表5.13中用圆圈圈起来的数。由(5.34a)式,得

最后,注意到

我们有

方差分析概括在表5.14中。碳酸百分率、操作压强、流水线速度都显著影响灌注量。碳酸-压强交互作用的F比的p值为0.0558,这表明这两个因子之间有弱的交互作用。

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

x1 = [25,25,30,30,25,25,30,30,25,25,30,30,25,25,30,30,25,25,30,30,25,25,30,30]

x2 = [200,250,200,250,200,250,200,250,200,250,200,250,200,250,200,250,200,250,200,250,200,250,200,250]

x3 = [10,10,10,10,10,10,10,10,12,12,12,12,12,12,12,12,14,14,14,14,14,14,14,14]

y = [-3,-1,-1,1,-1,0,0,1,0,2,2,6,1,1,3,5,5,7,7,10,4,6,9,11]

data = {"y":y,"x1":x1,"x2":x2,"x3":x3}

data=pd.DataFrame(data)

#d = pd.read_csv("G:/WORK/5-1.txt", sep="\t")

model =smf. ols('data.y ~ C(data.x1)*C(data.x2)*C(data.x3) ', data=data).fit()

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

anova_table

>>> anova_table

                                      sum_sq    df           F        PR(>F)

C(data.x1)                         45.375000     1.0     64.058824   3.742257e-06

C(data.x2)                         22.041667     1.0     31.117647   1.202174e-04

C(data.x3)                         252.750000    2.0     178.411765  1.186249e-09

C(data.x1):C(data.x2)                1.041667      1.0     1.470588    2.485867e-01

C(data.x1):C(data.x3)                5.250000      2.0     3.705882    5.580812e-02

C(data.x2):C(data.x3)                0.583333      2.0     0.411765    6.714939e-01

C(data.x1):C(data.x2):C(data.x3)       1.083333      2.0     0.764706     4.868711e-01

Residual                            8.500000    12.0         NaN           NaN

model =smf. ols('data.y ~ data.x1*data.x2*data.x3 ', data=data).fit()

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

anova_table

http://www.xdnf.cn/news/461935.html

相关文章:

  • 探索Turn.js:打造惊艳的3D翻页效果
  • 2025年,如何制作并部署一个完整的个人博客网站
  • 让三个线程(t1、t2、t3)按顺序依次打印 A、B、C
  • 网站漏洞存在哪些危害,该如何做好预防?
  • Java中的深拷贝与浅拷贝
  • Blender 入门教程(三):骨骼绑定
  • 三目云台20倍变焦智能监控技术
  • 基于Arduino的迷你掌上游戏机
  • TCP(传输控制协议)建立连接的过程
  • 黑马k8s(七)
  • 用户安全架构设计
  • Unity碰撞检测:射线与胶囊体投射/Layer(层)、LayerMask(遮罩层)
  • 分布式AI推理的成功之道
  • How to configure Linux mint desktop
  • SpringBoot核心优势与适用场景分析
  • 【SPIN】PROMELA语言编程入门基础语法(SPIN学习系列--1)
  • FramePack - 开源 AI 视频生成工具
  • 基于Vue3制作一个可以拖拽排列的卡片,支持nuxt3
  • LeRobot 框架的核心架构概念和组件(下)
  • JAVA:ResponseBodyEmitter 实现异步流式推送的技术指南
  • 兼顾长、短视频任务的无人机具身理解!AirVista-II:面向动态场景语义理解的无人机具身智能体系统
  • 大数据架构选型全景指南:核心架构对比与实战案例 解析
  • 交叉编译JsonCpp
  • go-zero(十八)结合Elasticsearch实现高效数据检索
  • Open CASCADE学习|容器及其使用
  • 2023CCPC河南省赛暨河南邀请赛个人补题ABEFGHK
  • C++篇——多态
  • Uniapp中小程序调用腾讯地图(获取定位地址)
  • C.纸上文字
  • 普通IT的股票交易成长史--20250515复盘