Advertisement
Guest User

Untitled

a guest
Apr 26th, 2018
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.46 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2.  
  3. import numpy as np
  4. import scipy as sp
  5. import math
  6. import matplotlib.pyplot as plt
  7.  
  8. def wartosc(f,x=0):
  9.     return eval(f,{'x':x})
  10.  
  11. print("Funkcja y=a*x+b")
  12. a=int(input("Podaj a="))
  13. b=int(input("Podaj b="))
  14. funkcja=str(a)+"*x+"+str(b)
  15. print("Twoja funkcja to y=",funkcja," + wartosc losowa")
  16. xmin=int(input("Podaj dolny zakres przedzialu "))
  17. xmax=int(input("Podaj gorny zakres przedzialu "))
  18. krok=float(input("Podaj krok "))
  19.  
  20. x=np.arange(xmin,xmax,krok)
  21. y=x+0.0
  22. for i in range(0,len(x)):
  23.     y[i]=wartosc(funkcja,x[i])+sp.rand()
  24.  
  25. #wyznaczam wspolczynniki a i b funkcji regresji liniowej
  26. #metodą najmniejszych kwadaratów
  27.  
  28. #wyznaczamy x i y srednie
  29. x_avg = np.average(x)
  30. y_avg = np.average(y)
  31.  
  32. #obliczamy sume roznic elementow od sredniej
  33. sumOfXYDifferences = 0.0
  34. for i in range (0,len(x)):
  35.     sumOfXYDifferences += ((x[i]-x_avg)*(y[i]-y_avg))
  36.  
  37. #obliczamy sume kwadratow roznic elementow x
  38. sumOfXSquares = 0.0
  39. for i in range(0,len(x)):
  40.     sumOfXSquares += ((x[i]-x_avg)**2)
  41.  
  42. #wspolczynnik kierunkowy a w tym wypadku wynosi:
  43. a = sumOfXYDifferences / sumOfXSquares
  44. #znając a wyznaczenie b jest juz proste dzieki przekształceniu wzoru:
  45. b = y_avg - (a*x_avg)
  46. #pozostalo juz tylko wypelnic tabele danymi regresji i dodac
  47. #je do wykresu:
  48. regresja = str(a)+"*x+"+str(b)
  49. y_reg=x+0.0
  50.  
  51. for i in range(0,len(x)):
  52.     y_reg[i] = wartosc(regresja,x[i])
  53.  
  54. print("dla podanej funkcji, wzor funkcji regresji liniowej to f(x)=",regresja,"\n")
  55.  
  56. #obliczamy odchylenie standardowe Sx(odrazu obliczamy Sy):
  57. Sx = 0.0
  58. kwadrat_odchylen_x = 0.0
  59. kwadrat_odchylen_y = 0.0
  60. for i in range(0,len(x)):
  61.     kwadrat_odchylen_x += ((x[i] - x_avg)**2)
  62.     kwadrat_odchylen_y += ((y[i] - y_avg)**2)
  63. Sx = math.sqrt(kwadrat_odchylen_x/len(x))
  64. Sy = math.sqrt(kwadrat_odchylen_y/len(x))
  65.  
  66. #obliczamy kowariancję X i Y:
  67. cov = 0.0
  68. for i in range(0,len(x)):
  69.     cov += ((x[i] - x_avg)*(y[i] - y_avg))
  70. cov = cov/len(x)
  71.  
  72. #obliczamy wspolczynnik korelacji r - Pearsona:
  73. rxy = cov/(Sx*Sy)
  74.  
  75. print("Dla podanego zbioru, odchylenie standardowe Sx dla wartosci objasniajacej wynosi ",Sx,"\n")
  76. print("Dla podanego zbioru, odchylenie standardowe Sy dla wartosci objasnianej wynosi ",Sy,"\n")
  77. print("Kowariancja cov(x,y) tych zmiennych wynosi ",cov,"\n")
  78. print("Wspolczynnik korelacji r - Pearsona dla badanych zmiennych wynosi ",rxy,"\n")
  79.  
  80. plt.plot(x,y,"ro",ms=5)
  81. plt.plot(x,y_reg,"b-",ms=3)
  82. plt.title("Funkcja y="+funkcja+" oraz funkcja jej regresji")
  83. plt.show()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement