Sự khác biệt của R và EViews trong ước tính AR (1)


10

Vấn đề chính là: Tôi không thể có được ước tính tham số tương tự với EViews và R.

Vì những lý do tôi không biết bản thân mình, tôi cần ước tính các tham số cho một số dữ liệu nhất định bằng EViews. Điều này được thực hiện bằng cách chọn tùy chọn NLS (bình phương nhỏ nhất phi tuyến) và sử dụng công thức sau:indep_var c dep_var ar(1)

EViews tuyên bố rằng họ ước tính tuyến tính AR (1) xử lý như: nơi u t lỗi được định nghĩa là: u t = ρ u t - 1 + ε bằng cách sử dụng một phương trình tương đương ( với một số thay đại số): Y t = ( 1 - ρ ) α + ρ Y t - 1 + β X t

Yt=α+βXt+ut
ut
ut=ρut1+ε
Hơn nữa,chủ đề này qua tại các diễn đàn EViewscho thấy NLS ước tính của họ được tạo ra bởi các thuật toán Marquardt.
Yt=(1ρ)α+ρYt1+βXtρβXt1+εt

Bây giờ, hàm go-to R để ước tính các quá trình AR (1) là arima. Tuy nhiên, có hai vấn đề:

  1. các ước tính là ước tính khả năng tối đa;
  2. ước tính đánh chặn không thực sự là ước tính đánh chặn (theo RH Shumway & DS Stoffer).

Do đó, tôi đã chuyển sang nlsLMchức năng từ gói minpack.lm. Hàm này sử dụng thuật toán Marquest để đạt được ước lượng bình phương nhỏ nhất phi tuyến, sẽ mang lại kết quả tương tự như việc thực hiện EViews (hoặc ít nhất là tương tự, ít nhất).

Bây giờ là mã. Tôi có một khung dữ liệu ( data) với một biến độc lập và biến phụ thuộc, chẳng hạn như biến được tạo bởi mã sau:

data <- data.frame(independent = abs(rnorm(48)), dependent = abs(rnorm(48)))

Để ước lượng tham số trong phương trình EViews tuyên bố để ước tính (3 thứ một về bài đăng này), tôi sử dụng các lệnh sau:

library(minpack.lm)
result <-
nlsLM(dependentB ~ ((1 - theta1) * theta2) + (theta1 * dependentA) +
                    (theta3 * independentB) - (theta1 * theta3 * independentA),
data = list(dependentB = data$dependent[2:48], dependentA = data$dependent[1:47],
   independentB = data$independent[2:48], independentA = data$independent[1:47]),
start = list(theta1 = -10, theta2 = -10, theta3 = -10)
)

Thật không may, đầu ra ước tính nlsLMkhông gần với đầu ra của EViews. Bạn có biết cái gì có thể gây ra chuyện này không? Hoặc có thể mã của tôi sai?

Cuối cùng, tôi muốn nói rằng cá nhân tôi là người dùng R - đó chính xác là lý do tại sao tôi đang cố gắng làm điều này trong R thay vì EViews. Tôi cũng rất muốn cung cấp cho bạn dữ liệu tôi đang làm việc nhưng không thể vì đó là dữ liệu bí mật.


4
Chào mừng đến với trang web, @Fael. +1 cho một câu hỏi rõ ràng. Tôi đã tự do tinh chỉnh định dạng một chút để làm cho nó sạch hơn. Hãy chắc chắn rằng nó vẫn nói những gì bạn muốn.
gung - Phục hồi Monica

Wow, đó là thực sự tốt đẹp của bạn. Cảm ơn rất nhiều, @gung!
Fael

2
Bạn cam luôn chia tỷ lệ / mã dữ liệu và đăng nó. một phép biến đổi có dạng [(y-hằng1) / hằng2] sẽ thực hiện thủ thuật.
IrishStat

BTW: Thông số của các quy trình tuyến tính có thể được ước tính thông qua OLS.
Germaniawerks

Câu trả lời:


1

ρ,β,αXt1

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.