Để xem giá trị p nào là đúng (nếu có), hãy lặp lại phép tính cho dữ liệu mô phỏng trong đó giả thuyết null là đúng. Trong cài đặt hiện tại, phép tính là dữ liệu bình phương nhỏ nhất phù hợp với dữ liệu (x, y) và giả thuyết null là độ dốc bằng không. Trong câu hỏi có bốn giá trị x 1,2,3,4 và sai số ước tính là khoảng 0,7, vì vậy hãy kết hợp điều đó trong mô phỏng.
Đây là thiết lập, được viết để dễ hiểu với mọi người, ngay cả những người không quen thuộc R
.
beta <- c(intercept=0, slope=0)
sigma <- 0.7
x <- 1:4
y.expected <- beta["intercept"] + beta["slope"] * x
Mô phỏng tạo ra các lỗi độc lập, thêm chúng vào y.expected
, gọi lm
để làm cho phù hợp và summary
tính toán các giá trị p. Mặc dù điều này không hiệu quả, nhưng nó đang thử nghiệm mã thực tế đã được sử dụng. Chúng ta vẫn có thể thực hiện hàng ngàn lần lặp lại trong một giây:
n.sim <- 1e3
set.seed(17)
data.simulated <- matrix(rnorm(n.sim*length(y.expected), y.expected, sigma), ncol=n.sim)
slope.p.value <- function(e) coef(summary(lm(y.expected + e ~ x)))["x", "Pr(>|t|)"]
p.values <- apply(data.simulated, 2, slope.p.value)
Các giá trị p được tính toán chính xác sẽ hoạt động như các số ngẫu nhiên đồng nhất trong khoảng từ đến101 khi giả thuyết null là đúng. Một biểu đồ của các giá trị p này sẽ cho phép chúng ta kiểm tra trực quan này - nó có nhìn gần ngang không - và một phép thử chi bình phương về tính đồng nhất sẽ cho phép đánh giá chính thức hơn. Đây là biểu đồ:
h <- hist(p.values, breaks=seq(0, 1, length.out=20))
và, đối với những người có thể tưởng tượng điều này không đủ thống nhất, đây là bài kiểm tra chi bình phương:
chisq.test(h$counts)
Bình phương X = 13.042, df = 18, p-value = 0.7891
Giá trị p lớn trong thử nghiệm này cho thấy những kết quả này phù hợp với tính đồng nhất dự kiến. Nói cách khác, lm
là chính xác.
Vậy thì, sự khác biệt về giá trị p đến từ đâu? Hãy kiểm tra các công thức có khả năng có thể được gọi để tính giá trị p. Trong mọi trường hợp, thống kê kiểm tra sẽ là
|t|=∣∣∣∣β^−0se(β^)∣∣∣∣,
bằng với chênh lệch giữa hệ số ước tính và giá trị giả định (và giá trị đúng) , được biểu thị bằng bội số của sai số chuẩn của ước tính hệ số. Trong câu hỏi những giá trị này là beta=0β^β=0
|t|=∣∣∣3.050.87378∣∣∣=3.491
cho ước tính đánh chặn và
|t|=∣∣∣−1.380.31906∣∣∣=4.321
cho ước tính độ dốc. Thông thường, những thứ này sẽ được so sánh với phân phối Student có mức độ tham số tự do là (lượng dữ liệu) trừ (số lượng hệ số ước tính). Hãy tính toán để đánh chặn:4 2t42
pt(-abs(3.05/0.87378), 4-2) * 2
[1] 0.0732
(Điều này nhân lên tính bên trái đuôi Student xác suất của vì đây là một thử nghiệm của so với hai mặt thay thế .) Nó đồng ý với các đầu ra.2 H 0 : β = 0 H Một : β ≠ 0t2H0:β=0HA:β≠0lm
Một phép tính thay thế sẽ sử dụng phân phối chuẩn thông thường để xấp xỉ phân phối Student . Hãy xem những gì nó tạo ra:t
pnorm(-abs(3.05/0.87378)) * 2
[1] 0.000482
Chắc chắn: biglm
giả định phân phối null của thống kê là chuẩn Bình thường. Bao nhiêu lỗi này là? Chạy lại mô phỏng trước bằng cách sử dụng thay cho biểu đồ giá trị p này:tbiglm
lm
Gần 18% các giá trị p này nhỏ hơn , ngưỡng tiêu chuẩn của "ý nghĩa". Đó là một lỗi rất lớn.0.05
Một số bài học chúng ta có thể học được từ cuộc điều tra nhỏ này là:
Không sử dụng các xấp xỉ có nguồn gốc từ các phân tích tiệm cận (như phân phối chuẩn) với các bộ dữ liệu nhỏ.
Biết phần mềm của bạn.
pt(-3.491, 2)*2
vớipnorm(-3.491)*2
, ví dụ.