每年的最低价:a1 a2 a3 a4 可以用差价计算 底价相关系数r1
每年的最高价:b1 b2 b3 b4 可以用差价计算 高价相关系数r2
每年的均价:(a1+b1)/2 (a2+b2)/2 ... 可以用差价计算 均价相关系数r3
用r1相关系数作为基部
用底价预测数据:a5 寻求范围(范围在r1-r2 之间 r1-r3)
import java.util.Scanner;
public class Relationship {
public static void main(String[] args) {
//这是n年的 至少计算4年的
// 计算n年底价相关系数
// 计算n年高价相关系数
// 计算n年均价相关系数
// 一般:底部相关系数很高 高位相关系数很低,其求什么以什么相关系数为主
// 相关系数达到极点随值的增加而减小,这时候取最佳相关值
// 最低价:计算底部、中部算相关性
// 1. 5年底部价位均价+1年预测 穿(底价相关性数-均价相关系数)轴 算底部预算
// 2. 5年底部价位均价+1年预测 穿(均价相关性数-高价相关系数)轴 算底部预算
// 2.1 4年算法稳定
// 3. 这两个范围确定底部区间
Scanner scanner = new Scanner(System.in);
System.out.println("可以预测底部区间");
System.out.println();
System.out.println("请输入年份:");
int n = scanner.nextInt();
System.out.println("输入年数的先底价/均价/高价价格测相关系数,再通过相关系数和低价加预测计算预测值:");
double [] array1 = new double[n];
for (int i = 0; i < array1.length; i++) {
array1[i] = scanner.nextDouble();
}
double [] array2 = new double[n-1];
for (int i = 0; i < array1.length-1; i++) {
array2[i]=array1[i+1]-array1[i];
}
double sum_1 = 0.0;
double avg_1 = 0.0;
double sum_2 = 0.0;
double avg_2 = 0.0;
for (int i = 0; i < array2.length; i++) {
sum_1 += array1[i];
sum_2 += array2[i];
}
avg_1 = sum_1/(n);
avg_2 = sum_2/(n-1);
double Exy = 0.0;
double ExEy = avg_1*avg_2;
for (int i = 0; i < array2.length; i++) {
Exy += array1[i]*array2[i];
}
double cov = Exy - ExEy;
// System.out.println(cov);
double sum3 = 0;
double sum4 = 0;
for (int i = 0; i < array2.length; i++) {
sum3 += (array1[i]-avg_1)*(array1[i]-avg_1);
sum4 += (array2[i]-avg_2)*(array2[i]-avg_2);
}
double result1 = Math.sqrt(sum3/(n-1));
double result2 = sum4/(n-1);
// System.out.println(result1);
// System.out.println(result2);
double result = cov/(result1*result2);
System.out.println("这"+(n-1)+"年的相关系数为"+result);
}
}