⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 avg_incrrate.java

📁 平均增长率预测模型、对数据增长率进行分析
💻 JAVA
字号:
package com.strongit.bi.mbs.model;



/**
 * 
 */


import java.math.BigDecimal;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;

/**
 * <p>平均增长率模型</p>
 * <p>Description:平均增长率模型的算法(发展性分析)</p>
 * 
 *
 */
public class Avg_IncrRate {
	public String stat(String xmlString)
	{
	Document requestDoc = null;
	try {
		requestDoc = DocumentHelper.parseText(xmlString);
	} catch (DocumentException e1) {
		// TODO Auto-generated catch block
		e1.printStackTrace();
	}
	List<Element> dataList=requestDoc.selectNodes("/Submodel/Data/RowData/ColumnData");
	double[] originData=new double[dataList.size()];
    //获取原始数据
	for(int i=0;i<dataList.size();i++)
	{
		if(dataList.get(i).getText()!=null&&!"".equals(dataList.get(i).getText()))
		{
			originData[i]=Double.valueOf(dataList.get(i).getText()).doubleValue();
		}
	}
	
    //获取时间段长度
	Element timespanElement=(Element)requestDoc.selectSingleNode("/Submodel/Common/Timespan");
	int timespan=0;
	if(timespanElement.getText()!=null&&!"".equals(timespanElement.getText()))
		timespan=Integer.valueOf(timespanElement.getText()).intValue();
    //获取预测时间长度
	Element fcstTimespanElement=(Element)requestDoc.selectSingleNode("/Submodel/Common/FcstTimespan");
	int fcstTimespan=0;
	if(fcstTimespanElement.getText()!=null&&!"".equals(fcstTimespanElement.getText()))
		fcstTimespan=Integer.valueOf(fcstTimespanElement.getText()).intValue();
	
	double[] Avg_IncrRate_array = new double[timespan + fcstTimespan];//平均增长率
	
	double Avg_IncrRate_a = 0;
	Avg_IncrRate_array[0] = 0;
	double k = 1.0;
	for (int i = 1; i < timespan; i++) {
	if(originData[0]!=0)
	{
	Avg_IncrRate_a = originData[i] / originData[0];
	if(Avg_IncrRate_a>=0)
	{
	double b = 1 / k;
	BigDecimal c = new BigDecimal( (Math.pow(Avg_IncrRate_a, b) - 1) * 100); //求幂
	Avg_IncrRate_array[i] = c.setScale(3, BigDecimal.ROUND_HALF_UP).
	   doubleValue();
	}
	else
	{
		Avg_IncrRate_array[i]=0;
	}
	}
	else
	{
	Avg_IncrRate_array[i] = 0;
	}
	k = k + 1.0;
	}
	
//	  添加应用该模型后的时序结果
	Element resultDatas=requestDoc.getRootElement().element("ResultDatas");
    Element timeResultData=resultDatas.addElement("ResultData").addAttribute("view","TimeSeries");
    Element timeResultRow=timeResultData.addElement("RowData").addAttribute("label", "平均增长率");
    for(int i=0;i<Avg_IncrRate_array.length;i++)
    {
    	timeResultRow.addElement("ColumnData").setText(String.valueOf(Avg_IncrRate_array[i]));
    }
    return requestDoc.asXML();
	}
	
//	  public double[] stat(double[] origin_data, String[] parameter_array,
//              int amount_parameter, int timespan, int fcst_timespan, double[][] variable_index) {
//
//double[] Avg_IncrRate_array = new double[timespan + fcst_timespan];//平均增长率
//
//
//if (String.valueOf(timespan) == null || timespan < 0) {
//timespan = 1;
//}
//if (String.valueOf(fcst_timespan) == null || fcst_timespan < 0) {
//fcst_timespan = 0;
//}
//double Avg_IncrRate_a = 0;
//Avg_IncrRate_array[0] = 0;
//double k = 1.0;
//for (int i = 1; i < timespan; i++) {
//if(origin_data[0]!=0)
//{
//Avg_IncrRate_a = origin_data[i] / origin_data[0];
//if(Avg_IncrRate_a>=0)
//{
//double b = 1 / k;
//BigDecimal c = new BigDecimal( (Math.pow(Avg_IncrRate_a, b) - 1) * 100); //求幂
//Avg_IncrRate_array[i] = c.setScale(3, BigDecimal.ROUND_HALF_UP).
//   doubleValue();
//}
//else
//{
//	Avg_IncrRate_array[i]=0;
//}
//}
//else
//{
//Avg_IncrRate_array[i] = 0;
//}
//k = k + 1.0;
//}
//return Avg_IncrRate_array;
//}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -