examples: simple linear regression
parent
de832375b7
commit
c90b53b89d
|
@ -0,0 +1 @@
|
|||
simple_linear_regression
|
|
@ -0,0 +1,55 @@
|
|||
import math
|
||||
|
||||
struct LinearResult {
|
||||
r2 f64
|
||||
intercept f64
|
||||
slope f64
|
||||
dependent_variable_means f64
|
||||
independent_variable_means f64
|
||||
}
|
||||
|
||||
fn linearrelationship(independent_variable []int, dependent_variable []int) LinearResult {
|
||||
// Objective :
|
||||
// Find what is the linear relationship between two dataset X and Y?
|
||||
// x := independent variable
|
||||
// y := dependent variable
|
||||
mut sum_r2_x := 0
|
||||
mut sum_r2_y := 0
|
||||
mut sum_xy := 0
|
||||
mut sum_x := 0
|
||||
mut sum_y := 0
|
||||
for i in independent_variable {
|
||||
sum_x += i
|
||||
sum_r2_x += i * i
|
||||
}
|
||||
for yi in dependent_variable {
|
||||
sum_y += yi
|
||||
sum_r2_y += yi * yi
|
||||
}
|
||||
x_means := sum_x / independent_variable.len
|
||||
y_means := sum_y / dependent_variable.len
|
||||
for index, x_value in independent_variable {
|
||||
sum_xy += x_value * dependent_variable[index]
|
||||
}
|
||||
// /Slope = (∑y)(∑x²) - (∑x)(∑xy) / n(∑x²) - (∑x)²
|
||||
slope_value := f64((sum_y * sum_r2_x) - (sum_x * sum_xy)) / f64((sum_r2_x * independent_variable.len) - (sum_x * sum_x))
|
||||
// /Intercept = n(∑xy) - (∑x)(∑y) / n(∑x²) - (∑x)²
|
||||
intercept_value := f64((independent_variable.len * sum_xy) - (sum_x * sum_y)) / f64((independent_variable.len * sum_r2_x) - (sum_x * sum_x))
|
||||
// Regression equation = Intercept + Slope x
|
||||
// R2 = n(∑xy) - (∑x)(∑y) / sqrt([n(∑x²)-(∑x)²][n(∑y²)-(∑y)²]
|
||||
r2_value := f64((independent_variable.len * sum_xy) - (sum_x * sum_y)) / math.sqrt(f64((sum_r2_x * independent_variable.len) - (sum_x * sum_x)) * f64((sum_r2_y * dependent_variable.len) - (sum_y * sum_y)))
|
||||
return LinearResult{
|
||||
r2: r2_value
|
||||
intercept: intercept_value
|
||||
slope: slope_value
|
||||
independent_variable_means: x_means
|
||||
dependent_variable_means: y_means
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
independent_variable := [4, 5, 6, 7, 10]
|
||||
dependent_variable := [3, 8, 20, 30, 12]
|
||||
result := linearrelationship(independent_variable, dependent_variable)
|
||||
println(result)
|
||||
}
|
Loading…
Reference in New Issue