Haifisch7734

AWD

Oct 24th, 2017
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.84 KB | None | 0 0
  1. import sys
  2. #import numpy
  3. #from pylab import *
  4.  
  5.  
  6. def average(A):
  7.     size = len(A)
  8.     arraySum = 0
  9.     for i in range(0, size):
  10.         arraySum += A[i]
  11.     return arraySum / size
  12.  
  13.  
  14. def standard_deviation(A):
  15.     avg = average(A)
  16.     size = len(A)
  17.     arraySum = 0
  18.     for i in range(0, size):
  19.         arraySum += ((A[i] - avg) * (A[i] - avg))
  20.     return sqrt(arraySum / size)
  21.  
  22.  
  23. def covariance(X, Y):
  24.     avgX = average(X)
  25.     avgY = average(Y)
  26.     size = len(X)
  27.     XY = []
  28.     for i in range(0, size):
  29.         XY.append(X[i] * Y[i])
  30.     avgXY = average(XY)
  31.     return avgXY - (avgX * avgY)
  32.  
  33.  
  34. def rPearson_compound(X, Y):
  35.     cov = covariance(X, Y)
  36.     stdX = standard_deviation(X)
  37.     stdY = standard_deviation(Y)
  38.     return cov / (stdX * stdY)
  39.  
  40.  
  41. def linear_regression(X, Y):
  42.     cov = covariance(X, Y)
  43.     stdX = standard_deviation(X)
  44.     avgX = average(X)
  45.     avgY = average(Y)
  46.     a = cov / (stdX * stdX)
  47.     b = avgY - a * avgX
  48.     return {'a': a, 'b': b}
  49.  
  50.  
  51. xArray = []
  52. yArray = []
  53. xyArray = []
  54.  
  55. with open(sys.argv[1], "r") as ins:
  56.     for line in ins:
  57.         splittedLine = line.split(" ")
  58.         xArray.append(float(splittedLine[0]))
  59.         yArray.append(float(splittedLine[1]))
  60.         xyArray.append(float(splittedLine[0]) * float(splittedLine[1]))
  61.  
  62. xAvg = numpy.average(xArray)
  63. yAvg = numpy.average(yArray)
  64. xyAvg = numpy.average(xyArray)
  65.  
  66. xStd = numpy.std(xArray)
  67. yStd = numpy.std(yArray)
  68.  
  69. # cov = numpy.cov([xArray, yArray], ddof = 0)
  70.  
  71. cov = xyAvg - (xAvg * yAvg);
  72.  
  73. cor = cov / (xStd * yStd)
  74.  
  75. regressionA = round(cov / (xStd * xStd), 3)
  76. regressionB = round(yAvg - regressionA * xAvg, 3)
  77.  
  78. sm = min(xArray) - 1
  79. bg = max(xArray) + 1
  80.  
  81. smY = regressionA * sm + regressionB
  82. bgY = regressionA * bg + regressionB
  83.  
  84. lineX = [sm, bg]
  85. lineY = [smY, bgY]
  86.  
  87. print(xArray);
  88. print(yArray);
  89. print("Średnia X: {}".format(xAvg))
  90. print("Średnia Y: {}".format(yAvg))
  91. print("Średnia X: {}".format(average(xArray)))
  92. print("Średnia Y: {}".format(average(yArray)))
  93. print("Odchylenie standardowe X: {}".format(xStd))
  94. print("Odchylenie standardowe Y: {}".format(yStd))
  95. print("Odchylenie standardowe X: {}".format(standard_deviation(xArray)))
  96. print("Odchylenie standardowe Y: {}".format(standard_deviation(yArray)))
  97. print("Kowariancja: {}".format(cov))
  98. print("Kowariancja: {}".format(covariance(xArray, yArray)))
  99. print("Współczynnik korelacji r-Pearsona: {}".format(cor))
  100. print("Współczynnik korelacji r-Pearsona: {}".format(rPearson_compound(xArray, yArray)))
  101. print("Prosta regresji : y = {} * x + {}".format(regressionA, regressionB))
  102. reg = linear_regression(xArray, yArray)
  103. print("Prosta regresji : y = {} * x + {}".format(reg['a'], reg['b']))
  104.  
  105. plot(xArray, yArray, "ro");
  106. plot(lineX, lineY)
  107. xlabel("Oś x")
  108. ylabel("Oś y")
  109. title("AWD")
  110. savefig("awd.png")
  111. print("Wykres zapisano do pliku awd.png")
Advertisement
Add Comment
Please, Sign In to add comment