@DikranMarsupial hoàn toàn chính xác, tất nhiên, nhưng với tôi, thật tuyệt khi minh họa quan điểm của anh ấy, đặc biệt là vì mối quan tâm này dường như xuất hiện thường xuyên. Cụ thể, phần dư của mô hình hồi quy nên được phân phối bình thường cho các giá trị p là chính xác. Tuy nhiên, ngay cả khi phần dư được phân phối bình thường, điều đó không đảm bảo rằng sẽ (không phải là vấn đề ...); nó phụ thuộc vào sự phân bố của X . YX
Hãy lấy một ví dụ đơn giản (mà tôi đang tạo nên). Giả sử chúng tôi đang thử nghiệm một loại thuốc điều trị tăng huyết áp tâm thu đơn độc (nghĩa là chỉ số huyết áp cao nhất là quá cao). Chúng ta hãy quy định thêm rằng bp tâm thu thường được phân phối trong dân số bệnh nhân của chúng tôi, với giá trị trung bình là 160 & SD là 3, và với mỗi mg thuốc mà bệnh nhân dùng mỗi ngày, bp tâm thu giảm 1mmHg. Nói cách khác, giá trị thực sự của là 160, và beta 1 là -1, và đúng chức năng tạo dữ liệu là:
B P s y s = 160 - 1 × hàng ngày liều thuốc + εβ0β1
Trong nghiên cứu giả tưởng của chúng tôi, 300 bệnh nhân được chỉ định ngẫu nhiên dùng 0mg (giả dược), 20mg hoặc 40mg thuốc mới này mỗi ngày. (Lưu ý rằng X không được phân phối bình thường.) Sau đó, sau một khoảng thời gian thích hợp để thuốc có hiệu lực, dữ liệu của chúng tôi có thể trông như thế này:
BPsys=160−1×daily drug dosage+εwhere ε∼N(0,9)
X
(. Tôi jittered liều lượng sao cho các điểm sẽ không chồng chéo lên nhau rất nhiều mà họ khó có thể phân biệt được) Bây giờ, hãy kiểm tra các bản phân phối của (ví dụ, đó là phân phối biên / gốc), và dư: Y
YY
YXp<.05β1
set.seed(123456789) # this make the simulation repeatable
b0 = 160; b1 = -1; b1_null = 0 # these are the true beta values
x = rep(c(0, 20, 40), each=100) # the (non-normal) drug dosages patients get
estimated.b1s = vector(length=10000) # these will store the simulation's results
estimated.b1ns = vector(length=10000)
null.p.values = vector(length=10000)
for(i in 1:10000){
residuals = rnorm(300, mean=0, sd=3)
y.works = b0 + b1*x + residuals
y.null = b0 + b1_null*x + residuals # everything is identical except b1
model.works = lm(y.works~x)
model.null = lm(y.null~x)
estimated.b1s[i] = coef(model.works)[2]
estimated.b1ns[i] = coef(model.null)[2]
null.p.values[i] = summary(model.null)$coefficients[2,4]
}
mean(estimated.b1s) # the sampling distributions are centered on the true values
[1] -1.000084
mean(estimated.b1ns)
[1] -8.43504e-05
mean(null.p.values<.05) # when the null is true, p<.05 5% of the time
[1] 0.0532
Những kết quả này cho thấy mọi thứ hoạt động tốt.
X YX