2022年 11月 9日

python 绘制q-q图代码

python 绘制q-q图代码

今天,我们附上一份python绘制q-q图的代码
简单介绍一下思路
1.首先,我们需要对我们绘制的两份数据排序,然后,用散点图绘制在图例上
2.之后,绘制散点拟合曲线,下面代码结果图下:
q-q图的原理也很重要:数据中一串数目的每个点都是该数据的某分位点,把这些点的(称为样本分位数点)和相应的理论上的分位数配对做出散点图,如果该数据服从正态分布,那么该图看上去应该像一条直线,否则就不服从正态分布。
在这里插入图片描述

import numpy as np
import matplotlib.pyplot as plt

def linear_regression(x, y):
  N = len(x)
  sumx = sum(x)
  sumy = sum(y)
  sumx2 = sum(x ** 2)
  sumxy = sum(x * y)
  A = np.mat([[N, sumx], [sumx, sumx2]])
  b = np.array([sumy, sumxy])
  return np.linalg.solve(A, b)
x=np.array([23,23,27,27,39,41,47,49,50,52,54,54,56,57,58,58,60,61])

y=np.array([9.5,26.5,7.8,17.8,31.4,25.9,27.4,27.2,31.2,34.6,42.5,28.8,33.4,30.2,34.1,32.9,41.2,35.7])  # 9个数据
a0, a1 = linear_regression(x, y)
y_s=y.copy()
y_s.sort()

y2 = [a0 + a1 * x for x in x]

fig=plt.figure(figsize=(6,6))
plt.xlabel('age')
plt.ylabel('%fat')
plt.scatter(x, y_s,label='qq_plot')
#plt.plot([40,65],[25,38])#该条曲线应该通过拟合来画
plt.plot( x, y2)
#plt.tick_params(axis='both',which='major',labelsize=14)

plt.show()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30