Created
November 27, 2020 14:24
-
-
Save llSourcell/8ed4e38ac1a9174326985bf65f0fa173 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
use std::io; | |
use std::process; | |
fn main() { | |
//Step 0 - Collect data | |
let x: [f64; 8] = [44.0, 46.0, 59.0, 67.0, 74.0, 85.0, 97.0, 43.0]; | |
let y: [f64; 8] = [1200.0, 2400.0, 3200.0, 3000.0, 5000.0, 4000.0, 6000.0, 6050.0]; | |
println!("Total profit per month"); | |
//Step 1 - Compute the average of X | |
let mut xtotal: f64 = 0.0; | |
let mut x_iter = 0; | |
while x_iter != x.len() { | |
xtotal = xtotal + x[x_iter]; | |
x_iter = x_iter+1; | |
} | |
let x_len = x.len().to_string().trim().parse::<f64>().unwrap(); | |
let xmean: f64 = xtotal/x_len; | |
println!("The average of X = {}", xmean); | |
//Step 2 - Compute the average of Y | |
let mut ytotal: f64 = 0.0; | |
let mut y_iter = 0; | |
while y_iter != y.len() { | |
ytotal = ytotal + y[y_iter]; | |
y_iter = y_iter+1; | |
} | |
let y_len = y.len().to_string().trim().parse::<f64>().unwrap(); | |
let ymean: f64 = ytotal/y_len; | |
println!("The Average of Y = {}", ymean); | |
//Compute and store more values for linear regression | |
//namely x2, y2, and xy | |
let mut yy: f64 = 0.0; | |
let mut xy: f64 = 0.0; | |
let mut xx: f64 = 0.0; | |
x_iter = 0; | |
while x_iter != x.len() { | |
xy = xy+(x[x_iter]*y[x_iter]); | |
xx = xx+(x[x_iter]*x[x_iter]); | |
yy = yy+(y[x_iter]*y[x_iter]); | |
x_iter = x_iter+1; | |
} | |
println!("Sigma value of yy = {}", yy); | |
println!("Sigma value of xy = {}", xy); | |
println!("Sigma value of xx = {}", xx); | |
//Compute B in y = mx + b | |
// y sum * x^2 - x sum * xy / num x * x2 - x sum * x sum | |
let b: f64 = ((ytotal*xx)-(xtotal*xy))/((x_len*xx)-(xtotal*xtotal)); | |
println!("the y intercept is = {}", b); | |
//Compute M in y = mx + b | |
let m: f64 = ((x_len*xy)-(xtotal*ytotal))/((x_len*xx)-(xtotal*xtotal)); | |
println!("the slope is = {}", m); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment