Android Studio:来自org.apache.commons.math4.stat.descriptive的getStandardDeviation()方法没有给我确切的Std值

问题描述 投票:0回答:1

我想知道是否有人可以帮助我。我正在开发一个程序,该程序从双精度值列表中提取均值和标准差。我使用org.apache.commons.math4.stat.descriptive来执行此操作,该库有一个名为GetStandardDeviation()的方法,该方法为您提供列表的std,但是当我计算此std manually时,却没有得到方法返回我的值相同。这是我的代码:

public class PDC extends AppCompatActivity {

private DescriptiveStatistics stats = new DescriptiveStatistics();

private double media;
private double dvt;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_pdc);

    double K = 0.00;

    Bundle extras;

    extras = getIntent().getExtras();
    assert extras != null;

    String nombrelista = extras.getString("nombrelista");
    ArrayList<String> listDatos = extras.getStringArrayList("listDatos");

    assert listDatos != null;

    if(listDatos.size()==9){ K = 1.92;}
    if(listDatos.size()==10){K = 1.96;}
    if(listDatos.size()==11){K = 2.00;}
    if(listDatos.size()==12){K = 2.04;}
    if(listDatos.size()==13){K = 2.07;}
    if(listDatos.size()==14){K = 2.10;}

    //This for parses to double the positions from listdatos Arraylist and put it in the DescriptiveStatistics type variable called "stats"

    for (int i = 0; i < listDatos.size(); i++) {
        stats.addValue(Double.parseDouble(listDatos.get(i)));
    }

    // so now, when i have my arraylist saved in "stats" i call getStandardDeviation

    media = stats.getMean();
    dvt = stats.getStandardDeviation();

    int numeroMed = listDatos.size();

    double imin = media - (K * dvt);
    double imax = media + (K * dvt);

    //then i pass all the values to another activity where it shows up in a TextView Field

    Intent A = new Intent(this, Resultados.class);
    A.putExtra("nombreLista", nombrelista);
    A.putExtra("NumeroMedidas", numeroMed);
    A.putStringArrayListExtra("listDatos", listDatos);
    A.putExtra("Media", media);
    A.putExtra("dvt", dvt);
    A.putExtra("Imin", imin);
    A.putExtra("Imax", imax);
    A.putExtra("K",K);
    startActivity(A);
}
} 

不知道为什么它不起作用。也许我在进行活动时会丢失一些信息,因为这些值过去常常是很长的数字。

¿]如果我不使用此库,而是设计自己的方法可以进行标准偏差,那会更好吗?

此外,如果您发现我的代码中有待改进的地方,请告诉我,因为它是新事物,所以我对此感到很不高兴。非常感谢!

我想知道是否有人可以帮助我。我正在开发一个程序,该程序从双精度值列表中提取均值和标准差。我使用org.apache.commons.math4.stat.descriptive来做...

java android android-studio standard-deviation apache-commons-math
1个回答
0
投票

这是Java中精度的损失。

© www.soinside.com 2019 - 2024. All rights reserved.