Hình dung tốt cho hồi quy Poisson là gì?


11

Tôi muốn liên kết các khiếm khuyết mã với các số liệu độ phức tạp của mã như sự gần gũi. Một mô hình phổ biến là xem đây là một quá trình Poisson, trong đó thời lượng là bao nhiêu thời gian dành cho mã hóa và mật độ là một hàm của độ phức tạp của mã. Tôi có thể thực hiện hồi quy và nhận các giá trị quan trọng, v.v.

Tuy nhiên, thật khó để tôi có thể hình dung được kết quả (và thậm chí còn khó hơn đối với các đồng nghiệp ít thiên về toán học của tôi). Có một cách tốt để xem điều này để xem xét những thứ như ngoại lệ, nếu đó là một xu hướng tuyến tính, vv? (Liên kết đến các gói R được đánh giá cao.)

Ví dụ, tôi chỉ có thể vẽ Defects / Time ~ Complexitynhưng điều này khá ồn ào và vì Defectsnó bị rời rạc và rất nhỏ, thật khó để xem xu hướng. Một điều tôi đã nghĩ đến là tôi có thể cắt dữ liệu thành các lượng tử và sau đó thực hiện hồi quy theo lượng tử và biểu thị mật độ kết quả - tôi không chắc chắn điều này có giá trị như thế nào, đặc biệt là vì dữ liệu của tôi không được phân phối bình thường nên có thể đánh lừa mọi người về những gì một lượng tử là.

Câu trả lời:


6

Sau khi bạn phù hợp với mô hình, tại sao không sử dụng các khuyết tật dự đoán làm biến để so sánh với các mô hình khác bằng cách sử dụng bất kỳ kỹ thuật tiêu chuẩn nào có ý nghĩa đối với chúng? Nó có lợi thế là một biến liên tục để bạn có thể thấy những khác biệt nhỏ. Ví dụ, mọi người sẽ hiểu sự khác biệt giữa số lượng khuyết tật dự kiến ​​là 1,4 và 0,6 mặc dù cả hai đều làm tròn thành một.

Để biết ví dụ về cách giá trị dự đoán phụ thuộc vào hai biến bạn có thể thực hiện một biểu đồ đường viền về độ phức tạp thời gian v. Như hai trục và màu sắc và đường viền để hiển thị các khuyết tật dự đoán; và chồng các điểm dữ liệu thực tế lên trên.

Cốt truyện dưới đây cần một số đánh bóng và một huyền thoại nhưng có thể là một điểm khởi đầu.

nhập mô tả hình ảnh ở đây

Một thay thế là biểu đồ biến được thêm vào hoặc biểu đồ hồi quy từng phần, quen thuộc hơn từ hồi quy đáp ứng Gaussian truyền thống. Chúng được thực hiện trong thư viện xe hơi. Hiệu quả cho thấy mối quan hệ giữa những gì còn lại của phản hồi và những gì còn lại của một trong các biến giải thích, sau khi các biến giải thích còn lại đã đóng góp cho cả hai biến trả lời và biến giải thích. Theo kinh nghiệm của tôi, hầu hết khán giả không thống kê đều thấy những điều này hơi khó để đánh giá cao (dĩ nhiên có thể bởi những lời giải thích kém của tôi).

nhập mô tả hình ảnh ở đây

#--------------------------------------------------------------------
# Simulate some data
n<-200
time <- rexp(n,.01)
complexity <- sample(1:5, n, prob=c(.1,.25,.35,.2,.1), replace=TRUE)
trueMod <- exp(-1 + time*.005 + complexity*.1 + complexity^2*.05)
defects <- rpois(n, trueMod)
cbind(trueMod, defects)


#----------------------------------------------------------------------
# Fit model
model <- glm(defects~time + poly(complexity,2), family=poisson)
# all sorts of diagnostic checks should be done here - not shown


#---------------------------------------------------------------------
# Two variables at once in a contour plot

# create grid
gridded <- data.frame(
    time=seq(from=0, to=max(time)*1.1, length.out=100),
    complexity=seq(from=0, to=max(complexity)*1.1, length.out=100))

# create predicted values (on the original scale)
yhat <- predict(model, newdata=expand.grid(gridded), type="response")

# draw plot
image(gridded$time, gridded$complexity, matrix(yhat,nrow=100, byrow=FALSE),
    xlab="Time", ylab="Complexity", main="Predicted average number of defects shown as colour and contours\n(actual data shown as circles)")
contour(gridded$time, gridded$complexity, matrix(yhat,nrow=100, byrow=FALSE), add=TRUE, levels=c(1,2,4,8,15,20,30,40,50,60,70,80,100))

# Add the original data
symbols(time, complexity, circles=sqrt(defects), add=T, inches=.5)

#--------------------------------------------------------------------
# added variable plots

library(car)
avPlots(model, layout=c(1,3))

2

Vì vậy, bạn chạy hồi quy poisson trên biến dữ liệu đếm "lỗi" và muốn hình dung sự khác biệt đáng kể. Bạn làm gì khi ước tính hồi quy đó là ước tính trung bình có điều kiện , trong đó là các khiếm khuyết và là các biến hồi quy của bạn, như độ phức tạp của mã.E[yi|xi]yixi

Cách dễ nhất để hình dung nó là chỉ lấy hai giá trị khác nhau cho , ví dụ: độ phức tạp cao và độ phức tạp thấp, sau đó vẽ tần số dự đoán của v.v. cho cả hai mức độ phức tạp. Biểu đồ kết quả sẽ trông như thế này trên slide 3. Nếu sự khác biệt là mạnh, các biểu đồ tần số của các tần số đó sẽ trông rất khác nhau (ví dụ: nhiều số không cho độ phức tạp thấp và nhiều khuyết tật cao cho độ phức tạp cao). Nó có thể trông đẹp khi bạn phủ hai biểu đồ này hoặc bạn vẽ sự khác biệt trong các khiếm khuyết dự đoán.xiyi=0,yi=1

Nếu bạn cảm thấy việc giảm của mình xuống còn 2 danh mục là quá đơn giản, bạn có thể làm tương tự cho bất kỳ tập rời rạc nào , nhưng nó không tạo ra một bản trình bày trực quan tốt nếu bạn ném nhiều hơn, giả sử, 4 biểu đồ cho khán giả của bạn cùng một lúc .xixi

Ngoài ra, nếu của bạn liên tục, bạn có thể vẽ một số lượng dự đoán (ví dụ: khuyết = 0) tùy thuộc vào đó . Có thể điều này dẫn đến một phiên bản đơn điệu đẹp phù hợp với kết quả của bạn.xixi

Btw: bạn cũng đã chạy hồi quy nhị thức âm trên dữ liệu của mình chưa? Là kết quả rất khác nhau? Nếu vậy, giả định Poisson của bạn (trung bình có điều kiện bằng phương sai có điều kiện) có thể quá hạn chế (xem "quá mức"). Đó có thể là trường hợp, ví dụ, nếu biến "khiếm khuyết" của bạn có nhiều số không.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.