问题标签 [sas-iml]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sas - SAS Proc IML 滚动窗口(循环)
我想将下面给出的这个工作模块修改为上面的一个,目的是为了代替使用从 1 到 m 的整个 p 样本,该模块将仅使用时间点 x 周围的前 18 个和后 18 个值。所以 p(x-18...x+18)。但我最终遇到了错误,无法真正理解问题出在哪里。帖子末尾带有整个命令行的错误消息。
错误信息:
optimization - SAS IML constraining a called function
How do I properly constrain this minimizing function? Mincvf(cvf1) should minimize cvf1 with respect to h and I want to set so that h>=0.4
However I get lots of:
Which happens because losing of precision when h approaches 0 and "le" in "mhatx2" approaches 0. At value h=0.4, le is ~0.08 so I just artificially picked that as a lower bound which is still precise enough.
Also this output of "outer" subroutine, ttt which is vector of h fitted for the rolling windows, still provides values below the constraint 0.4. Why?
sas - 使用 SAS/IML 中生成的向量作为宏变量
我正在编写一个宏,它将运行 PROC MIXED,使用 PARMS 语句将 1 级残差方差固定为接近零的值。我正在尝试使用 SAS/IML 为 PARMS 语句生成大部分起始值,例如:
如果没有 PROC MIXED 代码中的 PARMS 语句,该代码可以正常工作。然而,当我按原样运行代码时,SAS 显然将文字字符串 'start_vector[label=""]' 放在 PARMS 之后,而不是列出 IML 生成的值。
如何避免此错误并让 SAS 将 START_VECTOR 中包含的值指定为 PARMS 语句的起始值?
sas - 根据辅助数据集中的值和匹配条件输入主数据集中的缺失值
我对SAS的理解非常初级。我正在尝试做这样的事情,我需要帮助。
我有一个包含 20,000 个观察值的主数据集 A,其中 Col1 存储 CITY,Col2 存储 MILES。Col2 包含大量缺失数据。如下图所示。
我有另一个辅助数据集 B,它有大约 5000 个观察值,与数据集 A 非常相似,其中 Col1 存储 CITY,Col2 存储 MILES。然而,在这个数据集 B 中,Col2 不包含缺失数据。
我的目标是通过匹配 col1 中的城市名称,根据数据集 B 中的英里数来填充数据集 A 中缺失的英里数。
在此示例中,我试图通过匹配两个数据集之间的 Col1(城市名称)来从数据集 B 中填充数据集 A 中的 321.45 和类似的 176.34。
我在 SAS 中需要帮助
sas - 使用 Weibull 分布的 SAS Randgen 调用
我正在尝试在 proc IML 中使用 call randgen 来创建 10 个随机数,这些随机数遵循具有某些参数的 Weibull 分布。这是我正在使用的代码(显然会有不止一个循环,但我现在只是在测试):
对于此示例,Ntimes = 10,alpha[i] = 4.5985111,beta[i] = 131.79508。我的问题是 10 个迭代/随机数中的每一个都返回为 1。我在 R 中使用了具有相同参数的 rweibull 函数并得到了有意义的结果,所以我认为它与 SAS 或我的代码有关,而不是参数的问题。我是否正确使用了 Randgen 调用?有谁知道为什么结果会这样出来?
sas - SAS/IML:如何在 RANDNORMAL 中使用单个方差分量
这是一个编程问题,但我会先给你一些统计背景知识。这个问题是指混合效应位置尺度模型(即异质方差)的数据模拟的一部分。我正在尝试使用 IML 中的 RANDNORMAL 函数来模拟两个 MVN 方差分量。因为两个方差分量都是异质的,所以 RANDNORMAL 使用的方差会因人而异。因此,我需要 IML 来选择特定的行(例如,第 1 行 = 人 1)并在移动到下一行之前使用 RANDNORMAL 函数,依此类推。
我下面的示例代码适用于 2 人。我使用 DO 循环遍历每个人的特定方差分量(VC1 和 VC2)。我收到错误消息:“模块 RANDNORMAL 在退出之前的调用之前再次调用。” 我假设我需要在 DO 循环中使用某种 BREAK 或 EXIT 函数,但我没有尝试过工作。
任何帮助表示赞赏。哦,我正在使用 SAS 9.4。
sas - 填充矩阵 proc iml SAS
我有两列(c1,c2)的 ax 矩阵。我想修复第一列(c1),将 10 列添加到 X 矩阵中,每列都有值 C2+m、C2+m...C2+m,m 是一个随机整数。最后矩阵将是:
C1, C2+m, C2+m, C2+m...C2+m;
代码:
有人可以帮我解决这个问题。。谢谢
macros - SAS 简单宏 - 错误
为什么这个非常简单的宏程序:
给出错误?:
sas - proc IML 中的代码重用:通过将向量名称指定为字符串来访问向量的内容
在用户定义模块中的 SAS 系统的 proc IML 中,我希望能够通过将向量的名称作为参数来访问向量中的数据。
例如,在下面的代码中,名为“test”的模块构建了两个字符串“x_vec1”和“x_vec2”,但不打印这两个向量的内容,而是打印它们的名称(我认为提交块产生相同的结果)。
这个概念很容易使用宏通过在宏中调用 IML 来实现,但我想纯粹在 IML 中完成它以保持代码“干净”。虽然 IML 非常适合统计工作,但我需要的不仅仅是这些——我需要通过一个类似于宏变量的概念来保持我的代码简短,该宏变量可以在运行时在函数中解析。
sas - 如何在 SAS 中使用 IML 在两个矩阵之间进行乘法运算
我在从 EXCEL 导入下面有名为 input_data 的数据集。
我在下面还有另一个名为 p 的数据集
我想做的是使用 SAS 在 IML 中进行矩阵操作。
我已经有一些代码,但最终的计算出错了。有人可以帮帮我吗?