回复:通过积分计算曲线下面积,然后将结果填充到新列中。尝试检查 JMP 生成的公式看起来如何,它很可能会用 :time 替换您的时间,因此对变量和内部表达式使用与数据表中的列不同的名称(并可能将其包装在 As Constant() 中)
As Constant(
resp = Expr(a * a);
area = Integrate(resp, a, Col Min(:time), Col Max(:time));
)
回复:通过积分计算曲线下面积,然后将结果填充到新列中。如果 Integrate 使用的表达式需要从列中的公式中提取,例如使用多项式拟合中的公式进行 Integrate,该怎么办。
在下表中,预测器列中的公式将使用 :time 和 :response。 有没有一种快速语法可以用新变量替换列名?

回复:通过积分计算曲线下面积,然后将结果填充到新列中。如果您只想将相同的值复制到每一行,我不会使用公式(在大多数情况下,在这种情况下最好使用 << Set Each Value)。
我不确定是否有任何快速语法可以用新变量替换列名,但 char+substitute+parse+expressions 是一种选择
Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(4),
Compress File When Saved(1),
New Column("t", Numeric, "Continuous", Format("Best", 12), Set Values([1, 2, 3, 4])),
New Column("r", Numeric, "Continuous", Format("Best", 12), Formula(:t ^ 2))
);
dt << New Column("i", Numeric, Continuous, << Set Each Value(
f = Eval Expr(Expr(Parse(Substitute(Char(Column(dt, "r") << get formula), ":", ""))));
Integrate(f, t, Col Min(:t), Col Max(:t));
));通过积分计算曲线下面积,然后将结果填充到新列中。在此示例数据表中,响应由公式定义:响应 = 时间*时间
我想通过使用响应列中定义的公式和 :time 列中定义的时间范围进行积分来计算“曲线下面积”(AUC),然后将结果填充到数据表中的新列中(通过“填充“我的意思是所有行都有计算出的 AUC 值)。
我知道我可以使用下面的脚本来计算AUC,面积的结果是41333。
resp = Expr (time * time);
area = Integrate (resp, time, 10, 50);
show (area);
但是,当我尝试填充 AUC 结果时(所有行的值为 41333)在:整合列中通过使用公式:
积分(:响应,:时间,列最大值(:时间),列最小值(:时间))
该公式不是填充结果 41333 ,而是根据每行中 : time 的定义值计算结果。
编写公式以便 :Integrate 列填充结果 41333 的正确方法是什么?
我知道我可以使用 JSL 创建一个新的数据表,然后加入结果,但更愿意在同一个数据表中执行此操作。
谢谢!

自动化和脚本编写