먼저 masterdomon.tistory.com/5 를 참고하여 C#코드를 JAVA로 변형했다는 것을 알려드립니다.

 

JAVA로 구현한 trend 함수로 두 가지의 결과를 만들 수 있음

1. trend 함수를 이용해 예상값 찾기

2. 추세선 그래프 그리기

 

1. trend 함수를 이용해 예상값을 찾는 코드

function trend(arr, arr2, constVal) {
	var numPoints = arr2.length;
	var x1 = 0;
	var y1 = 0;
	var xy = 0;
	var x2 = 0;
	var J, M, B;
    
	for (var i=0; i<numPoints; i++){
    		x1 = x1 + Number(arr[i]);
    		y1 = y1 + Number(arr2[i]);
    		xy = xy + Number(arr[i]) * Number(arr2[i]);
    		x2 = x2 + Number(arr[i]) * Number(arr[i]);
	}

	M = 0;
	B = 0; 
	J = (numPoints * x2) - (x1 * x1);

	if (J != 0){
    		M = ((numPoints * xy) - (x1 * y1)) / J;
		B = ((y1 * x2) - (x1 * xy)) / J;
	}

	result = ((M * constVal) + B).toFixed(1);

	return result;
}

trend(arr, arr2, constVal);

arr : x축에 해당하는 값 (배열)

arr2 :  y축에 해당하는 값 & 구하고 싶은 값이 해당하는 필드 (배열)

constVal : 예상값(y)을 구하기 위한 상수(x)

result : 예상값(y)

 

 

2. 추세선 그래프 그리는 코드

function trend(arr, arr2) {
	var numPoints = arr2.length;
	var x1 = 0;
	var y1 = 0;
	var xy = 0;
	var x2 = 0;
	var J, M, B;
	var result = [];

	for (var i=0; i<numPoints; i++){
		x1 = x1 + Number(arr[i]);
		y1 = y1 + Number(arr2[i]);
		xy = xy + Number(arr[i]) * Number(arr2[i]);
		x2 = x2 + Number(arr[i]) * Number(arr[i]);
	}
	M = 0;
	B = 0; 
	J = (numPoints * x2) - (x1 * x1);

	if (J != 0){
		M = ((numPoints * xy) - (x1 * y1)) / J;
		B = ((y1 * x2) - (x1 * xy)) / J;
	}

	for(var i=0; i<arr.length; i++){
		result.push( ((M * arr[i]) + B).toFixed(1) );
	}

	return result;
}

arr : x축에 해당하는 값 (배열)

arr2 :  y축에 해당하는 값 & 구하고 싶은 값이 해당하는 필드 (배열)

result : 추세선 위의 x에 해당하는 y (배열)

 

y값들을 배열로 리턴해주기 때문에 arr에 들어간 x값과 짝을 지어 그래프를 만들어주면 됨

+ Recent posts