Hồi quy đơn điệu mạnh mẽ trong R


8

Tôi có bảng sau R

df <- structure(list(x = structure(c(12458, 12633, 12692, 12830, 13369, 
13455, 13458, 13515), class = "Date"), y = c(6080, 6949, 7076, 
7818, 0, 0, 10765, 11153)), .Names = c("x", "y"), row.names = c("1", 
"2", "3", "4", "5", "6", "8", "9"), class = "data.frame")

> df
           x     y
1 2004-02-10  6080
2 2004-08-03  6949
3 2004-10-01  7076
4 2005-02-16  7818
5 2006-08-09     0
6 2006-11-03     0
8 2006-11-06 10765
9 2007-01-02 11153

Tôi có thể vẽ các điểm và khớp tuyến tính của Tukey ( linehàm trong R) thông qua

plot(data=df,  y ~ x)
lines(df$x, line(df$x, df$y)$fitted.values)

sản xuất:

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

Tất cả đều tốt. Biểu đồ trên cho thấy các giá trị tiêu thụ năng lượng, dự kiến ​​chỉ tăng, vì vậy tôi hài lòng với sự phù hợp khi không đi qua hai điểm đó (sau đó sẽ được gắn cờ là ngoại lệ).

Tuy nhiên, "chỉ" xóa điểm cuối cùng và thay thế lại

df <- df[-nrow(df),]
plot(data=df,  y ~ x)
lines(df$x, line(df$x, df$
)$fitted.values)

Kết quả hoàn toàn khác nhau.

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

Nhu cầu của tôi là có kết quả lý tưởng giống nhau trong cả hai kịch bản trên. R dường như không sẵn sàng sử dụng hàm cho hồi quy đơn điệu, bên cạnh isoregđó là hằng số piecewise.

BIÊN TẬP:

Như @Glen_b đã chỉ ra tỷ lệ kích thước ngoài mẫu là quá lớn (~ 28%) cho kỹ thuật hồi quy được sử dụng ở trên. Tuy nhiên, tôi tin rằng có thể có một cái gì đó khác để xem xét. Nếu tôi thêm các điểm ở đầu bảng:

df <- rbind(data.frame(x=c(as.Date("2003-10-01"), as.Date("2003-12-01")), y=c(5253,5853)), df)

và tính toán lại như trên plot(data=df, y ~ x); lines(df$x, line(df$x,df$y)$fitted.values)tôi nhận được kết quả tương tự, với tỷ lệ ~ 22%

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


Bạn có thể giải thích cho chúng tôi ý của bạn về "Tukey's line" không? (Anh ấy đã sử dụng các phương pháp phù hợp với dòng kháng khác nhau.)
whuber

@whuber oh tôi hiểu rồi, xin lỗi. Là phương pháp thực hiện trong hàm R line. Bạn có thể có thêm thông tin chi tiết bằng cách gõ ?linevào bảng điều khiển r
Michele

Cảm ơn, nhưng tôi e rằng điều đó không tốt chút nào: sự giúp đỡ chỉ đề cập đến cuốn sách EDA năm 1977 của Tukey - mà tôi khá quen thuộc và trong đó tôi có thể xác định nhiều phương pháp phù hợp với dòng - và mã chỉ đơn giản gọi ra C chương trình. Có lẽ chúng ta có thể tiến bộ nếu bạn có thể giải thích rõ ràng hơn những gì bạn đang cố gắng đạt được. Làm thế nào bạn mô tả (nói chung) sự khác biệt giữa hai "kịch bản" của bạn? Tại sao bạn thích giải pháp đầu tiên?
whuber

1
(+1) "Chỉ nên tăng" là chìa khóa: bạn đang hỏi về cách thực hiện hồi quy đơn điệu (mạnh mẽ) . Nó sẽ giúp nhấn mạnh điểm đó nhiều hơn trong câu hỏi của bạn: bạn sẽ nhận được câu trả lời tốt hơn.
whuber

1
@Michele Có lẽ bạn có thể xem qua nnlsgói (bình phương tối thiểu không âm). Điều đó sẽ giúp bạn với các hạn chế tích cực, nhưng không phải với các ngoại lệ.
Matteo Fasiolo

Câu trả lời:


10

Tôi lưu ý rằng sau khi bạn xóa điểm cuối cùng, bạn chỉ có bảy giá trị trong đó hai (28,6%!) Là ngoại lệ. Nhiều phương thức mạnh mẽ không có điểm phân tích khá cao (ví dụ: hồi quy Theil bị phá vỡ ngay tại thời điểm đó với n = 7, mặc dù ở mức lớn, nó sẽ lên tới 29,3%), nhưng nếu bạn phải có sự cố cao như vậy nó có thể quản lý rất nhiều ngoại lệ, bạn cần chọn một số phương pháp thực sự có điểm phân tích cao hơn.n

Có một số có sẵn trong R; các rlmhàm trong MASS(M-ước lượng) nên đối phó với điều này đặc biệt trường hợp (nó có sự cố cao chống lại y-giá trị ngoại biên), nhưng nó sẽ không có vững mạnh để có ảnh hưởng giá trị ngoại biên.

Chức năng lqstrong cùng một gói sẽ xử lý các ngoại lệ có ảnh hưởng hoặc có một số gói tốt để hồi quy mạnh mẽ trên CRAN.

Bạn có thể thấy Hồi quy mạnh mẽ của Fox và Weisberg trong R ( pdf ) là một tài nguyên hữu ích trên một số khái niệm hồi quy mạnh mẽ.

Tất cả điều này chỉ là đối phó với hồi quy tuyến tính mạnh mẽ và đang bỏ qua các ràng buộc đơn điệu, nhưng tôi tưởng tượng rằng nó sẽ ít gặp vấn đề hơn nếu bạn giải quyết vấn đề sự cố. Nếu bạn vẫn nhận được độ dốc âm sau khi thực hiện hồi quy mạnh mẽ phân tích cao, nhưng muốn đường không tăng, bạn sẽ đặt đường có độ dốc bằng 0 - tức là chọn ước tính vị trí mạnh và đặt đường không đổi ở đó. (Nếu bạn muốn hồi quy phi tuyến mạnh mẽ nhưng đơn điệu, bạn nên đề cập cụ thể.)


Đáp lại bản chỉnh sửa:

Bạn dường như đã giải thích ví dụ của tôi về hồi quy Theil như là một nhận xét về điểm đổ vỡ của line. Nó không phải là; nó chỉ đơn giản là ví dụ đầu tiên của một dòng mạnh mẽ đến với tôi đã bị phá vỡ ở một tỷ lệ ô nhiễm nhỏ hơn.

Như whuber đã giải thích, chúng tôi không thể dễ dàng biết được dòng nào đang được sử dụng line. Lý do tại sao linebị phá vỡ vì nó phụ thuộc vào công cụ ước tính mạnh mẽ nào mà Tukey đề cập và linecó thể sử dụng.

Ví dụ: nếu đó là đường phân chia dữ liệu thành ba nhóm và đối với độ dốc, hãy sử dụng độ dốc của đường nối với các đường trung tuyến của hai phần ba bên ngoài '(đôi khi được gọi là đường kháng ba nhóm hoặc đường trung tuyến ), sau đó điểm phân tích của nó là không có triệu chứng 1/6 và hành vi của nó trong các mẫu nhỏ phụ thuộc vào chính xác cách các điểm được phân bổ cho các nhóm khi không phải là bội số của 3.n

Xin lưu ý rằng tôi không nói rằng đó dòng kháng ba nhóm được triển khai trong line- thực tế tôi nghĩ rằng nó không phải - nhưng đơn giản là bất cứ điều gì họ đã thực hiện linecũng có thể có một điểm phá vỡ để dòng kết quả không thể xử lý 2 điểm lẻ trong số 8, nếu chúng ở vị trí 'đúng'.

Trong thực tế, dòng được triển khai linecó một số hành vi kỳ quái - kỳ lạ đến mức tôi tự hỏi liệu nó có thể có lỗi không - nếu bạn làm điều này:

 x = y = 1:9 #all points lie on a line with slope 1
 plot(x,y)
 abline(line(x,y),col=2)

Khi đó lineđường có độ dốc 1,2:

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

Ngoài đỉnh đầu, tôi không nhớ bất kỳ dòng nào của Tukey có hành vi đó.


Đã thêm nhiều sau này: Tôi đã báo cáo vấn đề này cho các nhà phát triển một thời gian trước; phải mất một vài bản phát hành trước khi nó được sửa nhưng bây giờ line(hóa ra là một dạng của ba nhóm của Tukey) không còn có lỗi này nữa; bây giờ nó dường như hoạt động như tôi mong đợi trong mọi trường hợp tôi đã thử.


Hi cảm ơn vì tất cả điều đó. Hiện tại nhu cầu của tôi là hồi quy đơn điệu tuyến tính . Điểm phân tích là rất thú vị và tôi chắc chắn nên xem xét. Tuy nhiên, bạn có thể vui lòng nhận xét biểu đồ thứ ba tôi vừa thêm không? Tôi thêm hai điểm khi bắt đầu sẽ đưa tỷ lệ lên 22%
Michele

Nhân tiện lqslàm công việc! Vì vậy, tôi chấp nhận câu trả lời của bạn :-) cảm ơn rất nhiều. Nếu bạn vẫn có thể giúp tôi hiểu được biểu đồ thứ ba sẽ rất tuyệt! Chúc mừng
Michele

1
Tôi đã thực hiện một chỉnh sửa mà tôi hy vọng làm rõ mọi thứ một chút. Nếu tôi bỏ lỡ điều gì, hãy cho tôi biết.
Glen_b -Reinstate Monica

Cảm ơn nhiều. Tôi không phải là một nhà thống kê (dễ nói), và bạn đã rất hữu ích! Tôi nghĩ lqsbây giờ tôi sẽ gắn bó . Cảm ơn một lần nữa
Michele
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.