Matlab中的Shapiro Wilk测试

时间:2013-01-17 16:03:28

标签: matlab

我有一个包含100个数值的数组A. 我想测试A中的数据是否正常使用Shapiro-Wilk test分发。

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

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

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

2 个答案:

答案 0 :(得分:1)

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

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

  1. 使用命令S = sym(A)
  2. 从A创建sym对象
  3. 使用note = mupad
  4. 创建一个名为MuPAD的笔记本
  5. 使用S
  6. 将变量note发送给setVar(note, S)
  7. 在MuPAD命令中使用S而不是A,例如:B := stats::swGOFT(S)

答案 1 :(得分:0)

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

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

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

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