Tính hồi quy bình phương nhỏ nhất tuyến tính cho hai bộ đo.
Tham số, yarray_likex, yarray_likeHai bộ đo. Cả hai mảng phải có cùng độ dài. Nếu chỉ X được đưa ra [và y=None
], thì đó phải là một mảng hai chiều trong đó một chiều có chiều dài 2. Hai bộ đo sau đó được tìm thấy bằng cách tách mảng dọc theo chiều dài-2. Trong trường hợp y=None
và x là mảng 2x2,
result = linregress[x, y] print[result.intercept, result.intercept_stderr]1 tương đương với
result = linregress[x, y] print[result.intercept, result.intercept_stderr]2.thay thế {‘hai mặt,’ Ít hơn, ’lớn hơn}, tùy chọn{‘two-sided’, ‘less’, ‘greater’}, optional
Xác định giả thuyết thay thế. Mặc định là ‘hai mặt. Lựa chọn tiếp theo đã khả thi:
‘Hai mặt: Độ dốc của đường hồi quy là không
’Ít hơn: Độ dốc của đường hồi quy nhỏ hơn 0
‘Lớn hơn: độ dốc của đường hồi quy lớn hơn 0
Mới trong phiên bản 1.7.0.
Trả lại phiên bảnresultresult = linregress[x, y] print[result.intercept, result.intercept_stderr]3 instance
Giá trị trả về là một đối tượng với các thuộc tính sau:
Độ dốc của đường hồi quy.
InterceptFloatfloatChặn đường hồi quy.
rvaluefloatfloatHệ số tương quan Pearson. Hình vuông của
result = linregress[x, y] print[result.intercept, result.intercept_stderr]4 bằng với hệ số xác định.PvalueFloatfloat
Giá trị p cho một thử nghiệm giả thuyết có giả thuyết null là độ dốc bằng không, sử dụng thử nghiệm Wald với phân phối t của thống kê thử nghiệm. Xem thay thế ở trên cho các giả thuyết thay thế.
StderrfloatfloatLỗi tiêu chuẩn của độ dốc ước tính [gradient], theo giả định về tính quy tắc còn lại.
intercept_stderrfloatfloatLỗi tiêu chuẩn của chặn ước tính, theo giả định về tính quy tắc còn lại.
Ghi chú
Thiếu giá trị được coi là theo cặp khôn ngoan: Nếu thiếu một giá trị trong x, giá trị tương ứng trong y được che dấu.
Để tương thích với các phiên bản SCIPY cũ hơn, giá trị trả về hoạt động giống như
result = linregress[x, y] print[result.intercept, result.intercept_stderr]5 có độ dài 5, với các trường
result = linregress[x, y] print[result.intercept, result.intercept_stderr]6,
result = linregress[x, y] print[result.intercept, result.intercept_stderr]7,
result = linregress[x, y] print[result.intercept, result.intercept_stderr]4,
result = linregress[x, y] print[result.intercept, result.intercept_stderr]9 và
>>> import matplotlib.pyplot as plt >>> from scipy import stats >>> rng = np.random.default_rng[]0, vì vậy người ta có thể tiếp tục viết:
slope, intercept, r, p, se = linregress[x, y]
Tuy nhiên, với phong cách đó, lỗi tiêu chuẩn của chặn không có sẵn. Để có quyền truy cập vào tất cả các giá trị được tính toán, bao gồm lỗi tiêu chuẩn của chặn, hãy sử dụng giá trị trả về làm đối tượng với các thuộc tính, ví dụ:
result = linregress[x, y] print[result.intercept, result.intercept_stderr]
Ví dụ
>>> import matplotlib.pyplot as plt >>> from scipy import stats >>> rng = np.random.default_rng[]
Tạo một số dữ liệu:
>>> x = rng.random[10] >>> y = 1.6*x + rng.random[10]
Thực hiện hồi quy tuyến tính:
>>> res = stats.linregress[x, y]
Hệ số xác định [r-bình phương]:
>>> print[f"R-squared: {res.rvalue**2:.6f}"] R-squared: 0.717533
Vẽ dữ liệu cùng với dòng được trang bị:
>>> plt.plot[x, y, 'o', label='original data'] >>> plt.plot[x, res.intercept + res.slope*x, 'r', label='fitted line'] >>> plt.legend[] >>> plt.show[]
Tính toán khoảng tin cậy 95% trên độ dốc và chặn:
>>> # Two-sided inverse Students t-distribution >>> # p - probability, df - degrees of freedom >>> from scipy.stats import t >>> tinv = lambda p, df: abs[t.ppf[p/2, df]]
>>> ts = tinv[0.05, len[x]-2] >>> print[f"slope [95%]: {res.slope:.6f} +/- {ts*res.stderr:.6f}"] slope [95%]: 1.453392 +/- 0.743465 >>> print[f"intercept [95%]: {res.intercept:.6f}" ... f" +/- {ts*res.intercept_stderr:.6f}"] intercept [95%]: 0.616950 +/- 0.544475