की गणना करना मैं मैट्रिक्स में मानों की एक श्रृंखला पर चलती औसत की गणना करने के लिए आर का उपयोग करने की कोशिश कर रहा हूं। हालांकि सामान्य आर मेलिंग सूची खोज बहुत उपयोगी नहीं रही है। आर में built-in function प्रतीत नहीं होता है, मुझे चलती औसत की गणना करने की अनुमति होगी। क्या कोई पैकेज एक प्रदान करता है? या मुझे अपना खुद लिखने की ज़रूरत है?चलती औसत
चलती औसत
उत्तर
या आप बस फिल्टर का उपयोग कर यह गणना कर सकते हैं में मा, यहाँ समारोह मैं है उपयोग:
ma <- function(x,n=5){filter(x,rep(1/n,n), sides=2)}
caTools
पैकेज में तेजी से रोलिंग मतलब/न्यूनतम/अधिकतम/एसडी और कुछ अन्य कार्य हैं। मैंने केवल runmean
और runsd
के साथ काम किया है और वे आज तक बताए गए किसी भी अन्य पैकेज का सबसे तेज़ हैं।
यहां सूचीबद्ध सभी विकल्प कारणों से चल रहे औसत हैं। यदि एक गैर कारण संस्करण आवश्यक है, तो पैकेज सिग्नल में कुछ विकल्प हैं।
सिर्फ एक पैकेज का नाम देने में बहुत मददगार नहीं है - कम से कम फ़ंक्शन नाम दें ... –
आप सी ++ में लिखे गए बहुत तेज़ी से चलने वाले औसत के लिए RcppRoll
का उपयोग कर सकते हैं। बस roll_mean
फ़ंक्शन पर कॉल करें। डॉक्स here पाया जा सकता है।
अन्य वाइस, लूप के लिए यह (धीमा) चाल करना चाहिए।
ma <- function(arr, n=15){
res = arr
for(i in n:length(arr)){
res[i] = mean(arr[(i-n):i])
}
res
}
क्या आप कृपया विवरण में मुझे समझा सकते हैं, यह एल्गोरिदम कैसे काम करता है? क्योंकि मैं –
cumsum
का उपयोग पर्याप्त और कुशल होना चाहिए। मान लें कि आप एक वेक्टर एक्स है और आप n संख्या
cx <- c(0,cumsum(x))
rsum <- (cx[(n+1):length(cx)] - cx[1:(length(cx) - n)])/n
विचार को समझ नहीं पा रहा हूं इस समाधान के लिए एक नकारात्मक पक्ष यह है कि यह मिसालों को संभाल नहीं सकता है: 'cumsum (c (1: 3, NA, 1: 3)) ' – Jthorpe
के चल रहे योग तथ्य RcppRoll
में चाहते हैं बहुत अच्छा है।
कोड cantdutchthis द्वारा पोस्ट की खिड़की को चौथी लाइन में सही किया जाना चाहिए जा तय:
ma <- function(arr, n=15){
res = arr
for(i in n:length(arr)){
res[i] = mean(arr[(i-n+1):i])
}
res
}
एक और तरीका है, जो missings संभालती है, here दिया जाता है।
एक तीसरा रास्ता, आंशिक औसत या नहीं की गणना करने के cantdutchthis कोड में सुधार, इस प्रकार है:
ma <- function(x, n=2,parcial=TRUE){
res = x #set the first values
if (parcial==TRUE){
for(i in 1:length(x)){
t<-max(i-n+1,1)
res[i] = mean(x[t:i])
}
res
}else{
for(i in 1:length(x)){
t<-max(i-n+1,1)
res[i] = mean(x[t:i])
}
res[-c(seq(1,n-1,1))] #remove the n-1 first,i.e., res[c(-3,-4,...)]
}
}
आदेश cantdutchthis और Rodrigo Remedio के जवाब के पूरक करने के लिए;
moving_fun <- function(x, w, FUN, ...) {
# x: a double vector
# w: the length of the window, i.e., the section of the vector selected to apply FUN
# FUN: a function that takes a vector and return a summarize value, e.g., mean, sum, etc.
# Given a double type vector apply a FUN over a moving window from left to the right,
# when a window boundary is not a legal section, i.e. lower_bound and i (upper bound)
# are not contained in the length of the vector, return a NA_real_
if (w < 1) {
stop("The length of the window 'w' must be greater than 0")
}
output <- x
for (i in 1:length(x)) {
# plus 1 because the index is inclusive with the upper_bound 'i'
lower_bound <- i - w + 1
if (lower_bound < 1) {
output[i] <- NA_real_
} else {
output[i] <- FUN(x[lower_bound:i, ...])
}
}
output
}
# example
v <- seq(1:10)
# compute a MA(2)
moving_fun(v, 2, mean)
# compute moving sum of two periods
moving_fun(v, 2, sum)
- 1. दो तरफा चलती औसत?
- 2. मस्तिष्क टीज़र - चलती औसत
- 3. कंप्यूटिंग समय-भारित चलती औसत
- 4. कैसे मैं एक भारित चलती औसत पांडा
- 5. आरएक्स: अनुक्रम का राज्यगत परिवर्तन, उदा। घातीय चलती औसत
- 6. न्यूनतम, अधिकतम, औसत, औसत
- 7. औसत
- 8. औसत
- 9. औसत
- 10. MySQL: औसत के साथ औसत
- 11. चलती हलकों
- 12. चलती मान
- 13. MySQL औसत समय कॉलम पर औसत?
- 14. औसत मूल्य
- 15. औसत सूची
- 16. औसत विभाजन
- 17. एंड्रॉइड एक्सेलेरोमीटर चलती गेंद
- 18. WPF अक्षम विंडो चलती
- 19. चलती दिनांक विंडो
- 20. सीएसएस चलती सही
- 21. चलती एसडीएल वीडियो सतह
- 22. Git: चलती शाखा सिर
- 23. (परिभाषित (औसत ....)) लिस्प
- 24. मानचित्र में कंप्यूटिंग औसत
- 25. LINQ औसत() विधि
- 26. औसत प्रति कॉल (सी #)
- 27. टी-एसक्यूएल समय औसत
- 28. सी # Linq औसत
- 29. आर में बॉक्सप्लॉट औसत
- 30. औसत मैट्रिक्स कुशलतापूर्वक
मुझे यह इंगित करना चाहिए कि "पक्ष = 2" कई लोगों के उपयोग मामलों में एक महत्वपूर्ण विकल्प हो सकता है, जिन्हें वे अनदेखा नहीं करना चाहते हैं। यदि आप अपने चलती औसत में केवल पिछली जानकारी चाहते हैं, तो आपको पक्ष = 1 का उपयोग करना चाहिए। – evanrsparks
कुछ साल बाद लेकिन dplyr में अब एक फ़िल्टर फ़ंक्शन है, यदि आपके पास इस पैकेज को लोड किया गया है तो 'आँकड़े :: फ़िल्टर' – blmoore
' पक्ष = 2' चिड़ियाघर :: रोलमेन या आरसीपीआर रोल :: रोल_मेन के लिए संरेखण = "केंद्र" के बराबर है । 'पक्ष = 1'" दाएं "संरेखण के बराबर है।मुझे "बाएं" संरेखण करने या "आंशिक" डेटा (2 या अधिक मानों) के साथ गणना करने का कोई तरीका नहीं दिख रहा है? –