gpt4 book ai didi

java - 计算一系列值的斜率

转载 作者:搜寻专家 更新时间:2023-10-31 19:56:24 24 4
gpt4 key购买 nike

我有 2 个等长的数组。以下函数尝试使用这些数组计算斜率。它返回每个点之间斜率的平均值。对于以下数据集,我得到的值似乎与 Excel 和 Google Docs 不同。

        double[] x_values = { 1932, 1936, 1948, 1952, 1956, 1960, 1964, 1968,
1972, 1976, 1980 };
double[] y_values = { 197, 203, 198, 204, 212, 216, 218, 224, 223, 225,
236 };



public static double getSlope(double[] x_values, double[] y_values)
throws Exception {

if (x_values.length != y_values.length)
throw new Exception();

double slope = 0;

for (int i = 0; i < (x_values.length - 1); i++) {
double y_2 = y_values[i + 1];
double y_1 = y_values[i];

double delta_y = y_2 - y_1;

double x_2 = x_values[i + 1];
double x_1 = x_values[i];

double delta_x = x_2 - x_1;

slope += delta_y / delta_x;
}

System.out.println(x_values.length);
return slope / (x_values.length);
}

输出

Google: 0.755

getSlope(): 0.962121212121212

Excel: 0.7501

最佳答案

我打赌其他两种方法正在计算 least-squares fit ,而你不是。

当我使用 R 验证这个猜想时,我也得到了大约 0.755 的斜率:

> summary(lm(y~x))

Call:
lm(formula = y ~ x)

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -1.265e+03 1.793e+02 -7.053 5.97e-05 ***
x 7.551e-01 9.155e-02 8.247 1.73e-05 ***

相关号码是 7.551e-01。还值得注意的是,该线的截距约为 -1265。

这是最小二乘拟合的图片:

lm fit

关于在您的代码中实现这一点,请参阅 Compute least squares using java

关于java - 计算一系列值的斜率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15431914/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com