• ## Rank

2017-06-26 12:34:14
Jackson wants to know his rank in the class. The professor has posted a list of student numbers and marks. Compute Jackson’s rank in class; that is, if he has the top mark(or is tied for the top mark...
• ## RANK

千次阅读 2012-06-11 10:04:04
，以下是从redbook中看到的一段...The available space on each rank is divided into extents. The extents are the building blocks of the logical volumes. An extent is striped across all disks of an array as


，以下是从redbook中看到的一段：

The available space on each rank is divided into extents. The extents are the building blocks of the logical volumes. An extent is striped across all disks of an array as shown in Figure 4-4 on page 71 and indicated by the small squares in Figure 4-5 on page
72.

The process of forming a rank does two things:

The array is defined for either fixed block (open systems) or CKD (System z) data. This determines the size of the set of data contained on one disk within a stripe on the array.

The capacity of the array is subdivided into equal sized partitions, called extents. The extent size depends on the extent type, FB or CKD.

For open systems, an FB rank has an extent size of 1 GB (where 1 GB equals 230 bytes).

For the System z environment, storage capacity is defined in units of 3390 volume sizes. A3390 Model 3 is three times the size of a Model 1, and a Model 1 has 1113 cylinders, which is about 0.94 GB. The extent size of a CKD rank therefore was chosen to be one
3390 Model 1, or 1113 cylinders.

One extent is the minimum physical allocation unit when a LUN or CKD volume is created, as we discuss later. It is still possible to define a CKD volume with a capacity that is an integral multiple of one cylinder or a fixed block LUN with a capacity that is
an integral multiple of 128 logical blocks (64K bytes). However, if the defined capacity is not an integral multiple of the capacity of one extent, the unused capacity in the last extent is wasted. For instance, you could define a 1 cylinder CKD volume, but
1113 cylinders (1 extent) is allocated and 1112 cylinders would be wasted.

Figure 4-4 shows an example of an array that is formatted for FB data with 1 GB extents (the squares in the rank just indicate that the extent is composed of several blocks from different DDMs).

在实际的使用绝大多数时候RANK与ARRAY还是一对一的关系，其中的FB类型的extent大小为1G，而extent是其所在ARRAY中多有磁盘的strip上的，也隐含的说出了，extent大小=ARRAY中磁盘个数*strip深度。

extent大小固定后，磁盘的个数就决定了该array的性能。

Memory Rank

一组或几组Memory chips,Chips分为两种4Bits与8Bits, 由于CPU处理能力为64Bits,  如果内存要达到CPU处理能力, 就把Chips组成了Rank; 简单理解就是64Bits为1 Rank.

Single Rank:1组Memory chip
Dual Rank: 2 组Memory chip ,one rank per side
Quad Rank: 4 组Memory chip ,two rank per side

Rank并不是同时间读写, 而是使用了Memory interleaving进行读写, 这样提高了总线利用效率!

解读内存中的Bank

两种内存Bank的区别

内存Bank分为物理Bank和逻辑Bank。

1.物理Bank

传统内存系统为了保证CPU的正常工作，必须一次传输完CPU在一个传输周期内所需要的数据。而CPU在一个传输周期能接收的数据容量就是CPU数据总线的位宽，单位是bit（位）。内存与CPU之间的数据交换通过主板上的北桥芯片进行，内存总线的数据位宽等同于CPU数据总线的位宽，这个位宽就称之为物理Bank（Physical
Bank，简称P-Bank）的位宽。以目前主流的DDR系统为例，CPU与内存之间的接口位宽是64bit，也就意味着CPU在一个周期内会向内存发送或从内存读取64bit的数据，那么这一个64bit的数据集合就是一个内存条Bank。不过以前有不少朋友都认为，内存的物理Bank是由面数决定的：即单面内存条则包含一个物理Bank，双面内存则包含两个。其实这个看法是错误的!

一条内存条的物理Bank是由所采用的内存颗粒的位宽决定的，各个芯片位宽之和为64bit就是单物理Bank；如果是128bit就是双物理Bank。读到这里，大家也应该知道，我们可以通过两种方式来增加这种类型内存的容量。第一种就是通过增加每一个独立模块的容量来增加Bank的容量，第二种方法就是增加Bank的数目。由于目前内存颗粒位宽的限制，一个系统只有一个物理Bank已经不能满足容量的需要。所以，目前新一代芯片组可以支持多个物理Bank，最少的也能支持4个物理Bank。对于像Intel
i845D这种支持4个Bank的芯片组来说，我们在选购内存时就要考虑一下插槽数与内存Bank 的分配问题了。因为如果选购双Bank的内存，这意味着在Intel i845D芯片组上我们最多只能使用两条这样的内存，多了的话芯片组将无法识别。这里我建议大家最好根据自己的主板所提供的内存插槽数目来选购内存，如果主板只提供了两个内存插槽，那就不必为内存是单Bank还是双Bank而担心了。而如果主板提供了4个内存插槽（同一种规格），那么应该尽量购买单Bank或大容量双Bank的内存，以免给日后升级留下不必要的麻烦。

注：SDRAM与DDR内存的物理Bank是一样的，不过在RDRAM内存规格中，物理Bank被通道（Channel）取代。

2.逻辑Bank
逻辑Bank的英文全称为Logical Bank，简称L-Bank。如果将物理Bank说成是内存颗粒阵列的话，那么逻辑Bank可以看做是数据存储阵列。不过与物理Bank不同，SDRAM与DDR内存的逻辑Bank并不完全一样，所以我将分开来简单介绍一下。
简单地说，SDRAM的内部是一个存储阵列（图1），因为如果是管道式存储，就很难做到随机访问了。阵列就如同表格一样，将数据“填”进去。因此逻辑Bank我们可以看成是一张逻辑二维表，在此表中内存的数据是以位（bit）为单位写入一个大的矩阵中，每个单元我们称为CELL，只要指定一个行（Row），再指定一个列（Column），就可以准确地定位到某个CELL，里面每个单元都可以存储数据，而且每个单元的存储空间相同——因为实际上与物理Bank每个单元具体存储数据量相同。这个具体的单元存储数据量即为逻辑Bank的位宽（实际上内存芯片的位宽就是逻辑Bank的位宽），一般有4bit、8bit和16bit等几种。如果你认为不好理解的话，那么你可以用硬盘操作中的簇与扇区的关系来理解内存中的存储形式——扇区是硬盘中的最小存储单元相当于内存中的存储体　而一个簇则包含多个扇区相当于逻辑Bank中的存储单元　数据的交换都是以一个簇为单位进行。由于工艺上的原因，这个阵列不可能做得太大，所以一般内存芯片中都是将内存容量分成几个阵列来制造，也就是说内存芯片中存在多个逻辑Bank，随着芯片容量的不断增加，逻辑Bank数量也在不断增加。
主板芯片组本身设计时在一个时钟周期内只允许对一个逻辑Bank进行操作，而不是主板芯片组对内存芯片内所有逻辑Bank同时操作。逻辑Bank的地址线是通用的，只要再有一个逻辑Bank编号加以区别就可以了（Bank0到Bank3）。但是这个芯片的位宽决定了一次能从它那里读出多少数据，并不是内存芯片里所有单元的数据能够一次全部读出。

对于DDR内存，逻辑Bank的作用、原理与在SDRAM中是一样的，区别主要是在逻辑Bank容量、规格之上。从上面大家已经知道，SDRAM中逻辑Bank存储单元的容量与芯片位宽相同，但DDR中并不是这样。DDR的逻辑存储单元的容量是芯片位宽的一倍：即“芯片位宽×2=存储单元容量”，同时DDR中的真正行、列地址数量也与同规格SDRAM不一样了。这主要是由于DDR的工作原理所决定的。DDR这种内部存储单元容量的设计，就是常说的两位预取（2-bit
Prefetch），也称为2-n Prefetch（n代表芯片位宽）。
注：目前品牌内存大都在包装和说明书中标明逻辑Bank，对于兼容条，你可以根据内存颗粒上的编号标志进行计算。至于物理Bank，大家可以根据以上介绍的原理计算出来，在这里我就不多说了。另外我们常说的内存交错设置并不是指的物理Bank的交错，也就是说不是内存条双面的交错，而是指内存芯片内部逻辑Bank的交错。如果芯片有4个Bank，那么就可以进行4路交错，如果只有两个Bank就只能是2路交错。很多资料介绍的以内存条的单面或双面来决定交错是错误的，实际上就是混淆了物理Bank和逻辑Bank的区别。

内存rank&bank

用everest查看内存配置时，SPD中选中一根内存，出现的详细情况中内存模块＞＞模块容量的数字背后有括号，里面有 x rank(s), y banks的字样，在网上查了一下，居然没有比较确切的回答。有些人甚至瞎说。

本人有充分的理由来说：rank 代表了内存条子上是否两面都在存储芯片（行语叫存储颗粒吧），两面都有的就是 2 ranks，也就是dual ranks，只有正面有的则是1 rank，也是常见的single rank。而bank则是存储颗粒的bank。

一般内存颗粒都是有将内存容量分成几个阵列来制造，也就是说存在内存芯片中存在多个BANK，一般每个颗粒都为4个。随着芯片容量的不断增加，逻辑BANK数量也在不断增加，目前从32MB到1GB的芯片基本都是4个，只有早期的16Mbit和32Mbit的芯片采用的还是2个逻辑BANK的设计，譬如三星的两种16MB芯片：K4S161622D
（512K x 16Bit x 2 BANK）和K4S160822DT（1M x 8Bit x 2 BANK）。芯片组本身设计时在一个时钟周期内只允许对一个逻辑BANK进行操作，而芯片的位宽就是逻辑BANK的位宽决定了一次操作的并行位宽。现在的内存颗粒的位宽多为16bit，这样的位宽对于要求高速的内存来说，显然太小。一般内存的位宽是64bit，也就是一次能并行传送8Byte数据。这样，在制造内存的时候，就把同类型的内存颗粒进行组合，现在ddr内存中，一组多为4个颗粒，一般一面是8个芯片，分两组，两面一共就是4组。而在一个组中，内存颗粒是并行进行访问的，就像并联电路可以分流一样，并行的内存颗粒分流了位宽。多个小位宽的颗粒bank并联组成了大位宽的内存bank。前面已经说过，现在内存颗粒的位宽多为16bit，4个一组，16
X 4 = 64，位宽为64的内存bank就这样产生了。

而内存的总容量还是不变的，计算方法还是：

内存容量 = 单个内存颗粒的容量 X 颗粒数量

而颗粒的容量一般由颗粒的型号决定的，计算方法为：

内存颗粒的容量 = bank数 X bank位宽 X bank深度 / 8，单位byte

如上而提到的K4S161622D ，因为其组成就是2个位宽为16位的512K深度的bank组成，所以其容量为2X16X512K/8 = 2M。对于威刚的VDD8608A8A，其组织为4M X 16 X 4bank，所以其容量为4MX16X4/8 = 32M。

曾记得第一次在深圳的华强北C座4楼问内存价格：

老板第一句问：一代二代？

我说：一代

老板：多大

我：XXX

老板：单面双面？

我：？？？？

不知什么意思，最后在老板的指点下，我看到了一种单面有芯片的内存，一种则两面都有，以前还不怎么注意过。一般来说，单面的价格可能会高一点，可能是单个存储颗粒容量比较大，线路要少，要稳定可靠吧。不过我相信，成本价应该双面还要高一点。至于为啥这个卖法，那就很难说了。因为在华强北这种卧虎藏龙之地，那些内存的来源都很那个啊！！！

DDR3内存标签参数解读

在内存标签上,  一般参数描述:ggg eRxff-PC3-wwwwwm-aa-bb-cc

1, ggg is the total capacity of the DIMM (for example, 1GB, 2GB, or 4GB)

2, e is the number of ranks

1 = single-rank

2 = dual-rank

3, ff is the device organization (bit width)

4 = x4 organization (4 DQ lines per SDRAM)

8 = x8 organization

16 = x16 organization

4,  wwwww is the DIMM bandwidth, in MBps

6400 = 6.40 GBps (PC3-800 SDRAMs, 8-byte primary data bus)

8500 = 8.53 GBps (PC3-1066 SDRAMs, 8-byte primary data bus)

10600 = 10.66 GBps (PC3-1333 SDRAMs, 8-byte primary data bus)

12800 = 12.80 GBps PC3-1600 SDRAMs, 8-byte primary data bus)

5,  m is the DIMM type

E = Unbuffered DIMM (UDIMM) with ECC (x72-bit module data bus)

R = Registered DIMM (RDIMM)

U = Unbuffered DIMM with no ECC (x64-bit primary data bus)

6, aa is the CAS latency, in clocks at maximum operating frequency

7, bb is the JEDEC SPD Revision Encoding and Additions level

8, cc is the reference design file for the design of the DIMM

2010-06-04 16:29:41|  分类： Hardware|字号 订阅

要搞清楚DDR，首先要搞清楚SDRAM（内存颗粒），DDR就是将这些颗粒集成在一起，再加一个控制器而已。

SDRAM（Synchronous DRAM）同步动态随机存储器：是PC 100和PC 133规范所广泛使用的内存类型，它的带宽为64位，3.3V电压，目前产品的最高速度可达5ns。它与CPU使用相同的时钟频率进行数据交换，它的工作频率是与CPU的外频同步的，不存在延迟或等待时间。

SDRAM的内部是一个存储阵列，类似于一张表格。和表格的检索原理一样，先指定一个行（Row），再指定一个列（Column），就可以准确地找到所需要的单元格，这就是内存芯片寻址的基本原理。对于内存，这个单元格可称为存储单元,那么这个表格（存储阵列）叫什么呢？它就是逻辑Bank（Logical Bank，下文简称L-Bank）。

DDR比SDRAM多了rank这个概念，在讲rank之前，我们先了解一下DDR数据存取，以64bits数据线为例，CPU每次从内存里面存读数据都是一次64bits，而我们知道内存颗粒（SDRAM）一般没有64bits数据线的，大多为4bits，8bits或16bits。那么为了凑够CPU访问所需的64bits该怎么办呢？当然是大伙一起凑了，即数据位扩展了。如果每个颗粒是8bits位宽，那么就需要8个颗粒凑在一起，这八个颗粒组成一组，它的名字就叫rank。

一条内存条上有多少个rank，就表示有多少个这样的分组，而在这个分组其实就是8片并在一起的SDRAM，这些SDRAM就是前面提到的三维立体空间的载体，也就是说bank。这个概念对于DDR来说就是指的颗粒（SDRAM）上的bank。


展开全文
• rank() over(业务逻辑) 作用：查出指定条件后的进行排名。特点是，加入是对学生排名，使用这个函数，成绩相同的两名是并列，下一位同学空出所占的名次。
前言

本篇介绍的三个函数均MySQL 8.x 以上版本，8.x以下版本会报语法错误，属于正常现象。

MySQL 8.x 实际上就是 MySQL 5.8x，大概是为了通过更大版本型号数字，证明自己比友商先进吧。

你可以通过 mysql --version （cmd命令）或者 select version() （sql语句）查看MySQL版本型号。

LeetCode.178题（https://leetcode-cn.com/problems/rank-scores/）

上述的这道题，如果不使用本次用到的函数的答案如下，也就是说，如果你的MySQL无法使用本篇中的函数，可以通过下面的语法逻辑做替换。

SELECT t1.Score as Score, ( SELECT COUNT(DISTINCT t2.Score) FROM Scores t2 WHERE t2.Score >= t1.Score ) AS Rank
FROM Scores t1 ORDER BY t1.Score DESC 

rank() over(业务逻辑)

作用：查出指定条件后的进行排名，条件相同排名相同，排名间断不连续。

说明：例如学生排名，使用这个函数，成绩相同的两名是并列，下一位同学空出所占的名次。即：1 1 3 4 5 5 7

SELECT id, name, score, rank() over(ORDER BY score DESC) AS 'rank' FROM student 

dense_rank() over(业务逻辑)

作用：查出指定条件后的进行排名，条件相同排名相同，排名间断不连续。

说明：和rank() over 的作用相同，区别在于dense_rank() over 排名是密集连续的。例如学生排名，使用这个函数，成绩相同的两名是并列，下一位同学接着下一个名次。即：1 1 2 3 4 5 5 6

SELECT id, name, score, dense_rank() over(ORDER BY score DESC) AS 'rank' FROM student 

row_number() over(业务逻辑)

作用：查出指定条件后的进行排名，条件相同排名也不相同，排名间断不连续。

说明：这个函数不需要考虑是否并列，即使根据条件查询出来的数值相同也会进行连续排序。即：1 2 3 4 5 6

SELECT id, name, score, row_number() over(ORDER BY score DESC) AS 'rank' FROM student 

后记

函数中的业务逻辑可以是复杂的，不局限于 ORDER BY，也可以加 PARTITION BY。

### 分班级排名
SELECT id, name, score, class, row_number() over(PARTITION BY class ORDER BY score DESC) AS 'rank'
FROM student 


展开全文
• ## Wilcoxon 检验之 rank-sum 与 signed-rank

万次阅读 多人点赞 2018-08-31 18:26:06
Frank Wilcoxon 是美国的统计学家，终其一生最著名的就是提出了 2 个非参假设检验方法，即 秩和检验 (Wilcoxon rank-sum test) 和 符号秩检验 (wilcoxon signed-rank test)。本文简单的对比总结了两种方法的用法，...
前些时候在写作时碰到了 Wilcoxon 检验，仔细一查，发现这里面居然还包含 2 种不同类型的检测，并且极容易混淆，这 2 种分别方法是 Wilcoxon rank-sum test（我翻译为秩和检验）和 Wilcoxon signed-rank test（我翻译为符号秩检验）。今天我简单总结一下，对比一下他们的差异。

Frank Wilcoxon (1892—1965) 是美国的统计学家，发表了 70 篇左右论文，但其最大的贡献就是这 2 个以他名字命名的非参假设检验方法：秩和检验 和 符号秩检验。他在 1945 年发表的论文 1 中将二者分别称为 非成对检验 （unpaired experiment）和 成对检验（paired comparison）。 正是因为其巨大影响力使得这两个检验方法都以他的名字命名，并流传下来。
假设检验有点类似于我们高中数学中常见的“反证法”，即提出一个错误的假设，然后证明它是错的。那么我们提出的假设叫做 原假设 (Null Hypothesis)，简写为 $H_{0}$。我们备选的假设叫做 备选假设 (Alternative Hypothesis)，简写为 $H_{\alpha}$ 或者 $H_{1}$。注意，在假设检验中只有 2 个假设，即原假设和备选假设，我们的目的就是要拒绝原假设。
在假设检验过程中，我们一般设定原假设 $H_0$ 和备选假设 $H_1$ 如下，

原假设 $H_0$：两组数据没有显著性差异
备选假设 $H_1$：两组数据存在显著性差异

1. Wilcoxon 秩和检验
根据 wikipedia 解释， Wilcoxon rank-sum test 定义如下，

In statistics, the Mann–Whitney U test (also called the Mann–Whitney–Wilcoxon (MWW), Wilcoxon rank-sum test, or Wilcoxon–Mann–Whitney test) is a nonparametric test.
This test can be used to determine whether two independent samples were selected from populations having the same distribution. 2

基本概念： 在统计学中，Wilcoxon rank-sum test（威尔科克森秩和检验）也叫 Mann-Whitney U test（曼-惠特尼 U 检验），或者 Wilcoxon-Mann-Whitney test。秩和检验是一个非参的假设检验方法，一般用来检测 2 个数据集是否来自于相同分布的总体。
这里的 “秩” 其实就是 “排名” 的意思，“秩和” 当然就是指 “将排名进行求和” 的操作。在秩和检验中，我们不要求被检验的 2 组数据包含相同个数的元素，换句话说，秩和检验更适用于非成对数据之间的差异性检测。
应用实例： 假设我们有 2 组数据 $x_{1}$ 和 $x_{2}$，如下表所示，$x_{1}$ 中有 7 个元素（列 $x_1$ 中），$x_{2}$ 中有 8 个元素（列 $x_2$ 中），现在使用秩和检验判断这 2 组数据是否存在显著性差异。

数据 $x_{1}$
总排名 $rank$
数据$x_{2}$
总排名 $rank$

9
14
7
11

5
5.5
4
3

8
13
5
5.5

7
11
6
8

10
15
3
1

6
8
6
8

7
11
4
3

4
3

步骤 1：我们首先将 $x_{1}$ 和 $x_{2}$ 整合成一个序列，并按升序重新排序，序号记在表中的 $rank$ 列当中。我们分别计算 2 组数据的排名之和 $R_{1}$ 和 $R_{2}$ 有，
$R_{1} = (14+5.5+13+11+15+8+11) = 77.5$ $R_{2} = (11+3+5.5+8+1+8+3+3) = 42.5$
注意，当我们计算若干等值元素的排名时，会用这些元素排名的平均值作为它们在整个序列中的排名。例如，$x_1$ 中的第 2 个元素与 $x_2$ 中第3 个元素的值都等于 5，且这 2 个 5 在整个序列中的排名分别是第 5 和第 6，因此这两个元素的排名为 $\frac{5+6}{2}=5.5$。其余等值元素的排名计算也与之类似。
步骤 2：令 $n_{1}$ 和 $n_{2}$ 分别表示 2 组数据的个数，即 $n_{1}=7, n_{2}=8$。再令 $T$ 表示小样本的排名和，即 $T = R_{1} = 77.5$。根据计算公式可得 $U_{1}$ 和 $U_{2}$ 的值如下，
$U_{1} = n_{1} \times n_{2} + \frac{n_{1}(n_{1}+1)}{2} - T = 7\times8 + \frac{7\times8}{2} - 77.5 = 6.5$ $U_{2} = n_{1} \times n_{2} - U_{1} = 7 \times 8 - 6.5 = 49.5$
步骤 3：由于 $U_{1}$ 更小，我们依此来查 Wilcoxon 双尾临界表，当 $\alpha=0.05, n_{1} = 7, n_{2} = 8$ 时的临界值是 10。因为 $U_{1} < 10$，故应该拒绝原假设。最终结论是：$x_{1}$ 和 $x_{2}$ 存在统计意义上的显著性差异，它们可能来自分布不同的总体。
编程实现： 在 python 中我们调用 scipy 包来里的 stats.mannwhitneyu() 函数来实现秩和检验，如下代码，
from scipy import stats
def wilcoxon_rank_sum_test(x, y):
res = stats.mannwhitneyu(x ,y)
print(res)

得到的结果如下，可知 statistic 即我们的 $U_{1}$ 值 $U_{1}$ = statistic = 6.5，pvalue 即我们的 p-value 值 pvalue=0.0069…
> MannwhitneyuResult(statistic=6.5, pvalue=0.006966479792405637)

2. Wilcoxon 符号秩检验
根据 wikipedia 解释， Wilcoxon signed-rank test 定义如下，

A Wilcoxon signed-rank test is a nonparametric test that can be used to determine whether two dependent samples were selected from populations having the same distribution. 3

基本概念： Wilcoxon signed-rank test（威尔科克森符号秩检验）也是一种非参的假设检验方法，它成对的检查 2 个数据集中的数据（即 paired difference test）来判断 2 个数据集是否来自相同分布的总体。
应用实例： 假设我们有 2 组数据 $y_{1}$ 和 $y_{2}$，如下表所示。我们按照如下 3 步来计算 wilcoxon signed-rank test 的结果。

$ID$
数据 $y_{1}$
数据 $y_{2}$
符号位 $sign$
绝对差值 $abs$
绝对差值的排名 $rank$

0
125
110
+1
15
7

1
115
122
-1
7
3

2
130
125
+1
5
1.5

3
140
120
+1
20
9

4
140
140
-
0
-

5
115
124
-1
9
4

6
140
123
+1
17
8

7
125
137
-1
12
6

8
140
135
+1
5
1.5

9
135
145
-1
10
5

步骤 1：首先对 $y_{1}$ 和 $y_{2}$ 两两成对配对形成 10 个数据对（即 $ID=0,...,9$），然后将这 10 个数据对两两求差，得到符号位 $sign$ 列。具体的做法是：当 $y_1$ 元素比 $y_2$ 对应元素大时，符号位为正，即 +1；当 $y_1$ 元素比 $y_2$ 对应元素小时，符号位为负，即 -1。例如，在 $ID=1$ 的数据对中，125 > 110，故其符号位为 +1.
步骤 2： 首先对 $y_{1}$ 和 $y_{2}$ 两两成对求差得到绝对值 $abs$ 列，然后根据 $abs$ 列排序得到 $rank$ 列。当某一对 $y_{1}$ 和 $y_{2}$ 的元素相等时，即 $abs=0$ 时，我们不计算其 $rank$ 值。例如，在 $ID=4$ 的数据对中，$y_1$ 和 $y_2$ 的值都是 140，因此这对数组没有排名值。
步骤 3： 有了这个 $sign$ 和 $rank$ 列的结果后，我们就可以来计算秩和了，其中大于 0 的秩和 |$W^{+}$| 和 对于小于 0 的秩和 |$W^{-}$|，以及最终的符号秩和 |$W$| 如下所示，
$|W^{+}| = |7+1.5+9+8+1.5| = 27$
$|W^{-}| = |3+4+6+5| = 18$
$|W| = ||W^{+}|-|W^{-}|| = 9$
步骤 4：最后我们根据 |$W$| 来查表 4，我们得到当 Wilcoxon 在 $\alpha=0.05$ $n=9$ 的时候的临界值是 5，而我们计算出来的 $|W| = 9 > 5$，因此我们不能拒绝原假设。最终结论是：$y_{1}$ 和 $y_{2}$ 不存在统计意义上的显著性差异，它们可能来自于同一分布的总体。
编程实现： 在 python 中我们调用 scipy 包来里的 stats.wilcoxon() 函数来实现秩和检验，如下代码，
from scipy import stats
def wilcoxon_signed_rank_test(y1, y2):
res = stats.wilcoxon(y1, y2)
print(res)

得到的结果如下，其中 statistic = 18.0，表示 2 类符号秩和较小的一个（$|W^{+}|$ 和 $|W^{-}|$ 最小的是18）；pvalue=0.5936… 就是我们需要的 p-value 值。之所以出现 Warning 信息是因为我们的数据量太少，一般来讲大于 20 是比较合适做假设检验的。
> E:\Software\Anaconda2\lib\site-packages\scipy\stats\morestats.py:2397: UserWarning:
>   Warning: sample size too small for normal approximation.
>   warnings.warn("Warning: sample size too small for normal approximation.")
> WilcoxonResult(statistic=18.0, pvalue=0.5936305914425295)


Wilcoxon, Frank. “Individual Comparisons by Ranking Methods.” Biometrics Bulletin 1.6(1945):80-83. link ↩︎

Wikipedia. Wilcoxon rank-sum test. link ↩︎

Wikipedia. Wilcoxon signed-rank test. link ↩︎


展开全文
• GitHub上的hackerrank解决方案| Java中的hackerrank教程|英特尔:registered:开发人员专区hackerrank 30天的代码解决方案| hackerrank算法解决方案| hackerrank破解编码面试解决方案| hackerrank通用编程解决方案| ...
• Hackerrank：解决Hackerrank问题的方法
• 详解内存数据总线与single rank dual-rank之间的关系
• rank() over, dense_rank() over, row_number() over 1、RANK() OVER 按照指定条件进行排名。注意：相同排名的学生，排名并列，下一名学生空出所占的名次，如1224。 SELECT STUDENT, SUBJECT, SCORE, RANK() OVER ( ...
排序
rank() over, dense_rank() over, row_number() over
1、RANK() OVER
按照指定条件进行排名。注意：相同排名的学生，排名并列，下一名学生空出所占的名次，如1224。
SELECT STUDENT,
SUBJECT,
SCORE,
RANK() OVER (
PARTITION BY SUBJECT
ORDER BY SCORE DESC
) RANK
FROM STUDENT_SCORE;
2、DESE_RANK() OVER:
与rank over()区别：相同排名之后，下一名学生并不空出所占的名次，如1223，
SELECT STUDENT,
SUBJECT,
SCORE,
DESE_RANK() OVER (
PARTITON BY SUBJECT
ORDER BY SCORE DESC
) RANK
FROM STUDENT_SCORE;
3、ROW_NUMBER() OVER:
区别：不考虑排名是否并列，会连续排名，如1234
SELECT STUDENT,
SUBJECT,
SCORE,
ROW_NUMBER() OVER (
PARTITION BY SUBJECT
ORDER BY SCORE DESC
) RANK
FROM STUDENT_SCORE;
4、使用RANK OVER() 时，空值最大
如果排序的字段里有null，可能null的字段排在最前面，会影响排序结果，用NULLS LAST：
RANK OVER() (
PARTITION BY SUBJECT
ORDER BY SCORE DESC NULLS LAST
) RANK
FROM STUDENT_SCORE;
学习笔记手敲一遍用于加深印象


展开全文
• HackerRank解决方案 该存储库包含我完成的所有HackerRank项目或挑战。 （定期更新） 关于HackerRank HackerRank是一家技术公司，致力于解决消费者和企业面临的竞争性编程挑战，开发人员通过尝试根据提供的规范进行...
• TextRank, TextRank算法提取关键词的Java实现
• sql rank We perform calculations on data using various aggregated functions such as Max, Min, and AVG. We get a single output row using these functions. SQL Sever provides SQL RANK functions to spe....
• He always asks the teacher about his rank in his class after every exam, which makes the teacher very tired. So the teacher gives him the scores of all the student in his class and asked him to get ...
• hackerrank-solutions：这些是我对Hackerrank挑战的一些解决方案
• rank 定义：RANK()函数，顾名思义排名函数，可以对某一个字段进行排名，这里为什么和ROW_NUMBER()不一样那，ROW_NUMBER()是排序，当存在相同成绩的学生时，ROW_NUMBER()会依次进行排序，他们序号不相同，而Rank()则...
• hive函数，rank(),dense_rank(),row_rank区别 rank（）：没有相同数字时候，该函数排序时按1,2,3…排序，但是遇到相同数时候，下一个会跳1，如1,2,2,4… dense_rank（）：没有相同数字时候，该函数排序时按1,2,3…...
• 基于TextRank的关键词、短语、摘要提取 置顶 2016年09月08日 18:20:59 STHSF 阅读数：17134 标签： TextRank scala 自动文摘 更多 个人分类： Scala 机器学习 版权声明：本文为博主原创文章，未经博主允许不得...
• 1.先说Mean rank 首先 对于每个 testing triple，以预测tail entity为例，我们将（h,r,t）中的t用知识图谱中的每个实体来代替，然后通过fr（h,t）函数来计算分数，这样我们可以得到一系列的分数，之后按照 升序将...
• 排名分类1.1 区别RANK，DENSE_RANK和ROW_NUMBER1.2 分组排名2. 准备数据3. 不分组排名3.1 连续排名3.2 并列跳跃排名3.3 并列连续排名4. 分组排名4.1 分组连续排名4.2 分组并列跳跃排名4.3 分组并列连续排名 在...
• RANK()/DENSE_RANK() OVER (PARTITION BY 分组字段 ORDER BY 排序字段 ASC/DESC) RANK(别名，可以自取) FROM 目标表名; 某水果店销往云贵川地区的销售记录表如下： 现需统计各个地区销售额最高的水果， 1.使用...
• 本文简要证明命题rank(AAT)=rank(ATA)=rank(A)rank(\mathbf{AA^T})=rank(\mathbf{A^TA})=rank(\mathbf{A})rank(AAT)=rank(ATA)=rank(A), 此证明分为两步来完成. rank(AAT)=rank(ATA)rank(\mathbf{AA^T})=rank(\...
• 如果两个分数相同，则两个分数排名（Rank）相同。请注意，平分后的下一个名次应该是下一个连续的整数值。换句话说，名次之间不应该有“间隔”。 +----+-------+ | Id | Score | +----+-------+ | 1 | 3.50 | | 2 | ...
• hackerrank上面的经典题目解答，自习看完可以复习算法。
• RANK() 排序相同时会重复，总数不会变 DENSE_RANK() 排序相同时会重复，总数会减少 ROW_NUMBER() 会根据顺序计算 这三个函数常常和开窗函数结合在一起使用 案例实操： 1，计算没门科目的成绩排名： [isea@...
• https://stats.stackexchange.com/questions/91034/difference-between-the-wilcoxon-rank-sum-test-and-the-wilcoxon-signed-rank-test 1. You should use the signed rank test when the data arepaired. You'....
• hive中的Rank 1. 数据准备 name subject score 孙悟空 语文 87 孙悟空 数学 95 孙悟空 英语 68 大海 语文 94 大海 数学 56 大海 英语 84 宋宋 语文 64 宋宋 数学 86 宋宋 英语 84 婷婷 语文 65 ...
• 相同点：RANK()和DENSE_RANK()的是排名函数 不同点：RANK()是跳跃排序,即如果有两条记录重复,接下来是第三级别 如：1 2 2 4,会跳过3 DENSE_RANK()是连续排序,即如果有两条记录重复，接下来是第二级别 如：1 2 2 ...
• ## Rank函数

千次阅读 2015-08-28 09:11:59
Rank函数是一个排名函数。rank函数最常用的是求某一个数值在某一区域内的排名。

...