我正在尝试设计一个实验,其中一些因素是有条件的,我不确定这是否可以使用自定义设计正确处理,或者是否应该手动构建设计。
我有一个因子X1 ,其参考值为1 ,这也是最大值。X1 只能在低于此参考值的情况下变化,但有一种情况值得关注,那就是将其保持在参考值。
对于另外两个因素,其结构是有条件的:
-
X2可以设置为关闭或开启。
- 如果关闭,则没有级别/强度。
- 如果开启,则具有连续范围
-
X3可能不存在,也可能存在。
- 如果没有,则没有剂量/强度信息。
- 如果存在,则其范围是连续的。
因此,X2 和 X3 不是简单的连续因子,因为它们的连续值只有在相应的因子处于激活/存在状态时才有意义。
我的目标是了解:
- X2 和/或 X3 存在与否的影响
- 当 X2 和/或 X3 处于激活状态时,改变其水平/强度会产生什么影响?
- 这些效应在 X1 的不同取值下如何表现?
- X1、X2 和 X3 之间是否存在相互作用
我正在考虑的一个方案是将X2和X3视为离散数值因子,其中0表示关闭/缺失,非零值表示激活的连续范围。这样,在分析时,我就可以避免对多项式项进行自动编码/中心化,从而更直接地解释数值水平。
然而,我明白这种方法存在缺陷。特别是,从0跃升到第一个非零级别可能会产生两种影响:
- 开启/呈现该因素的影响
- 降至最低活性强度/剂量所产生的影响
因此,它可能无法将激活/存在效应与强度/剂量效应完全区分开来。这也会使交互项更难解释,尤其是在 X1 取不同值时 X2 和 X3 的行为不同的情况下。
我目前正在尝试的第二种方法是使用类别激活因子和离散数值水平因子来表示 X2 和 X3:
- X2 包含一个分类的开/关因子和一个离散的数值水平因子。
- X3 包含一个分类的缺失/存在因素和一个离散的数值水平因素。
DOE(
Custom Design,
{
Add Response( Maximize, "Y", ., ., . ),
Add Factor( Continuous, -1, 1, "X1_Level", 0 ),
Add Factor( Discrete Numeric, {0, 1, 2, 3}, "X2_Level", 0 ),
Add Factor( Categorical, {"Off", "On"}, "X2_Status", 0 ),
Add Factor( Discrete Numeric, {0, 1, 2, 3}, "X3_Level", 0 ),
Add Factor( Categorical, {"Absent", "Present"}, "X3_Status", 0 ),
Set Random Seed( 2055292721 ),
Number of Starts( 4702 ),
Add Term( {1, 0} ),
Add Term( {1, 1} ),
Add Term( {2, 1} ),
Add Potential Term( {2, 2} ),
Add Term( {3, 1} ),
Add Term( {4, 1} ),
Add Potential Term( {4, 2} ),
Add Term( {5, 1} ),
Add Term( {1, 1}, {2, 1} ),
Add Term( {1, 1}, {4, 1} ),
Add Term( {2, 1}, {4, 1} ),
Set Sample Size( 12 ),
Disallowed Combinations(
("X2_Status"n == "Off" & "X2_Level"n > 0) |
("X2_Status"n == "On" & "X2_Level"n == 0) |
("X3_Status"n == "Absent" & "X3_Level"n > 0) |
("X3_Status"n == "Present" & "X3_Level"n == 0)
),
Simulate Responses( 0 ),
Save X Matrix( 0 ),
Make Design
}
);
我担心分类状态因子可能是多余的,因为数值水平已经隐含了“开启/关闭”或“存在/缺失”的状态。因此,我不确定这种设置是否真的能将激活效应与水平/强度效应区分开来,或者是否会引入共线性/混淆因素,从而使模型难以解释。
我的问题是:
- 同时纳入地位因素和离散数值水平因素在统计学上是否合理?
- 这种设置能否有效地将激活效应与水平/强度效应区分开来?
- Would it be better to use only the discrete numeric factors, with
0 = Off/Absent and 1–3 = active levels?
- 或者,在 JMP 自定义设计中是否有更好的方法来处理这种类型的条件因子结构?
嗨@JunaidM ,
分类因素并非必要,因为 X2 水平为 0 就意味着该因素“关闭”(X3 也是如此)。
因此,在设计中添加这些因素只会造成设计生成过程中的冗余信息(和共线性),并且由于状态因素和水平因素之间的线性依赖性,在建模过程中还会产生奇异细节。
在您分享的设计生成脚本中,可以看到由于这种冗余(以及 X2 和 X2 状态之间的依赖关系),JMP 在设计评估平台中已从模型中删除了因子 Xi_Status,仅保留了离散数值和数值因子项:

所以我还是会选择更直接的设计生成方式。
你设计这个实验的目的是什么?你真的想测试这么多 X2 和 X3 的水平吗?一个只有两个水平(一个低水平:缺失 = 0,一个高水平:存在,例如 3)的筛选/D-最优设计是否足以满足你的需求?或者,使用三个水平来分析二次效应,避免简单的缺失/存在因子水平设置?
如果您确实想要强制执行这些级别,您仍然可以使用以下方式创建您的设计:
- X1 连续因子(从 -1 到 1)
- X2 可以是离散数值型变量,取值为 0、1、2 和 3,也可以是连续型变量,但需要使用合适的模型项来保证足够的水平数。如果您确实需要测试 4 个水平,则在设计中指定 X2 的 5 次方项即可为该因子创建 4 个水平。有关更多信息,请参阅实验设计中的力水平。
- X3 离散数值型变量,取值为 0、1、2 和 3,或者连续型变量,具有适当的模型项,以具有足够多的水平。
如果您想将激活效应与水平/强度效应区分开来,您仍然可以在分析中评估当 X2 = 0 时的平均响应与当 X2 = 1、2 或 3 时的平均响应之间的差异,方法是对这两种条件下的响应进行平均。如果您已经拥有更细致、更详细的响应数据,那么在分析中总结信息就容易得多,因为您可以同时提供两种类型的分析和结果:宏观视图和详细视图。
希望这个回答对您有所帮助。
嗨@Victor_G
感谢您的详细回复,这非常有帮助。
Just to clarify one point: in the script I shared, I had removed the X2_Status and <STRONG>X3_状态</STRONG> terms myself from the model terms because I was already concerned that they may be redundant. But your explanation confirms the concern more clearly: since X2 = 0 already implies OFF and <STRONG>X2 ></STRONG> 0 implies ON, adding a separate status factor would introduce redundant information and potential collinearity.
So, if I understand correctly, the more direct approach (Option 1) does make sense.</CODE></P>
<P>Based on your response, I am also thinking that three discrete numeric levels may be sufficient instead of four. For example, <CODE>0, lowest practical active level, and highest practical active level. This may be more appropriate because the distance between 0 → lowest active level and lowest → highest active level is not the same.
根据您的建议,我认为以下设计结构更合理。我移除了单独的分类状态因子,并将 X2 和 X3 保留为离散数值因子。0表示关闭/缺失状态,非零值表示激活状态。
该模型包括主效应、X1 的二次效应以及选定的双因素交互项:
DOE(
Custom Design,
{Add Response( Maximize, "Y", ., ., . ),
Add Factor( Continuous, -1, 1, "X1", 0 ),
Add Factor( Discrete Numeric, {0, 15, 30}, "X2", 0 ),
Add Factor( Discrete Numeric, {0, 30, 45}, "X3", 0 ),
Set Random Seed( 1139260218 ), Number of Starts( 71985 ), Add Term( {1, 0} ),
Add Term( {1, 1} ), Add Term( {2, 1} ), Add Potential Term( {2, 2} ),
Add Term( {3, 1} ), Add Potential Term( {3, 2} ), Add Term( {1, 2} ),
Add Term( {1, 1}, {2, 1} ), Add Term( {1, 1}, {3, 1} ),
Add Term( {2, 1}, {3, 1} ), Set Sample Size( 12 ), Simulate Responses( 0 ),
Save X Matrix( 0 )}
);
One point I want to check is about model fitting and interpretation. Since
0 for X2 and X3 represents a real OFF/absent condition, and not just a coded low level, I assume I should be careful with automatic coding or centering of polynomial terms. My concern is that centering may make the model coefficients harder to interpret in relation to the actual OFF/absent state. Would you recommend fitting these terms using the actual numeric values, or is there a better coding strategy for this type of factor?
谢谢你的解释。
是的,设置三个水平可能很有意思,因为您可以评估因素存在与否对响应的影响,以及低剂量和高剂量之间响应的变化。由于您使用的是序数因子类型,因此您可能非常适合使用序数因子的默认编码:对于序数因子,因子的第一个水平是对照或基线水平,参数衡量的是序数因子设置为每个后续水平时对响应的影响。序数因子编码适用于包含代表不同剂量水平的因子,其中第一个剂量为零。
多项式项的中心化仅对连续因子进行,对离散数值因子不进行中心化。
关于您生成的设计,我建议您将 JMP 中二次效应的可估计性设置为“必要”,而不是默认的“如果可能”,以便在中间水平(对应于您的最低剂量)进行更多次试验。在总试验次数相同(12 次)的情况下,此选项可以将 X2 的第 15 水平和 X3 的第 30 水平的试验次数从 2 次增加到 3 次。如果您希望强制每个水平的试验次数均衡分配(X2 和 X3 的 3 个水平各 4 次),您可以先创建分类因子类型的设计,然后在设计生成并创建表格后,将因子类型修改为数值有序因子,并添加/修改相关的列属性:编码(包含最小值和最大值)、设计角色(离散数值)和因子更改。
希望这个回答能澄清建模方面的问题。