Các lỗi tham số được tạo ra có ý nghĩa hoặc hữu ích như thế nào khi điều chỉnh một LinearModelFit hoặc NonlinearModelFit không trọng số?
Đây có thể là một câu hỏi nằm trên bờ vực của việc thuộc nhiều hơn về lĩnh vực thống kê và SE được xác thực chéo , nhưng tôi cũng đặc biệt quan tâm đến các quy trình phù hợp của Mathematica.
Thông thường, nếu tôi muốn phù hợp với một mô hình với một số dữ liệu bằng cách sử dụng một trong hai NonlinearModelFit
hoặc LinearModelFit
tôi sẽ gặp một số lỗi liên quan đến$y$-dữ liệu mà tôi sử dụng để cân các phù hợp. Những lỗi này có thể chỉ đơn giản là lỗi tiêu chuẩn mắc phải từ các phép đo lặp lại hoặc tôi có thể biết điều gì đó về các quá trình vật lý và có thể ấn định trọng số.
Ví dụ: Weights->1/YDataErrors^2
và tôi luôn đặt công cụ ước tính phương sai của mình là VarianceEstimatorFunction -> (1 &)
. Sau đó, tôi có thể nhận được lỗi tham số của mình từ ma trận hiệp phương sai hoặc đơn giản là với MyFit["ParameterErrors"]
.
Tuy nhiên, trong một số trường hợp, người ta có thể không có bất kỳ lỗi nào đối với dữ liệu bạn muốn phù hợp, nghĩa là người ta không thể cung cấp trọng số theo cách mà tôi đã mô tả ở trên. Sau đó, câu hỏi của tôi là, độ tin cậy - hoặc quan trọng hơn - các lỗi tham số có ý nghĩa như thế nào về mặt vật lý / thống kê đối với sự phù hợp không trọng số trong Mathematica?
Trả lời
Ví dụ: nếu một người có hai nguồn sai số, giả sử là lỗi đo lường và lỗi thiếu phù hợp, thì việc sử dụng trọng số dựa trên các lỗi đo lường có thể dẫn đến sai số chuẩn bị đánh giá thấp hơn. Hãy xem xét mô hình sau:
$$y=a+b x +\gamma + \epsilon$$
Ở đâu $y$ là phản hồi được đo lường, $x$ là người dự đoán, $a$ và $b$ là các hằng số được ước tính, $\gamma$ là lỗi đo lặp lại với $\gamma \sim N(0,\sigma_{ME})$và $\epsilon$ là lỗi thiếu phù hợp với $\epsilon \sim N(0,\sigma)$ và tất cả các lỗi được giả định là độc lập.
Đầu tiên hãy đặt một số thông số cụ thể:
(* Measurement error standard deviation *)
σME = 10;
(* Lack-of-fit error standard deviation *)
σ = 20;
(* Regression coefficients *)
a = 1;
b = 1;
Tạo và vẽ một số dữ liệu:
n = 100;
x = Range[n];
SeedRandom[12345];
measurementError = RandomVariate[NormalDistribution[0, σME], n];
lackOfFitError = RandomVariate[NormalDistribution[0, σ], n];
y = a + b x + measurementError + lackOfFitError;
data = Transpose[{x, y}];
data2 = {#[[1]], Around[#[[2]], σME]} & /@ data;
ListPlot[data2]
Bây giờ hãy xem xét hai mô hình tuyến tính khác nhau phù hợp với lm1
những gì bạn đề xuất và lm2
là những gì tôi đề xuất:
lm1 = LinearModelFit[data, z, z, Weights -> 1/ConstantArray[σME^2, n],
VarianceEstimatorFunction -> (1 &)];
lm2 = LinearModelFit[data, z, z];
lm1["ParameterTable"]
lm2["ParameterTable"]
Các ước tính của các tham số giống hệt nhau nhưng sai số tiêu chuẩn đối với lm1
nhỏ hơn một nửa kích thước như đối với lm2
. Cái nào đúng?
Ma trận hiệp phương sai "đúng" của các công cụ ước lượng bình phương nhỏ nhất của a
và b
cho mô hình này là
$$\left(\sigma ^2+\sigma_{ME}^2\right) \left(X^T.X\right)^{-1}$$
Ở đâu $X$là ma trận thiết kế. Trong mã Mathematica , lỗi tiêu chuẩn b
là
X = Transpose[{ConstantArray[1, n], Range[n]}]
Sqrt[(σME^2 + σ^2) Inverse[Transpose[X].X][[2, 2]]] // N
(* 0.0774635 *)
Điều đó khá phù hợp với lm2
.
Đây là một ví dụ hơi giả tạo trong đó tôi có tất cả các lỗi tiêu chuẩn đo lường giống hệt nhau vì các hàm hồi quy của Mathematica chỉ cho phép một thuật ngữ lỗi duy nhất. Và bằng cách có các sai số tiêu chuẩn đo lường giống hệt nhau, dẫn đến một mô hình tương đương với một lỗi duy nhất.
Tuy nhiên, ngay cả khi độ lệch chuẩn đo lường khác nhau đáng kể, vấn đề về trọng số không phù hợp sao cho nó không khớp với cấu trúc lỗi của mô hình vẫn còn.
Các quy trình hồi quy của Mathematica chưa phù hợp với các mô hình có nhiều hơn một nguồn lỗi. Tôi ước họ được như vậy.