Mã dưới đây tạo ra một tập hợp dữ liệu thử nghiệm bao gồm một loạt các xác suất "tín hiệu" với nhiễu nhị thức xung quanh nó. Sau đó, mã sử dụng 5000 bộ số ngẫu nhiên làm chuỗi "giải thích" và tính toán giá trị p hồi quy logistic cho mỗi bộ.
Tôi thấy rằng loạt giải thích ngẫu nhiên có ý nghĩa thống kê ở mức 5% trong 57% các trường hợp. Nếu bạn đọc qua phần dài hơn của bài viết dưới đây, tôi cho rằng đây là sự hiện diện của tín hiệu mạnh trong dữ liệu.
Vì vậy, đây là câu hỏi chính: tôi nên sử dụng thử nghiệm nào khi đánh giá ý nghĩa thống kê của một biến giải thích khi dữ liệu chứa tín hiệu mạnh? Giá trị p đơn giản dường như khá sai lệch.
Đây là một lời giải thích chi tiết hơn về vấn đề này.
Tôi bối rối trước kết quả tôi nhận được cho các giá trị p hồi quy logistic khi bộ dự đoán thực sự chỉ là một tập hợp các số ngẫu nhiên. Suy nghĩ ban đầu của tôi là phân phối giá trị p phải bằng phẳng trong trường hợp này; mã R bên dưới thực sự cho thấy một sự tăng đột biến lớn ở các giá trị p thấp. Đây là mã:
set.seed(541713)
lseries <- 50
nbinom <- 100
ntrial <- 5000
pavg <- .1 # median probability
sd <- 0 # data is pure noise
sd <- 1 # data has a strong signal
orthogonalPredictor <- TRUE # random predictor that is orthogonal to the true signal
orthogonalPredictor <- FALSE # completely random predictor
qprobs <- c(.05,.01) # find the true quantiles for these p-values
yactual <- sd * rnorm(lseries) # random signal
pactual <- 1 / (1 + exp(-(yactual + log(pavg / (1-pavg)))))
heads <- rbinom(lseries, nbinom, pactual)
## test data, binomial noise around pactual, the probability "signal"
flips <- cbind(heads, nbinom - heads)
# summary(glm(flips ~ yactual, family = "binomial"))
pval <- numeric(ntrial)
for (i in 1:ntrial){
yrandom <- rnorm(lseries)
if (orthogonalPredictor){ yrandom <- residuals(lm(yrandom ~ yactual)) }
s <- summary(glm(flips ~ yrandom, family="binomial"))
pval[i] <- s$coefficients[2,4]
}
hist(pval, breaks=100)
print(quantile(pval, probs=c(.01,.05)))
actualCL <- sapply(qprobs, function(c){ sum(pval <= c) / length(pval) })
print(data.frame(nominalCL=qprobs, actualCL))
Mã này tạo ra dữ liệu thử nghiệm bao gồm nhiễu nhị thức xung quanh tín hiệu mạnh, sau đó trong một vòng lặp phù hợp với hồi quy logistic của dữ liệu đối với một tập hợp các số ngẫu nhiên và tích lũy giá trị p của các yếu tố dự đoán ngẫu nhiên; kết quả được hiển thị dưới dạng biểu đồ của các giá trị p, các lượng tử giá trị p thực tế cho các mức độ tin cậy là 1% và 5% và tỷ lệ dương tính giả thực tế tương ứng với các mức độ tin cậy đó.
Tôi nghĩ một lý do cho kết quả bất ngờ là một người dự đoán ngẫu nhiên thường sẽ có một số mối tương quan với tín hiệu thực sự và điều này chủ yếu chiếm kết quả. Tuy nhiên, nếu bạn thiết lập orthogonalPredictor
để TRUE
sẽ có không tương quan giữa các yếu tố dự báo ngẫu nhiên và tín hiệu thực tế, nhưng vấn đề vẫn còn đó ở một mức độ giảm. Giải thích tốt nhất của tôi cho điều đó là vì tín hiệu thực sự không có ở bất kỳ nơi nào trong mô hình được trang bị nên mô hình bị sai và giá trị p dù sao cũng bị nghi ngờ. Nhưng đây là một cái bẫy-22 - ai đã từng có sẵn một bộ dự đoán phù hợp với dữ liệu? Vì vậy, đây là một số câu hỏi bổ sung:
Giả thuyết null chính xác cho hồi quy logistic là gì? Có phải dữ liệu hoàn toàn là nhiễu nhị thức quanh mức không đổi (nghĩa là không có tín hiệu thực sự)? Nếu bạn đặt sd thành 0 trong mã thì không có tín hiệu và biểu đồ sẽ trông phẳng.
Giả thuyết null ẩn trong mã là dự đoán không có sức mạnh giải thích nhiều hơn một tập hợp các số ngẫu nhiên; nó đã được kiểm tra bằng cách sử dụng định lượng 5% theo kinh nghiệm cho giá trị p như được hiển thị bởi mã. Có cách nào tốt hơn để kiểm tra giả thuyết này, hoặc ít nhất một cách không quá chuyên sâu về số lượng?
------ Thông tin thêm
Mã này bắt chước vấn đề sau: Tỷ lệ mặc định trong lịch sử cho thấy sự thay đổi đáng kể theo thời gian (tín hiệu) được điều khiển bởi các chu kỳ kinh tế; số lượng mặc định thực tế tại một thời điểm nhất định là nhị thức xung quanh các xác suất mặc định này. Tôi đã cố gắng tìm các biến giải thích cho tín hiệu khi tôi nghi ngờ các giá trị p. Trong thử nghiệm này, tín hiệu được sắp xếp ngẫu nhiên theo thời gian thay vì hiển thị các chu kỳ kinh tế, nhưng điều đó không quan trọng đối với hồi quy logistic. Vì vậy, không có sự quá mức, tín hiệu thực sự có nghĩa là một tín hiệu.