公式编辑器中的线性回归你好,
我正在临床研究中使用线性回归研究生物变量随时间的斜率。
是否可以使用公式编辑器计算新列中的斜率?或者有其他方法生成这样的列?
我正在使用 JMP 12。
感谢您的帮助,
弗洛朗
回复:公式编辑器中的线性回归以下是计算长度-重量回归斜率的两个列公式示例。使用“大类”示例表。
第一个根据所有观测值计算斜率,并仅在第一行显示它,而不是在整列中重复相同的数字。
第二种方法逐步计算斜率(这可能就是您想要的),并且可以看到随着包含更多数据,斜率如何变化/稳定,并最终与整个样本斜率收敛(即第一个例子)。
要将其应用于您自己的数据,请复制F=Expr()括号内的整个公式,然后将其粘贴到公式编辑器中,并用体重和身高替换您的变量。
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt << New Column("Slope",
Formula(
If(Row() == 1,
Col Sum((:height - Col Mean(:height)) * (:weight - Col Mean(:weight))) /
Col Sum((:height - Col Mean(:height)) ^ 2),
.
)
)
);
F = Expr(
Eval(
Eval Expr(
Col Sum(
(:height - Col Mean(:height, Row() <= Expr(Row()))) * (:weight
-Col Mean(:weight, Row() <= Expr(Row()))),
Row() <= Expr(Row())
) / Col Sum(
(:height - Col Mean(:height, Row() <= Expr(Row()))) ^ 2,
Row() <= Expr(Row())
)
)
)
);
dt << New Column("Incremental Slope", Formula(Name Expr(F)));
回复:公式编辑器中的线性回归将斜率值放入与数据相同的表的列中感觉不对。
但是,如果您确实是这个意思,并且想要避免使用 JMP 平台,那么这里有一种在 JMP 12 中执行的方法:
NamesDefaultToHere(1);
myLinearRegression =
Function({x, y}, {Default Local},
// Add the unit vector to the design matrix
x = J(NRow(x), 1, 1)||x;
// Get the parameters
betas = Transpose(Inv(x`*x)*x`*y);
);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
Wait(3);
xVals = Column(dt, "height") << getValues;
yVals = Column(dt, "weight") << getValues;
betas = myLinearRegression(xVals, yVals);
slope = betas[2];
dt << NewColumn("Slope of weight vs. height", Numeric, Continuous, Values(Repeat(slope, NRow(dt))));
执行“文件 > 新建 > 新脚本”,将上面的 JSL 剪切并粘贴到该窗口中,然后执行“编辑 > 运行脚本”。
当然,在相信您计算出的任何斜率之前绘制数据总是一个好主意,这就是“分析>以 X 拟合 Y”的目的。