单因子实验 方差分析
本文是实验设计与分析(第6版,Montgomery著傅珏生译)第3章单因子实验 方差分析python解决方案。本文尽量避免重复书中的理论,着于提供python解决方案,并与原书的运算结果进行对比。您可以从 下载实验设计与分析(第6版,Montgomery著傅珏生译)电子版。本文假定您已具备python基础,如果您还没有python的基础,可以从
下载相关资料进行学习。
3.1一个例子
在集成电路的许多生产步骤中,晶片被一层材料(如二氧化硅或某种金属)完全覆盖。通过对掩模的蚀刻有选择性地除去不需要的材料,从而创建电路模板、电互连以及必须扩散的或者金属沉积的区域。等离子蚀刻工序在这个操作中被广泛使用,特别是在几何对象比较小的情况下的应用。图3.1展示了一种典型的单晶片蚀刻设备的重要特征。射频(RF)发生器提供能源,使得电极之间的间隙产生等离子。等离子体的化学种类是由所使用的特定气体决定的。碳氟化合物,
比如CF4(四氟甲烷)或C2F6(六氟乙烷),通常被用在等离子蚀刻上。但是根据应用情况的不同,也常使用其他的气体或混合气体.
工程师要研究这套设备的RF功率设置与蚀刻率间的关系。实验目的是建立蚀刻率与RF功率之间关系的模型,以确定达到所需的目标蚀刻率的功率设置。她选定了气体(C2F。)和间限(0.80cm),想检验RF功率的4个水平:160W,180W,200W和220W.她决定在RF功率的每个水平上检验5个晶片。
这是一个因子水平a=4和重复n=5的单因子实验。这20个试验都是按照随机次序进行的。一种生成随机次序的更高效方法是将20个试验输入电子表格(Excel),用Rand()函数产生一列随机数,以此排序。
假设从这个过程中获得的试验次序是
为防止未知讨厌变量的影响,随机化试验次序是必要的。因为实验中讨厌变量的变化也许会超出控制范围,从而损害实验结果。为了说明这一点,假定我们按原始的非随机化次序做20个晶片试验(也就是,前5个功率用160W,接下来的5个功率用180W,依次类推)。如果蚀刻设备有热身效应,则运行越长,观测的蚀刻率读数就越低,热身效应将潜在地损害数据,从而破坏实验的有效性。
假定工程师按照我们确定的随机次序进行试验.得到的蚀刻率的观测值如表3.1所示
用图示方法来检查实验数据的想法也很好.图3.2(盒图)展示了RF功率的每个水平的蚀刻率,图3.2b是蚀刻率关于RF功率的散点留.两类图都表明蚀刻率随着功率设置的增加而增加,但没有明显证据表明蚀刻率相对于均值的变异性依赖于功率设置.基于这个简单的图形分析,我们猜想:(1)F功率设置影响蚀刻率;(2)功率设置提高时,蚀刻率增加。
假定想更客观地分析这些数据。特别地,假定希望检验在RF功率的所有α=4水平下蚀刻率均值间的差异。于是,我们想要检验所有的4个均值是否都相等,粗看起来,这个问题可以用所有6个可能的配对比较的t检验来解决。但是,这并不是解决这个问题的最好方法。首先,做6个t检验效率很低,事倍功半。第二,这些配对比较的执行增大了第一类误差。假定4个均值都相等,如果我们选择a=0.05,则在每一单个比较上作出正确决策的概率是0.95.但是,所有6个比较都是正确决策的概率就远远小于0.95,所以,第一类错误被增大了。
方差分析是检验若干个均值相等的比较好的方法。不过,方差分析的用途比解决上述问题要更为广泛得多。它可能是在统计推断领域中最有用的方法。
# 将以下数据保存为anovaoneway.txt
A B C D
575 565 600 725
542 593 651 700
530 590 610 715
539 579 637 685
570 610 629 710
#以下为p.50/56/57 表3.1 图3.2(b)pyhthon代码,与"anovaoneway.txt"放在同一目录下
import pandas as pd
# load data file
df = pd.read_csv("anovaoneway.txt", sep="\t")
>>> df
A B C D
0 575 565 600 725
1 542 593 651 700
2 530 590 610 715
3 539 579 637 685
4 570 610 629 710
# reshape the d dataframe suitable for statsmodels package
df_melt = pd.melt(df.reset_index(), id_vars=['index'], value_vars=['A', 'B', 'C', 'D'])
# replace column names
df_melt.columns = ['index', 'treatments', 'value']
# generate a boxplot to see the data distribution by treatments. Using boxplot, we can
# easily detect the differences between different treatments
>>> df['A'].mean()
551.2
>>> df['B'].mean()
587.4
>>> df['C'].mean()
625.4
>>> df['D'].mean()
707.0
>>> df.mean()
A 551.2
B 587.4
C 625.4
D 707.0
dtype: float64
import matplotlib.pyplot as plt
import seaborn as sns
ax = sns.boxplot(x='treatments', y='value', data=df_melt, color='#99c2a2')
ax = sns.swarmplot(x="treatments", y="value", data=df_melt, color='#7d0013')
plt.show()
3.2 方差分析(略,本部分为理论内容,见原书)
3.3固定效应模型的分析
3.3.1总平方和的分解(略,本部分为理论内容,见原书)
3.3.2统计分析
例3,1晶片蚀刻实验
为说明方差分析方法,我们回到3.1节讨论过的例子。开发工程师要确定RF功率设置是否影响蚀刻率,她进行了RF功率有4个水平和5次重复的完全随机化实验。为方便起见,此处重复表3.1的数据如下
我们用方差分析检验原假设H0:μ1=μ2=μ3=μ4与备择假设H1:部分均值不等。用(3.8)式、(3.9)式和(3.10)式计算所需的平方和如下:
通常,这些计算是通过使用具有分析从已设计的实验中获得的数据的能力的软件包在计算机上进行的。
方差分析概括在表3.4中。RF功率或处理间的均方值(22290.18)是处理内部或误差均方值(333.70)的好几倍。这表明处理均值都相等是不大可能的。形式上,计算F的比值F0=22290.18/333.70=66.80,并与分布F3,16合适的上尾百分点比较。假定实验者选择a=0.05,从附表VI我们发现F0.05.3,16=3.24,因为F0=66.80>3.24,所以我们拒绝H0,并得出处里均值不相同的结论。也就是说,RF功率的设置对平均蚀刻率有显著影响。我们还可以计算检验统计量的P值。图3,3给出了检验统计量F0的参考分布(F3,16)。显然,本例中P值非常小。因为F0.01,3.16=5.29且F0>5.29,所以可以得出结论:P值的一个上界为0.01,即P<0.01(精确P值为P=2.88×10-9)。
import scipy.stats as stats
# stats f_oneway functions takes the groups as input and returns ANOVA F and p value
fvalue, pvalue = stats.f_oneway(df['A'], df['B'], df['C'], df['D'])
print(fvalue, pvalue)
>>> print(fvalue, pvalue)
66.79707321945864 2.882865908493267e-09
# get ANOVA table as R like output
import statsmodels.api as sm
from statsmodels.formula.api import ols
# Ordinary Least Squares (OLS) model
model = ols('value ~ C(treatments)', data=df_melt).fit()
anova_table = sm.stats.anova_lm(model, typ=2)
anova_table
>>> anova_table
sum_sq df F PR(>F)
C(treatments) 66870.55 3.0 66.797073 2.882866e-09
Residual 5339.20 16.0 NaN NaN
相关文章:

单因子实验 方差分析
本文是实验设计与分析(第6版,Montgomery著傅珏生译)第3章单因子实验 方差分析python解决方案。本文尽量避免重复书中的理论,着于提供python解决方案,并与原书的运算结果进行对比。您可以从 下载实验设计与分析(第6版&a…...
一、ArkTS语法学习
一、ArkTS语法学习 1 ArkTS语法简介2 声明2.1 变量声明2.2 常量声明2.3 自动类型推断 3 类型3.1 基本类型和引用类型3.2 基本数据类型3.2.1 number类型3.2.2 boolean类型3.2.3 string类型3.2.4 void类型 3.3 引用类型3.3.1 Object类型3.3.2 arry类型3.3.3 enum类型3.3.4 Union类…...
MySQL 1366 - Incorrect string value:错误
MySQL 1366 - Incorrect string value:错误 错误如何发生发生原因: 解决方法第一种尝试第二种尝试 错误 如何发生 在给MySQL添加数据的时候发生了下面的错误 insert into sys_dept values(100, 0, 0, 若依科技, 0, 若依, 15888888888, ryqq.com, 0,…...

Bitacora:基因组组件中基因家族识别和注释的综合工具
软件教程 | Bitacora:基因组组件中基因家族识别和注释的综合工具 https://zhangzl96.github.io/tags#生物信息工具) 📅 官方地址:https://github.com/molevol-ub/bitacora 🔬 教程版本:BITACORA 1.4 📋 …...

【WebRTC-13】是在哪,什么时候,创建编解码器?
Android-RTC系列软重启,改变以往细读源代码的方式 改为 带上实际问题分析代码。增加实用性,方便形成肌肉记忆。同时不分种类、不分难易程度,在线征集问题切入点。 问题:编解码器的关键实体类是什么?在哪里&什么时候…...

青少年编程与数学 02-019 Rust 编程基础 01课题、环境准备
青少年编程与数学 02-019 Rust 编程基础 01课题、环境准备 一、Rust核心特性应用场景开发工具社区与生态 二、Rust 和 Python 比较1. **内存安全与并发编程**2. **性能**3. **零成本抽象**4. **跨平台支持**5. **社区与生态系统**6. **错误处理**7. **安全性**适用场景总结 三、…...

Redis持久化存储介质评估:NFS与Ceph的适用性分析
#作者:朱雷 文章目录 一、背景二、Redis持久化的必要性与影响1. 持久化的必要性2. 性能与稳定性问题 三、NFS作为持久化存储介质的问题1. 性能瓶颈2. 数据一致性问题3. 存储服务单点故障4. 高延迟影响持久化效率.5. 吞吐量瓶颈 四、Ceph作为持久化存储介质的问题1.…...

Ceph 原理与集群配置
一、Ceph 工作原理 1.1.为什么学习 Ceph? 在学习了 NFS 存储之后,我们仍然需要学习 Ceph 存储。这主要是因为不同的存储系统适用于不同的场景,NFS 虽然有其适用之处,但也存在一定的局限性。而 Ceph 能够满足现代分布式、大规模、…...
MYSQL中的RR隔离级别实现原理,它是如何解决不可重复读
在数据库管理系统中,RR(Repeatable Read)隔离级别是为了保证在一个事务执行期间,多次读取同一数据时,所读取的数据值始终保持一致,从而避免了不可重复读的问题。不可重复读的问题指的是,在同一个…...
Linux的web服务器的部署和优化
http中访问请求中I/O结构 在HTTP协议中,I/O(输入/输出)结构主要涉及客户端与服务器之间的请求和响应交互。以下是HTTP请求和响应的基本结构及其关键组成部分: HTTP请求结构 HTTP请求由请求行、请求头和请求体三部分组成 请求行…...

天线的PCB设计
目录 天线模块设计的重要性 天线模块的PCB设计 天线模块设计的重要性 当智能手表突然断连、无人机信号飘忽不定——你可能正在经历一场来自天线模块的"无声抗议"。这个隐藏在电子设备深处的关键组件,就像数字世界的隐形信使,用毫米级的精密结…...

C++笔记-set和map的使用(包含multiset和multimap的讲解)
1.序列式容器和关联式容器 前面我们已经接触过STL中的部分容器如:string、vector、list、deque、array、forward_list等,这些容器统称为序列式容器,因为逻辑结构为线性序列的数据结构,两个位置存储的值之间一般没有紧密的关联关系࿰…...
宝蓝德中间件部署war包时,配置的绝对路径读取错误。
文章目录 问题场景解决办法宝蓝德是什么??一、基础环境与依赖配置二、自动化部署工具链三、高可用性与集群配置四、安全与合规性措施五、产品线差异化部署六、典型部署流程示例七、运维与优化 原因1. 明确“当前工作目录”与“绝对路径”的关系2. 问题根…...

Linux `ifconfig` 指令深度解析与替代方案指南
Linux `ifconfig` 指令深度解析与替代方案指南 一、核心功能与现状1. 基础作用2. 版本适配二、基础语法与常用操作1. 标准语法2. 常用操作速查显示所有接口信息启用/禁用接口配置IPv4地址修改MAC地址(临时)三、高级配置技巧1. 虚拟接口创建2. MTU调整3. 多播配置4. ARP控制四…...

Python pandas 向excel追加数据,不覆盖之前的数据
最近突然看了一下pandas向excel追加数据的方法,发现有很多人出了一些馊主意; 比如用concat,append等方法,这种方法的会先将旧数据df_1读取到内存,再把新数据df_2与旧的合并,形成df_new,再覆盖写入,消耗和速…...

【金仓数据库征文】政府项目数据库迁移:从MySQL 5.7到KingbaseES的蜕变之路
摘要:本文详细阐述了政府项目中将 MySQL 5.7 数据库迁移至 KingbaseES 的全过程,涵盖迁移前的环境评估、数据梳理和工具准备,迁移实战中的数据源与目标库连接配置、迁移任务详细设定、执行迁移与过程监控,以及迁移后的质量验证、系…...

Go语言——goflow工作流使用
一、引入依赖 这个很坑,他不允许连接带密码的redis,只能使用不带密码的redis,要带密码的话得自己改一下源代码,无语 go get github.com/s8sg/goflow二、画出我们的工作流程 三、编写代码 package mainimport ("encoding/j…...

yarn npm pnpm
1 下载方式 npm 之前串行下载 现在并行下载 yarn 并行下载 加入缓存复用 pnpm 硬连接 避免重复下载,先检查本地是否存在,存在的话直接连接过去...

Block Styler——字符串控件
字符串控件的应用 参考官方帮助案例:(这个方式感觉更好,第二种方式也可以)E:\NX1980\UGOPEN\SampleNXOpenApplications\C\BlockStyler\ColoredBlock 普通格式: 读取: //方法一 string0->GetProperti…...

LangGraph(三)——添加记忆
目录 1. 创建MemorySaver检查指针2. 构建并编译Graph3. 与聊天机器人互动4. 问一个后续问题5. 检查State参考 1. 创建MemorySaver检查指针 创建MemorySaver检查指针: from langgraph.checkpoint.memory import MemorySavermemory MemorySaver()这是位于内存中的检…...

【无标题】I/O复用(epoll)三者区别▲
一、SOCKET-IO复用技术 定义:SOCKET - IO复用技术是一种高效处理多个套接字(socket)的手段,能让单个线程同时监听多个文件描述符(如套接字)上的I/O事件(像可读、可写、异常)&#x…...
通俗的理解MFC消息机制
1. 消息是什么? 想象你家的门铃响了(比如有人按门铃、敲门、或者有快递),这些都是“消息”。 在 MFC 中,消息就是系统或用户触发的各种事件,比如鼠标点击(WM_LBUTTONDOWN)、键盘输入…...

ClassLoader类加载机制的核心引擎
ClassLoader类加载机制的核心引擎 文章目录 ClassLoader类加载机制的核心引擎1. ClassLoader基础1.1 什么是ClassLoader?1.2 ClassLoader的层次结构1.3 类加载的过程 2. 源码解析与工作原理2.1 ClassLoader的核心方法2.2 双亲委派模型的工作原理2.3 打破双亲委派模型…...

tryhackme——Enumerating Active Directory
文章目录 一、凭据注入1.1 RUNAS1.2 SYSVOL1.3 IP和主机名 二、通过Microsoft Management Console枚举AD三、通过命令行net命令枚举四、通过powershell枚举 一、凭据注入 1.1 RUNAS 当获得AD凭证<用户名>:<密码>但无法登录域内机器时,runas.exe可帮助…...

【Linux学习笔记】系统文件IO之重定向原理分析
【Linux学习笔记】系统文件IO之重定向原理分析 🔥个人主页:大白的编程日记 🔥专栏:Linux学习笔记 文章目录 【Linux学习笔记】系统文件IO之重定向原理分析前言一. 系统文件I/01.1 一种传递标志位的方法1.2 hello.c写文件:1.3 he…...
【新教程】Linux服务器ssh启用两步验证
1 背景 服务器被恶意破解的事件层出不穷,一旦被破解就比较麻烦。不如提前通过简单的措施——增加两步验证,来大大增强服务器的安全性。本教程在Debian 12.5、Ubuntu 24.04等系统上测试通过。 2 详细过程 1、安装 libpam-google-authenticator sudo a…...

SpringBoot中使用MCP和通义千问来处理和分析数据-连接本地数据库并生成实体类
文章目录 前言一、正文1.1 项目结构1.2 项目环境1.3 完整代码1.3.1 spring-mcp-demo的pom文件1.3.2 generate-code-server的pom文件1.3.3 ChatClientConfig1.3.4 FileTemplateConfig1.3.5 ServiceProviderConfig1.3.6 GenerateCodeController1.3.7 Columns1.3.8 Tables1.3.9 Fi…...

实现滑动选择器从离散型的数组中选择
1.使用原生的input 详细代码如下: <template><div class"slider-container"><!-- 滑动条 --><inputtype"range"v-model.number"sliderIndex":min"0":max"customValues.length - 1"step&qu…...

基于Credit的流量控制
流量控制(Flow Control),也叫流控,它是控制组件之间发送和接收信息的过程。在总线中,流控的基本单位称为flit。 在标准同步接口中(比如AXI协议接口),握手信号如果直接采用寄存器打拍的方式容易导致信号在不同的方向上出现偏离。因…...

【金仓数据库征文】金仓数据库KingbaseES: 技术优势与实践指南(包含安装)
目录 前言 引言 一 : 关于KingbaseES,他有那些优势呢? 核心特性 典型应用场景 政务信息化 金融核心系统: 能源通信行业: 企业级信息系统: 二: 下载安装KingbaseES 三:目录一览表: 四:常用SQL语句 创建表: 修改表结构…...