Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的中值绝对偏差_Java_Statistics - Fatal编程技术网

Java中的中值绝对偏差

Java中的中值绝对偏差,java,statistics,Java,Statistics,如何从列表(例如,列表)计算Java中的(MAD) 我发现stackoverflow的一些实现是用我不懂的编程语言实现的(例如and),但没有一个是用Java实现的。要计算中值: 您可以使用Arrays.sort()对输入的数组进行排序,然后如果arrayLength%2==0则中值值为(array[array.length/2-1]+array[array.length/2])/2否则中值为(array[array.length/2]) 计算MAD: 为每个元素创建Double[]interm

如何从列表(例如,
列表
)计算Java中的(MAD)


我发现stackoverflow的一些实现是用我不懂的编程语言实现的(例如and),但没有一个是用Java实现的。

要计算中值: 您可以使用
Arrays.sort()
输入的
数组进行排序,然后
如果arrayLength%2==0
中值
值为
(array[array.length/2-1]+array[array.length/2])/2
否则中值为
(array[array.length/2])

计算MAD: 为每个元素创建
Double[]intermediate-新的Double[array.length]
并使用
intermediate[i]=Math.abs(输入[i]-median)
计算
intermediate
数组的中位数,然后以与第一步相同的方式计算
intermediate
数组的中位数,就准备好了

我给你举了一个例子:

import java.util.Arrays;
import java.util.List;

public class MAD {

    public static void main(String[] args) {
        List<Double> input = Arrays.asList(new Double[] {1d, 1d, 2d, 2d, 4d, 6d, 9d});
        System.out.println(mad(input));
    }

    private static Double mad(List<Double> inputList) {
        Double[] input = inputList.toArray(new Double[inputList.size()]);
        Double median = median(input);
        arrayAbsDistance(input, median);
        return median(input);

    }

    private static void arrayAbsDistance(Double[] array, Double value) {
        for (int i=0; i<array.length;i++) {
            array[i] = Math.abs(array[i] - value);
        }
    }

    private static Double median(Double[] input) {
        if (input.length==0) {
            throw new IllegalArgumentException("to calculate median we need at least 1 element");
        }
        Arrays.sort(input);
        if (input.length%2==0) {
            return (input[input.length/2-1] + input[input.length/2])/2;
        } 
        return input[input.length/2];
    }
}
导入java.util.array;
导入java.util.List;
公共课疯狂{
公共静态void main(字符串[]args){
列表输入=Arrays.asList(新的Double[]{1d,1d,2d,2d,4d,6d,9d});
系统输出打印LN(mad(输入));
}
专用静态双mad(列表输入列表){
Double[]input=inputList.toArray(新的Double[inputList.size()]);
双中位数=中位数(输入);
arrayAbsDistance(输入,中间值);
返回中值(输入);
}
私有静态void arrayAbsDistance(双[]数组,双值){

对于(int i=0;iSo将C#和R实现转换为Java有什么问题?我不知道C#和R。我真的不明白为什么我会得到这么多的反对票。请在反对票之后立即在评论部分解释一下。如果你懂Java,你会发现学习C#很容易,这很相似。你可能想尝试学习rn足够用你所找到的代码来工作——它至少在2个方面是有用的:(1)你得到了手头的问题的工作解决方案,(2)你有一个新的技能。谢谢你的忠告“罗伯特多尔,但是ATM我真的很短的时间!以后我会考虑给C试一下。目前克日什托夫的答案做了我需要的:谢谢你的评论。如何继续有一个列表(<代码>列表列表< /代码>)而不是一个数组?(我刚刚编辑了我的问题)再次查看我的答案,我相信你可以从中学习到一些东西:)再次感谢你的帮助!为什么要考虑<代码> Masalay.Loim==1 作为一个不同的案例?“奇数元素”案例?你是对的,它已经包含在“奇数元素”案例中。我相信你也可以接受我的答案是正确的。