Hello coders, today we are going to solve Day 8: Least Square Regression Line HackerRank Solution which is a Part of 10 Days of Statistics Series.

Objective
In this challenge, we practice using linear regression techniques.
Task
A group of five students enrolls in Statistics immediately after taking a Math aptitude test. Each student’s Math aptitude test score, x, and Statistics course grade, y, can be expressed as the following list of (x, y) points:
- (95, 85)
- (85, 95)
- (80, 70)
- (70, 65)
- (60, 70)
If a student scored an 80 on the Math aptitude test, what grade would we expect them to achieve in Statistics? Determine the equation of the best-fit line using the least squares method, then compute and print the value of y when x = 80.
Input Format
There are five lines of input; each line contains two space-separated integers describing a student’s respective x and y grades:
95 85
85 95
80 70
70 65
60 70
If you do not wish to read this information from stdin, you can hard-code it into your program.
Output Format
Print a single line denoting the answer, rounded to a scale of 3 decimal places (i.e., 1.234 format).
Solution – Least Square Regression Line
C++
#include <cmath> #include <cstdio> #include <vector> #include <iostream> #include <algorithm> using namespace std; double reg(vector<int>x, vector<int>y) { // mean long sum1 = 0; for(int i=0; i<x.size(); i++) sum1 += x[i]; double mean1 = (double)sum1/x.size(); long sum2 = 0; for(int i=0; i<y.size(); i++) sum2 += y[i]; double mean2 = (double)sum2/y.size(); // sqre sum long xsq = 0; for(int i=0; i<x.size(); i++) xsq += (x[i]*x[i]); // sum: xy long xy = 0; for(int i=0; i<x.size(); i++) xy += (x[i]*y[i]); // finding a & b; double b = (5.0*xy - sum1*sum2)/(5.0*xsq - sum1*sum1); double a = mean2 - b*mean1; return a + b*80; } int main() { /* Enter your code here. Read input from STDIN. Print output to STDOUT */ vector<int> x,y; for(auto i=0; i<5; i++) { int p, q; cin>>p; x.push_back(p); cin>>q; y.push_back(q); } double res = reg(x, y); printf("%0.3f", res); return 0; }
Disclaimer: The above Problem (Least Square Regression Line) is generated by Hacker Rank but the Solution is Provided by CodingBroz. This tutorial is only for Educational and Learning Purpose.
this is the python solution
x = []
y = []
for i in range(5):
lis = list(map(int,input().split()))
x.append(lis[0])
y.append(lis[1])
xm = sum(x)/5
ym = sum(y)/5
b = sum((x[i]-xm)*(y[i]-ym) for i in range(5))/sum((x[i]-xm)**2 for i in range(5))
a = ym – b * xm
def bestfit(x):
val = a + b * x
return val
print(f”{bestfit(80):.3f}”)