6

我有一个包含 100 个数值的数组 A。我想使用Shapiro-Wilk 测试来测试 A 中的数据是否是正态分布的。

Si 我B = stats::swGOFT(A);在 Matlab 命令行上写,我有错误:

??? B  = stats::swGOFT(A) Error: Unexpected MATLAB operator.
               |

有人可以帮我如何stats::swGOFT()正确使用吗?

4

2 回答 2

1

swGOFT 是一个 MuPAD 库,因此您必须从 MuPAD 中执行它,而不是从 MATLAB 命令行本身。在 MATLAB 命令行中,键入mupad并按 Enter。您将获得所谓的 MuPAD 笔记本,您可以在其中输入命令。正如B := stats::swGOFT(A)Shai 在评论中提到的那样。

编辑:要从AMatlab 工作区带到 MuPAD 工作区,您首先必须将其更改为“sym”类型的对象。步骤是:

  1. 使用命令从 A 创建一个 sym 对象S = sym(A)
  2. 创建一个命名的 MuPAD 笔记本note = mupad
  3. 将变量发送SnotewithsetVar(note, S)
  4. S在 MuPAD 命令中使用而不是A,例如:B := stats::swGOFT(S)
于 2013-01-17T17:09:07.287 回答
0

已经 6 年了,Matlab 说它将删除 MuPAD,但我的回答仍然可能对某人有用。

我使用并修改了 sundar 的答案。步骤是:

  1. 确保 A 是行向量(即size(A,1)==1
  2. A使用命令创建一个 sym 对象S = sym(A)
  3. 创建一个命名的 MuPAD 笔记本note = mupad
  4. 发送变量 S 以记录setVar(note, 'S', S)
  5. 在 MuPAD 笔记本中,将类型变量转换S为类型Dom::Matrix()变量DOM_LISTS2:=coerce(S, DOM_LIST):
  6. 获取 p 值:B := stats::swGOFT(S2[1])

步骤 1 和 5 的原因如下。coerce函数将 转换Dom::Matrix为列表列表,其中 Matrix 的每一行都是一个列表。要将所有元素放在单个列表中,我们需要S成为行向量。

于 2019-07-18T11:08:15.877 回答