Cách dự đoán một chuỗi thời gian từ một chuỗi thời gian khác, nếu chúng có liên quan


14

Tôi đã cố gắng giải quyết vấn đề này trong hơn một năm mà không có nhiều tiến bộ. Đây là một phần của dự án nghiên cứu tôi đang thực hiện, nhưng tôi sẽ minh họa nó bằng một ví dụ câu chuyện tôi đã tạo ra, bởi vì miền thực tế của vấn đề hơi khó hiểu (theo dõi bằng mắt).

Bạn là một chiếc máy bay theo dõi một con tàu địch đi qua đại dương, vì vậy bạn đã thu thập được một loạt tọa độ (x, y, thời gian) của con tàu. Bạn biết rằng một chiếc tàu ngầm ẩn đi cùng với con tàu để bảo vệ nó, nhưng trong khi có mối tương quan giữa các vị trí của chúng, thì chiếc tàu ngầm thường rời khỏi con tàu, vì vậy trong khi nó thường ở gần nó, nó cũng có thể ở phía bên kia của thế giới thỉnh thoảng. Bạn muốn dự đoán đường đi của tàu ngầm, nhưng thật không may, nó bị ẩn khỏi bạn.

Nhưng một tháng vào tháng Tư, bạn nhận thấy tàu ngầm quên giấu mình, vì vậy bạn có một loạt tọa độ cho cả tàu ngầm và tàu trong suốt 1.000 chuyến đi. Sử dụng dữ liệu này, bạn muốn xây dựng một mô hình để dự đoán đường đi của tàu ngầm bị che khuất chỉ bằng chuyển động của con tàu. Đường cơ sở ngây thơ sẽ là "đoán vị trí tàu ngầm =" vị trí hiện tại của tàu "nhưng từ dữ liệu tháng 4 nơi tàu ngầm có thể nhìn thấy, bạn nhận thấy có xu hướng tàu ngầm đi trước tàu một chút, vì vậy" vị trí tàu ngầm đoán = vị trí của tàu trong 1 phút "là một ước tính thậm chí còn tốt hơn. Hơn nữa, dữ liệu tháng 4 cho thấy rằng khi con tàu dừng lại trong nước trong một thời gian dài, tàu ngầm có khả năng sẽ đi xa trong vùng biển ven bờ. tất nhiên.

Làm thế nào bạn sẽ xây dựng mô hình này, lấy dữ liệu tháng tư làm dữ liệu huấn luyện, để dự đoán đường đi của tàu ngầm? Giải pháp hiện tại của tôi là hồi quy tuyến tính đặc biệt trong đó các yếu tố là "thời gian chuyến đi", "tọa độ x của tàu", "tàu không hoạt động trong 1 ngày", v.v. và sau đó R tìm ra các trọng số và thực hiện xác nhận chéo . Nhưng tôi thực sự thích cách tạo ra các yếu tố này tự động từ dữ liệu tháng tư. Ngoài ra, một mô hình sử dụng trình tự hoặc thời gian sẽ rất tốt, vì hồi quy tuyến tính không và tôi nghĩ nó có liên quan.

Cảm ơn đã đọc qua tất cả điều này và tôi sẽ vui lòng làm rõ bất cứ điều gì.


5
Một cách có thể giúp xây dựng mô hình của bạn dễ dàng hơn là sử dụng tọa độ cực thay vì mô đun cartesian. Nếu bạn đặt gốc bằng với tàu địch, và có tàu phải đối mặt với phía bắc luôn, sau đó bạn có thể nói một cái gì đó giống như vị trí của các phụ lúc ( r ( t j ) , θ ( t j ) ) với r phúc khoảng cách và θ góc phúc. Bây giờ chúng tôi mong đợi | θ | phải nhỏ vì phụ thường ở phía trước tàu và r nên nhỏ nhưng không gần bằng 0 (nếu không thì phụ đâm vào tàu). Bạn cũng cótj(r(tj),θ(tj))rθ|θ|r nhận được lớn cho tàu tạm dừng. r
xác suất

2
Tôi sẽ đề xuất một cái gì đó tương tự như xác suất - bạn cần một biến là khoảng cách giữa tàu và tàu phụ. Điều tốt đẹp về tọa độ cực là thông tin này, cũng như tính định hướng, cũng được bao gồm. Sau đó, bạn có thể thử hồi quy tuyến tính trên biến mới này.
người học

Cảm ơn những lời đề nghị. Một điều tôi đang vật lộn với tọa độ cực là nếu tôi thử và dự đoán biến góc, nó "vòng quanh" nên 0 == 360, điều này không có ý nghĩa trong quan điểm dự đoán. Bất kỳ đề nghị làm thế nào để đối phó với nó?
Tàu chở hàng và tàu ngầm

@probabilityislogic Sau khi nghĩ về điều này nhiều hơn một chút, sẽ có ý nghĩa khi sử dụng tọa độ cực nhưng sử dụng sin (theta) thay vì theta như biến để dự đoán? Mặc dù sau đó nó sẽ hoạt động giống như một delta_y.
Tàu chở hàng và tàu ngầm

Về việc sử dụng tọa độ cực, bạn có thể muốn đọc về Thống kê hướng .
cá ổn định

Câu trả lời:


3

Đây là một cách tiếp cận không sử dụng bất kỳ thông tin "theo ngữ cảnh" nào, nghĩa là nó không tính đến thực tế là "một phụ đang đi theo một con tàu". Mặt khác, thật dễ dàng để bắt đầu với:

Biểu thị bởi

xsub(t),ysub(t)

xship(t),yship(t)

t

xdist(t)=xship(t)xsub(t)

ydist(t)=yship(t)ysub(t)

Đề nghị của tôi là bạn dự đoán từng cái riêng biệt (bạn có thể buộc chúng lại với nhau sau này).

x

Sau đó

xdist(t)=100±10wiggle(t)

wiggle

xywiggleμσxdist

xdist(t)=μ+σWx(t)

Wx(t)xdist

Một chiến lược khác mà mọi người sử dụng (mà tôi nghĩ sẽ làm việc cho bạn) là họ chia chuỗi của họ thành

Polynomial base + Cyclic pattern + Bounded randomness

Trong trường hợp tàu ngầm và tàu, phần đa thức có thể sẽ không đổi và phần tuần hoàn là một tổng của sin và cosin (từ sóng của đại dương ...). Đây có thể không phải là trường hợp để theo dõi bằng mắt.

Có những công cụ có thể tìm ra điều này cho bạn. Đây là hai cái mà tôi biết:

  1. DTREG (giấy phép đánh giá 30 ngày)
  2. Thuật toán Microsoft Time Series là một phần của sản phẩm SQL Server của họ. Tôi hiện đang sử dụng phiên bản đánh giá 180 ngày của họ, nó rất dễ sử dụng.

Dưới đây là ảnh chụp màn hình từ công cụ SQL Server (phần chấm là dự đoán):

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

Một thuật toán họ sử dụng được gọi là ARIMA. Muốn tìm hiểu cách thức hoạt động của nó, tôi đã thực hiện một số Google và tìm thấy cuốn sách này: Khóa học đầu tiên về chuỗi thời gian (và đừng lo lắng, bạn không cần phải có SAS để theo dõi. Tôi không.). Nó rất dễ đọc.

Bạn không cần phải biết ARIMA hoạt động như thế nào để sử dụng các công cụ này, nhưng tôi nghĩ sẽ luôn dễ dàng hơn nếu bạn có ngữ cảnh, vì có "tham số mô hình" được đặt, v.v.


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.