Tôi có một 2396x34 double matrix
tên là y
trong đó mỗi hàng (2396) đại diện cho một tình huống riêng biệt bao gồm 34 phân đoạn thời gian liên tiếp.Tương quan của Pearson có trọng số?
Tôi cũng có một numeric[34]
có tên x
đại diện cho một tình huống duy nhất gồm 34 phân đoạn thời gian liên tiếp.
Hiện nay tôi đang tính toán tương quan giữa mỗi hàng trong y
và x
như thế này:
crs[,2] <- cor(t(y),x)
Những gì tôi cần bây giờ là để thay thế cho cor
chức năng trong tuyên bố trên với một trọng tương quan. Trọng số vector xy.wt
dài 34 phần tử sao cho trọng số khác nhau có thể được gán cho mỗi trong số 34 phân đoạn thời gian liên tiếp.
Tôi đã tìm thấy hàm Weighted Covariance Matrix
cov.wt
và nghĩ rằng nếu tôi lần đầu tiên scale
dữ liệu sẽ hoạt động giống như chức năng cor
. Trong thực tế, bạn có thể chỉ định cho hàm trả về một ma trận tương quan. Thật không may, nó không có vẻ như tôi có thể sử dụng nó trong cùng một cách vì tôi không thể cung cấp hai biến của tôi (x
và y
) một cách riêng biệt.
Có ai biết cách tôi có thể có được mối tương quan trọng theo cách tôi mô tả mà không bị mất tốc độ không?
Chỉnh sửa: Có thể một số hàm toán học có thể được áp dụng cho y
trước khi có chức năng cor
để nhận được kết quả tương tự mà tôi đang tìm kiếm. Có lẽ nếu tôi nhân mỗi phần tử với xy.wt/sum(xy.wt)
?
Chỉnh sửa # 2 Tôi tìm thấy một hàm khác corr
trong gói boot
.
corr(d, w = rep(1, nrow(d))/nrow(d))
d
A matrix with two columns corresponding to the two variables whose correlation we wish to calculate.
w
A vector of weights to be applied to each pair of observations. The default is equal weights for each pair. Normalization takes place within the function so sum(w) need not equal 1.
Đây cũng không phải là những gì tôi cần nhưng nó gần hơn.
Sửa # 3 Dưới đây là một số mã để tạo ra các kiểu dữ liệu tôi đang làm việc với:
x<-cumsum(rnorm(34))
y<- t(sapply(1:2396,function(u) cumsum(rnorm(34))))
xy.wt<-1/(34:1)
crs<-cor(t(y),x) #this works but I want to use xy.wt as weight
Tuyệt vời! Điều đó đã làm điều đó. Cảm ơn một lần nữa! Tôi nghĩ rằng các hàm được viết bằng R sẽ chậm hơn đáng kể so với các hàm được tạo thành R ... nhưng tôi đoán là không? –