- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
在实现对快速排序分区的改进时,我尝试使用 Tukey 的九分法来找到主元(几乎借用了 sedgewick 在 QuickX.java 中的实现)
每次打乱整数数组时,我的下面代码都会给出不同的结果。
import java.util.Random;
public class TukeysNintherDemo{
public static int tukeysNinther(Comparable[] a,int lo,int hi){
int N = hi - lo + 1;
int mid = lo + N/2;
int delta = N/8;
int m1 = median3a(a,lo,lo+delta,lo+2*delta);
int m2 = median3a(a,mid-delta,mid,mid+delta);
int m3 = median3a(a,hi-2*delta,hi-delta,hi);
int tn = median3a(a,m1,m2,m3);
return tn;
}
// return the index of the median element among a[i], a[j], and a[k]
private static int median3a(Comparable[] a, int i, int j, int k) {
return (less(a[i], a[j]) ?
(less(a[j], a[k]) ? j : less(a[i], a[k]) ? k : i) :
(less(a[k], a[j]) ? j : less(a[k], a[i]) ? k : i));
}
private static boolean less(Comparable x,Comparable y){
return x.compareTo(y) < 0;
}
public static void shuffle(Object[] a) {
Random random = new Random(System.currentTimeMillis());
int N = a.length;
for (int i = 0; i < N; i++) {
int r = i + random.nextInt(N-i); // between i and N-1
Object temp = a[i];
a[i] = a[r];
a[r] = temp;
}
}
public static void show(Comparable[] a){
int N = a.length;
if(N > 20){
System.out.format("a[0]= %d\n", a[0]);
System.out.format("a[%d]= %d\n",N-1, a[N-1]);
}else{
for(int i=0;i<N;i++){
System.out.print(a[i]+",");
}
}
System.out.println();
}
public static void main(String[] args) {
Integer[] a = new Integer[]{17,15,14,13,19,12,11,16,18};
System.out.print("data= ");
show(a);
int tn = tukeysNinther(a,0,a.length-1);
System.out.println("ninther="+a[tn]);
}
}
Running this a cuople of times gives
data= 11,14,12,16,18,19,17,15,13,
ninther=15
data= 14,13,17,16,18,19,11,15,12,
ninther=14
data= 16,17,12,19,18,13,14,11,15,
ninther=16
tuckey's ninther 是否会为同一数据集的不同改组给出不同的值?当我尝试手动查找中位数的中位数时,我发现代码中的上述计算是正确的。这意味着与数据集的中位数不同,相同的数据集产生不同的结果。这是正确的行为吗?有统计知识的人可以评论一下吗?
最佳答案
Tukey 的第九次检查 9 个项目并使用仅那些计算中位数。
对于不同的随机洗牌,您很可能会得到不同的 Tukey's ninther,因为可能会检查不同的项目。毕竟,您总是检查相同的数组槽,但不同的洗牌可能会在这些槽中放入不同的项目。
这里的关键是 Tukey 的第九位不是给定数组的中位数。这是对中位数的一种尝试性近似,只需要很少的努力:我们只需要阅读 9 个项目并进行 12 次比较就可以得到它。这比获得实际中位数要快得多,并且与“三个中位数”相比,产生不良枢轴的可能性更小。请注意,机会仍然存在。
这是否回答了您的问题?
旁注,有人知道使用 Tukey 的九分法的快速排序是否仍然需要洗牌吗?我假设是的,但我不确定。
关于java - tukey's ninther 用于相同数据的不同改组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17628352/
我正在尝试使用 yaxis 上的计数 (MedMean) 和 xaxis 上的各种独立样本 (Site_Name) 的 ggplot 创建箱线图。 ggplot(medianlist,aes(x=re
在实现对快速排序分区的改进时,我尝试使用 Tukey 的九分法来找到主元(几乎借用了 sedgewick 在 QuickX.java 中的实现) 每次打乱整数数组时,我的下面代码都会给出不同的结果。
我知道 FFT 实现是如何工作的 ( Cooley-Tuckey algorithm ),并且我知道有一个 CUFFT CUDA 库可以快速计算 1D 或 2D FFT,但我想知道在此过程中如何利用
我一直无法在任何标准包中找到这个函数,所以我写了下面的一个。然而,在将它扔向 Cheeseshop 之前,有人知道已经发布的版本吗?或者,请提出任何改进建议。谢谢。 def fivenum(v):
我对方差分析进行了事后 Tukey 检验,然后绘制了结果图。我似乎无法更改 x 轴标题或 y 轴标题。我收到此错误: Error in plot.default(c(xi[, "lwr"], xi[,
我正在尝试对死亡率数据进行 Tukey 检验,我想测试死亡率是否受铜含量(单向方差分析)以及铜和温度的组合(双向方差分析)的影响.这些是我的公式: lm2<-lm(Mortality~Cu) anov
我收集了 216 个人的数据。我测量了每个人体内相同的 7 种物质的浓度,用 Sub1:Sub7 表示。这些物质的浓度在不同地点的个体中可能不同。我对这些个体可以根据这些物质的浓度进行分组的细化程度感
问题:我想了解如何更改 R 中 Tukey 测试计算平均值并分配相应字母的样本顺序。下面是非常简单的示例。 我研究了iris数据,发现不同物种的萼片长度存在差异。这是箱线图: 我进行了方差分析测试,发
我和我的一些学生已经在许多地方寻找解决这个问题的方法,但没有成功,而且实际上已经花费了几个月的时间。我一直被称为我不想使用的 lme 命令。提供的输出不是我的同事或我自己使用了超过 15 年的输出。此
我有多个链接,例如 - http://example.com/link1/title-with-detail - http://example.com/link2/title-with-detail
我刚接触到 tucker,正在尝试在 pentaho 服务器(spring)中重写 url 查询参数。 我想做的是:重写 http://hostname:8080/pentaho/api/repos/
在阅读a related question in StackOverflow的答案时,我看到matplotlib中使用的代码to compute the wiskers positions and d
我正在分析用 Python 编写的 Cooley-Tukey 算法实现的复杂性(代码取自 here): def fft(x): N = len(x) print N, N//2 if N 10 的列
我正在尝试为 FFT 编写 Cooley Tukey 算法。现在,该算法运行良好,但仅适用于 2 个数字 - 没有别的。例如,我使用在线 FFT 计算,输入相同的数据并得到相同的结果。这是算法的代码:
试图找出如何使用 statsmodel 计算 Tukey 的 HSD。我可以使它工作并且结果看起来很棒但是有一个我看不到的均值差异图。一定是我在做的傻事。 它是对象 TukeyHSDResults 中
我已尝试查看 Python 的多个统计模块,但似乎找不到任何支持 one-way ANOVA 事后测试的模块。 最佳答案 单方面的方差分析可以像这样使用 from scipy import stats
我有一个包含多个变量的大型数据集。我需要进行双向方差分析,然后使用 Tukey HSD 进行事后成对多重比较。 我的前 25 个条目的数据头部是这样的: > head(my_data2, 25 )
我正在对我的数据运行事后 Tukey HSD,该数据有 10 个因子级别。该表很大,我希望在成对的表中向读者展示 p 值,将 45 行表留给附录。 这是一个示例数据集: set.seed(42) x
我正在尝试对从 posthoc Tukey 获得的临界值进行精细可视化。有一些good guidelines out there用于可视化成对比较,但我需要更精致的东西。我的想法是,我会有一个图,其中
我正在对我的数据运行事后 Tukey HSD,该数据有 10 个因子级别。该表很大,我希望在成对的表中向读者展示 p 值,将 45 行表留给附录。 这是一个示例数据集: set.seed(42) x
我是一名优秀的程序员,十分优秀!