विचरण की गणना के लिए एल्गोरिदम

विचरण की गणना के लिए कलन विधि संगणनात्मक सांख्यिकी में एक प्रमुख भूमिका निभाते हैं। इस समस्या के लिए अच्छे कलन विधि के प्रतिरूप में एक महत्वपूर्ण कठिनाई यह है कि विचरण के सूत्रों में वर्गों का योग सम्मिलित हो सकता है, जिससे बड़े मूल्यों से निपटने के समय संख्यात्मक अस्थिरता के साथ-साथ अंकगणितीय अतिप्रवाह भी हो सकता है।

अनुभवहीन कलन विधि
आकार N की संपूर्ण सांख्यिकीय जनसंख्या के विचरण की गणना के लिए एक सूत्र है:


 * $$\sigma^2 = \overline{(x^2)} - \bar x^2 = \frac {\sum_{i=1}^N x_i^2 - (\sum_{i=1}^N x_i)^2/N}{N}.$$

n अवलोकनों के एक सीमित सांख्यिकीय प्रतिरूप से जनसंख्या भिन्नता के अनुमानक पूर्वाग्रह अनुमान की गणना करने के लिए बेसेल के सुधार का उपयोग करते हुए, सूत्र है:


 * $$s^2 = \left(\frac {\sum_{i=1}^n x_i^2} n - \left( \frac {\sum_{i=1}^n x_i} n \right)^2\right) \cdot \frac {n}{n-1}. $$

इसलिए, अनुमानित विचरण की गणना करने के लिए एक सरल कलन विधि निम्नलिखित द्वारा दिया गया है:




 * Let $n ← 0, Sum ← 0, SumSq ← 0$
 * For each datum $x$:

इस कलन विधि को एक सीमित जनसंख्या के विचरण की गणना करने के लिए सरलता से अनुकूलित किया जा सकता है: बस अंतिम पंक्ति पर n − 1 के अतिरिक्त n से विभाजित करें।

चूँकि $n ← n + 1$ और $Sum ← Sum + x$ समान संख्याएं हो सकती हैं, आपत्तिजनक निरस्तीकरण के कारण परिणाम की सटीकता की गणना करने के लिए उपयोग किए जाने वाले अस्थायी परिकलन बिन्दु की अंतर्निहित सटीकता से बहुत कम हो सकती है। इस प्रकार इस कलन विधि का प्रयोग व्यवहार में नहीं किया जाना चाहिए, और कई वैकल्पिक, संख्यात्मक रूप से स्थिर, कलन विधि प्रस्तावित किए गए हैं। यह विशेष रूप से अनैतिक है यदि मानक विचलन माध्य के सापेक्ष छोटा है।

स्थानांतरित डेटा की गणना
स्थिति पैरामीटर में परिवर्तन के संबंध में भिन्नता अपरिवर्तनीय है, एक गुण जिसका उपयोग इस सूत्र में विनाशकारी निरस्तीकरण से बचने के लिए किया जा सकता है।


 * $$\operatorname{Var}(X-K)=\operatorname{Var}(X).$$

किसी भी स्थिर संख्या $$K$$ के साथ, नया सूत्र बनता है


 * $$\sigma^2 = \frac {\sum_{i=1}^n (x_i-K)^2 - (\sum_{i=1}^n (x_i-K))^2/n}{n-1}. $$

यदि हम $$K$$ को निकटतम मान के पास चुनते हैं तो परिणाम अधिक सटीक होगा परंतु केवल प्रतिरूपों की सीमा के अंदर एक मान चुनने से वांछित स्थिरता की गारंटी होगी। यदि मान $$(x_i - K)$$ छोटे हैं तो इसके वर्गों के योग में कोई समस्या नहीं है, इसके विपरीत, यदि वे बड़े हैं तो इसका अर्थ यह है कि भिन्नता भी बड़ी है। किसी भी स्थिति में सूत्र में दूसरा पद सदैव पहले से छोटा होता है इसलिए कोई निरस्तीकरण नहीं हो सकता है। यदि पहला प्रतिरूप वैल्यू के रूप में K चुना जाता है, तो आप पायथन प्रोग्रामिंग भाषा में इस कलन विधि को इस तरह से लिख सकते हैं: यह सूत्र वृद्धिशील गणना को भी सुविधाजनक बनाता है जिसे इस प्रकार व्यक्त किया जा सकता है

दो-पास कलन विधि
एक वैकल्पिक दृष्टिकोण, विचरण के लिए एक अलग सूत्र का उपयोग करते हुए, पहले प्रतिरूप माध्य की गणना करता है,
 * $$\bar x = \frac {\sum_{j=1}^n x_j} n,$$

और फिर माध्य से अंतर के वर्गों के योग की गणना करता है,
 * $$\text{sample variance} = s^2 = \dfrac {\sum_{i=1}^n (x_i - \bar x)^2}{n-1}, $$

जहां s मानक विचलन है यह निम्नलिखित कोड द्वारा दिया गया है:

यदि n छोटा है तो यह कलन विधि संख्यात्मक रूप से स्थिर है। यद्यपि, इन दोनों सरल कलन विधि के परिणाम डेटा के क्रम पर अत्यधिक निर्भर हो सकते हैं और योग, के संचय में बार-बार चारों ओर से त्रुटि के कारण बहुत बड़े डेटा समुच्चय के लिए गलत परिणाम दे सकते हैं। इस त्रुटि से कुछ हद तक निपटने के लिए क्षतिपूर्ति योग जैसी तकनीकों का उपयोग किया जा सकता है।

वेलफ़ोर्ड का ऑनलाइन कलन विधि
प्रत्येक मान का निरीक्षण करते हुए, एक-पास एल्गोरिथ्म में भिन्नता की गणना करने में सक्षम होना अक्सर उपयोगी होता है $$x_i$$ केवल एकबार; उदाहरण के लिए, जब सभी मूल्यों को रखने के लिए पर्याप्त भंडारण के बिना डेटा एकत्र किया जा रहा हो, या जब मेमोरी एक्सेस की लागत गणना पर हावी हो। ऐसे ऑनलाइन कलन विधिके लिए, मात्राओं के बीच एक पुनरावृत्ति संबंध की आवश्यकता होती है जिससे आवश्यक आंकड़ों की गणना संख्यात्मक रूप से स्थिर तरीके से की जा सकती है।

अतिरिक्त तत्व x के लिए अनुक्रम के माध्य और (अनुमानित) विचरण को अद्यतन करने के लिए निम्नलिखित सूत्रों का उपयोग किया जा सकता हैn. यहाँ, $\overline{x}_n = \frac{1}{n} \sum_{i=1}^n x_i $ पहले n प्रतिरूपों  के प्रतिरूप  माध्य को दर्शाता है $$(x_1,\dots,x_n)$$, $\sigma^2_n = \frac{1}{n} \sum_{i=1}^n \left(x_i - \overline{x}_n \right)^2$  उनका वेरिएंस#बायस्ड_सैंपल_वेरिएंस, और $s^2_n = \frac{1}{n - 1} \sum_{i=1}^n \left(x_i - \overline{x}_n \right)^2$  उनका भिन्नता#निष्पक्ष_प्रतिरूप _भिन्नता।


 * $$\bar x_n = \frac{(n-1) \, \bar x_{n-1} + x_n}{n} = \bar x_{n-1} + \frac{x_n - \bar x_{n-1}}{n} $$
 * $$\sigma^2_n = \frac{(n-1) \, \sigma^2_{n-1} + (x_n - \bar x_{n-1})(x_n - \bar x_n)}{n} = \sigma^2_{n-1} + \frac{(x_n - \bar x_{n-1})(x_n - \bar x_n) - \sigma^2_{n-1}}{n}.$$
 * $$s^2_n = \frac{n-2}{n-1} \, s^2_{n-1} + \frac{(x_n - \bar x_{n-1})^2}{n} = s^2_{n-1} + \frac{(x_n - \bar x_{n-1})^2}{n} - \frac{s^2_{n-1}}{n-1}, \quad n>1 $$

ये सूत्र संख्यात्मक अस्थिरता से ग्रस्त हैं, क्योंकि वे बार-बार एक बड़ी संख्या से एक छोटी संख्या घटाते हैं जो n के साथ मापी जाती है। अद्यतन करने के लिए एक बेहतर मात्रा वर्तमान माध्य से अंतर के वर्गों का योग है, $\sum_{i=1}^n (x_i - \bar x_n)^2$ , यहाँ दर्शाया गया है $$M_{2,n}$$:


 * $$\begin{align}

M_{2,n} & = M_{2,n-1} + (x_n - \bar x_{n-1})(x_n - \bar x_n) \\[4pt] \sigma^2_n & = \frac{M_{2,n}}{n} \\[4pt] s^2_n & = \frac{M_{2,n}}{n-1} \end{align}$$ यह कलन विधि वेलफ़ोर्ड द्वारा पाया गया था, और इसका गहन विश्लेषण किया गया है। निरूपित करना भी आम बात है $$M_k = \bar x_k$$ और $$S_k = M_{2,k}$$. वेलफ़ोर्ड के कलन विधिके लिए पायथन कार्यान्वयन का एक उदाहरण नीचे दिया गया है।

इस कलन विधिमें विनाशकारी निरस्तीकरण के कारण परिशुद्धता के नुकसान की बहुत कम संभावना है, लेकिन लूप के अंदर विभाजन ऑपरेशन के कारण यह उतना कुशल नहीं हो सकता है। विचरण की गणना के लिए विशेष रूप से मजबूत दो-पास  कलन विधिके लिए, कोई पहले माध्य के अनुमान की गणना और घटा सकता है, और फिर अवशेषों पर इस  कलन विधिका उपयोग कर सकता है।

नीचे दिया गया #समानांतर कलन विधिदर्शाता है कि ऑनलाइन गणना किए गए आँकड़ों के कई सेटों को कैसे मर्ज किया जाए।

भारित वृद्धिशील एल्गोरिथ्म
असमान प्रतिरूप वजन को संभालने के लिए  कलन विधिको बढ़ाया जा सकता है, सरल काउंटर एन को अब तक देखे गए वजन के योग के साथ बदल दिया जा सकता है। पश्चिम (1979) इस वृद्धिशील कंप्यूटिंग का सुझाव देता है:

समानांतर एल्गोरिदम
चान एट अल. ध्यान दें कि ऊपर वर्णित वेलफ़ोर्ड का ऑनलाइन कलन विधिएक  कलन विधिका एक विशेष मामला है जो मनमाने सेटों के संयोजन के लिए काम करता है $$A$$ और $$B$$:
 * $$\begin{align}

n_{AB} & = n_A + n_B \\ \delta & = \bar x_B - \bar x_A \\ \bar x_{AB} & = \bar x_A + \delta\cdot\frac{n_B}{n_{AB}} \\ M_{2,AB} & = M_{2,A} + M_{2,B} + \delta^2\cdot\frac{n_A n_B}{n_{AB}} \\ \end{align}$$. यह तब उपयोगी हो सकता है जब, उदाहरण के लिए, कई प्रसंस्करण इकाइयों को इनपुट के अलग-अलग हिस्सों को सौंपा जा सकता है।

माध्य का अनुमान लगाने की चैन की विधि संख्यात्मक रूप से अस्थिर होती है $$n_A \approx n_B$$ और दोनों बड़े हैं, क्योंकि इसमें संख्यात्मक त्रुटि है $$\delta = \bar x_B - \bar x_A$$ उस तरह से कम नहीं किया गया है जैसा कि इसमें है $$n_B = 1$$ मामला। ऐसे मामलों में, प्राथमिकता दें $\bar x_{AB} = \frac{n_A \bar x_A + n_B \bar x_B}{n_{AB}}$. इसे उन्नत वेक्टर एक्सटेंशन, ग्राफ़िक्स प्रोसेसिंग युनिट और कंप्यूटर क्लस्टर और सहप्रसरण के साथ समानांतरीकरण की अनुमति देने के लिए सामान्यीकृत किया जा सकता है।

उदाहरण
मान लें कि सभी फ़्लोटिंग पॉइंट ऑपरेशन मानक IEEE 754#डबल-प्रिसिजन 64 बिट|IEEE 754 डबल-प्रिसिजन अंकगणित का उपयोग करते हैं। अनंत जनसंख्या से प्रतिरूप  (4, 7, 13, 16) पर विचार करें। इस प्रतिरूप   के आधार पर, अनुमानित जनसंख्या माध्य 10 है, और जनसंख्या भिन्नता का निष्पक्ष अनुमान 30 है। भोले  कलन विधिऔर दो-पास  कलन विधिदोनों इन मूल्यों की सही गणना करते हैं।

आगे प्रतिरूप  पर विचार करें (108 + 4, 108 + 7, 108 + 13, 108 + 16), जो पहले प्रतिरूप   के समान अनुमानित भिन्नता को जन्म देता है। दो-पास एल्गोरिथ्म इस विचरण अनुमान की सही गणना करता है, लेकिन भोला एल्गोरिथ्म 30 के बजाय 29.33333333333332 लौटाता है।

हालाँकि परिशुद्धता की यह हानि सहनीय हो सकती है और इसे भोले-भाले कलन विधिकी एक छोटी सी खामी के रूप में देखा जा सकता है, लेकिन ऑफसेट को और बढ़ाने से त्रुटि भयावह हो जाती है। प्रतिरूप   पर विचार करें (109 + 4, 109 + 7, 109 + 13, 109 + 16). फिर से 30 की अनुमानित जनसंख्या भिन्नता की गणना दो-पास कलन विधिद्वारा सही ढंग से की जाती है, लेकिन भोला  कलन विधिअब इसे −170.666666666666666 के रूप में गणना करता है। यह भोले-भाले कलन विधि के साथ एक गंभीर समस्या है और कलन विधि के अंतिम चरण में दो समान संख्याओं के घटाव में भयावह निरस्तीकरण के कारण है।

उच्च-क्रम आँकड़े
टेरीबेरी तीसरे और चौथे केंद्रीय क्षणों की गणना के लिए चान के सूत्रों का विस्तार करता है, उदाहरण के लिए तिरछापन और कुकुदता का अनुमान लगाते समय आवश्यक:

\begin{align} M_{3,X} = M_{3,A} + M_{3,B} & {} + \delta^3\frac{n_A n_B (n_A - n_B)}{n_X^2} + 3\delta\frac{n_AM_{2,B} - n_BM_{2,A}}{n_X} \\[6pt] M_{4,X} = M_{4,A} + M_{4,B} & {} + \delta^4\frac{n_A n_B \left(n_A^2 - n_A n_B + n_B^2\right)}{n_X^3} \\[6pt] & {} + 6\delta^2\frac{n_A^2 M_{2,B} + n_B^2 M_{2,A}}{n_X^2} + 4\delta\frac{n_AM_{3,B} - n_BM_{3,A}}{n_X} \end{align}$$ यहां ही $$M_k$$ फिर से माध्य से अंतर की शक्तियों का योग है $\sum(x - \overline{x})^k$, देना

\begin{align} & \text{skewness} = g_1 = \frac{\sqrt{n} M_3}{M_2^{3/2}}, \\[4pt] & \text{kurtosis} = g_2 = \frac{n M_4}{M_2^2}-3. \end{align} $$ वृद्धिशील मामले के लिए (अर्थात्, $$B = \{x\}$$), इससे यह सरल हो जाता है:

\begin{align} \delta & = x - m \\[5pt] m' & = m + \frac{\delta}{n} \\[5pt] M_2' & = M_2 + \delta^2 \frac{n-1}{n} \\[5pt] M_3' & = M_3 + \delta^3 \frac{ (n - 1) (n - 2)}{n^2} - \frac{3\delta M_2}{n} \\[5pt] M_4' & = M_4 + \frac{\delta^4 (n - 1) (n^2 - 3n + 3)}{n^3} + \frac{6\delta^2 M_2}{n^2} - \frac{4\delta M_3}{n} \end{align} $$ मूल्य को संरक्षित करके $$\delta / n$$, केवल एक डिवीजन ऑपरेशन की आवश्यकता है और उच्च-क्रम के आँकड़ों की गणना थोड़ी वृद्धिशील लागत के लिए की जा सकती है।

जैसा कि वर्णित है, कर्टोसिस के लिए लागू ऑनलाइन कलन विधिका एक उदाहरण है: पेबे वृद्धिशील और जोड़ीदार मामलों के लिए, और बाद में पेबाओ एट अल के लिए, इन परिणामों को मनमाने ढंग से क्रम वाले केंद्रीय क्षणों तक विस्तारित करता है। भारित और मिश्रित क्षणों के लिए. वहाँ सहप्रसरण के समान सूत्र भी मिल सकते हैं।

चोई और स्वीटमैन तिरछापन और कुर्टोसिस की गणना करने के लिए दो वैकल्पिक तरीकों की पेशकश करें, जिनमें से प्रत्येक कुछ अनुप्रयोगों में पर्याप्त कंप्यूटर मेमोरी आवश्यकताओं और सीपीयू समय को बचा सकता है। पहला दृष्टिकोण डेटा को डिब्बे में अलग करके सांख्यिकीय क्षणों की गणना करना है और फिर परिणामी हिस्टोग्राम की ज्यामिति से क्षणों की गणना करना है, जो प्रभावी रूप से उच्च क्षणों के लिए एक-पास कलन विधिबन जाता है। एक लाभ यह है कि सांख्यिकीय क्षण की गणना मनमानी सटीकता के साथ की जा सकती है, जैसे कि गणना को सटीकता के साथ ट्यून किया जा सकता है, उदाहरण के लिए, डेटा भंडारण प्रारूप या मूल माप हार्डवेयर। एक यादृच्छिक चर का एक सापेक्ष हिस्टोग्राम पारंपरिक तरीके से बनाया जा सकता है: संभावित मूल्यों की सीमा को डिब्बे में विभाजित किया जाता है और प्रत्येक बिन के भीतर घटनाओं की संख्या को गिना और प्लॉट किया जाता है ताकि प्रत्येक आयत का क्षेत्र उस बिन के भीतर प्रतिरूप  मूल्यों के हिस्से के बराबर हो:


 * $$ H(x_k)=\frac{h(x_k)}{A}$$

कहाँ $$h(x_k)$$ और $$H(x_k)$$ बिन पर आवृत्ति और सापेक्ष आवृत्ति का प्रतिनिधित्व करें $$x_k$$ और $A= \sum_{k=1}^K h(x_k) \,\Delta x_k$ हिस्टोग्राम का कुल क्षेत्रफल है. इस सामान्यीकरण के बाद, $$n$$ कच्चे क्षण और केंद्रीय क्षण $$x(t)$$ सापेक्ष हिस्टोग्राम से गणना की जा सकती है:



m_n^{(h)} = \sum_{k=1}^{K} x_k^n H(x_k) \, \Delta x_k = \frac{1}{A} \sum_{k=1}^K x_k^n h(x_k) \, \Delta x_k $$

\theta_n^{(h)}= \sum_{k=1}^{K} \Big(x_k-m_1^{(h)}\Big)^n \, H(x_k) \, \Delta x_k = \frac{1}{A} \sum_{k=1}^{K} \Big(x_k-m_1^{(h)}\Big)^n h(x_k) \, \Delta x_k $$ जहां सुपरस्क्रिप्ट $$^{(h)}$$ इंगित करता है कि क्षणों की गणना हिस्टोग्राम से की जाती है। निरंतर बिन चौड़ाई के लिए $$\Delta x_k=\Delta x$$ इन दो अभिव्यक्तियों का उपयोग करके सरल बनाया जा सकता है $$I= A/\Delta x$$:



m_n^{(h)}= \frac{1}{I} \sum_{k=1}^K x_k^n \, h(x_k) $$

\theta_n^{(h)}= \frac{1}{I} \sum_{k=1}^K \Big(x_k-m_1^{(h)}\Big)^n h(x_k) $$ चोई और स्वीटमैन का दूसरा दृष्टिकोण समय-इतिहास के अलग-अलग खंडों से सांख्यिकीय क्षणों को संयोजित करने की एक विश्लेषणात्मक पद्धति है, ताकि परिणामी समग्र क्षण संपूर्ण समय-इतिहास के हों। इस पद्धति का उपयोग उन क्षणों के बाद के संयोजन के साथ सांख्यिकीय क्षणों की समानांतर गणना के लिए, या अनुक्रमिक समय पर गणना किए गए सांख्यिकीय क्षणों के संयोजन के लिए किया जा सकता है।

अगर $$Q$$ सांख्यिकीय क्षणों के सेट ज्ञात हैं: $$(\gamma_{0,q},\mu_{q},\sigma^2_{q},\alpha_{3,q},\alpha_{4,q}) \quad $$ के लिए $$q=1,2,\ldots,Q $$, फिर प्रत्येक $$\gamma_n$$ कर सकना समकक्ष के रूप में व्यक्त किया जाए $$n$$ कच्चे क्षण:



\gamma_{n,q}= m_{n,q} \gamma_{0,q} \qquad \quad \textrm{for} \quad n=1,2,3,4 \quad \text{ and } \quad q = 1,2, \dots ,Q $$ कहाँ $$\gamma_{0,q}$$ आम तौर पर की अवधि के रूप में लिया जाता है $$q^{th}$$ समय-इतिहास, या अंकों की संख्या यदि $$\Delta t$$ स्थिर है.

सांख्यिकीय क्षणों को के रूप में व्यक्त करने का लाभ $$\gamma$$ है कि $$Q$$ सेट को जोड़कर जोड़ा जा सकता है, और इसके मूल्य पर कोई ऊपरी सीमा नहीं है $$Q$$.



\gamma_{n,c}= \sum_{q=1}^Q \gamma_{n,q} \quad \quad \text{for } n=0,1,2,3,4 $$ जहां सबस्क्रिप्ट $$_c$$ संघटित समय-इतिहास या संयुक्त का प्रतिनिधित्व करता है $$\gamma$$. ये संयुक्त मूल्य हैं $$\gamma$$ फिर इसे पूर्ण रूप से संयोजित समय-इतिहास का प्रतिनिधित्व करने वाले कच्चे क्षणों में उलटा रूपांतरित किया जा सकता है



m_{n,c}=\frac{\gamma_{n,c}}{\gamma_{0,c}} \quad \text{for } n=1,2,3,4 $$ कच्चे क्षणों के बीच ज्ञात संबंध ($$m_n$$) और केंद्रीय क्षण ($$ \theta_n = \operatorname E[(x-\mu)^n])$$) फिर संघटित समय-इतिहास के केंद्रीय क्षणों की गणना करने के लिए उपयोग किया जाता है। अंत में, संक्षिप्त इतिहास के सांख्यिकीय क्षणों की गणना केंद्रीय क्षणों से की जाती है:



\mu_c=m_{1,c} \qquad \sigma^2_c=\theta_{2,c} \qquad \alpha_{3,c}=\frac{\theta_{3,c}}{\sigma_c^3} \qquad \alpha_{4,c}={\frac{\theta_{4,c}}{\sigma_c^4}}-3 $$

सहप्रसरण
सहप्रसरण की गणना के लिए बहुत समान कलन विधिका उपयोग किया जा सकता है।

भोला एल्गोरिथ्म
भोला एल्गोरिथ्म है
 * $$\operatorname{Cov}(X,Y) = \frac {\sum_{i=1}^n x_i y_i - (\sum_{i=1}^n x_i)(\sum_{i=1}^n y_i)/n}{n}. $$

उपरोक्त कलन विधिके लिए, कोई निम्नलिखित पायथन कोड का उपयोग कर सकता है:

माध्य के अनुमान के साथ
विचरण के लिए, दो यादृच्छिक चर का सहप्रसरण भी शिफ्ट-अपरिवर्तनीय है, इसलिए कोई भी दो स्थिर मान दिए गए हैं $$k_x$$ और $$k_y,$$ इसे लिखा जा सकता है:


 * $$\operatorname{Cov}(X,Y) = \operatorname{Cov}(X-k_x,Y-k_y) = \dfrac {\sum_{i=1}^n (x_i-k_x) (y_i-k_y) - (\sum_{i=1}^n (x_i-k_x))(\sum_{i=1}^n (y_i-k_y))/n}{n}. $$

और फिर से मूल्यों की सीमा के अंदर एक मूल्य चुनने से भयावह निरस्तीकरण के खिलाफ फॉर्मूला स्थिर हो जाएगा और साथ ही बड़ी रकम के खिलाफ यह अधिक मजबूत हो जाएगा। प्रत्येक डेटा सेट का पहला मान लेते हुए, कलन विधिको इस प्रकार लिखा जा सकता है:

दो-पास
दो-पास एल्गोरिथ्म पहले प्रतिरूप माध्य की गणना करता है, और फिर सहप्रसरण की:
 * $$\bar x = \sum_{i=1}^n x_i/n$$
 * $$\bar y = \sum_{i=1}^n y_i/n$$
 * $$\operatorname{Cov}(X,Y) = \frac {\sum_{i=1}^n (x_i - \bar x)(y_i - \bar y)}{n}. $$

दो-पास एल्गोरिथ्म को इस प्रकार लिखा जा सकता है: थोड़ा अधिक सटीक मुआवजा संस्करण अवशेषों पर पूर्ण अनुभवहीन कलन विधिनिष्पादित करता है। अंतिम रकम $\sum_i x_i$  और $\sum_i y_i$  शून्य होना चाहिए, लेकिन दूसरा पास किसी भी छोटी त्रुटि की भरपाई करता है।

ऑनलाइन
एक स्थिर वन-पास कलन विधिमौजूद है, जो विचरण की गणना के लिए ऑनलाइन  कलन विधिके समान है, जो सह-पल की गणना करता है $ C_n = \sum_{i=1}^n (x_i - \bar x_n)(y_i - \bar y_n)$ :
 * $$\begin{alignat}{2}

\bar x_n &= \bar x_{n-1} &\,+\,& \frac{x_n - \bar x_{n-1}}{n} \\[5pt] \bar y_n &= \bar y_{n-1} &\,+\,& \frac{y_n - \bar y_{n-1}}{n} \\[5pt] C_n     &= C_{n-1}      &\,+\,& (x_n - \bar x_n)(y_n - \bar y_{n-1}) \\[5pt] &= C_{n-1}     &\,+\,& (x_n - \bar x_{n-1})(y_n - \bar y_n) \end{alignat}$$ उस अंतिम समीकरण में स्पष्ट विषमता इस तथ्य के कारण है $ (x_n - \bar x_n) = \frac{n-1}{n}(x_n - \bar x_{n-1})$, इसलिए दोनों अद्यतन शर्तें समान हैं $ \frac{n-1}{n}(x_n - \bar x_{n-1})(y_n - \bar y_{n-1})$. पहले साधनों की गणना करके, फिर अवशेषों पर स्थिर वन-पास कलन विधिका उपयोग करके और भी अधिक सटीकता प्राप्त की जा सकती है।

इस प्रकार सहप्रसरण की गणना इस प्रकार की जा सकती है
 * $$\begin{align}

\operatorname{Cov}_N(X,Y) = \frac{C_N}{N} &= \frac{\operatorname{Cov}_{N-1}(X,Y)\cdot(N-1) + (x_n - \bar x_n)(y_n - \bar y_{n-1})}{N}\\ &= \frac{\operatorname{Cov}_{N-1}(X,Y)\cdot(N-1) + (x_n - \bar x_{n-1})(y_n - \bar y_n)}{N}\\ &= \frac{\operatorname{Cov}_{N-1}(X,Y)\cdot(N-1) + \frac{N-1}{N}(x_n - \bar x_{n-1})(y_n - \bar y_{n-1})}{N}\\ &= \frac{\operatorname{Cov}_{N-1}(X,Y)\cdot(N-1) + \frac{N}{N-1}(x_n - \bar x_{n})(y_n - \bar y_{n})}{N}. \end{align}$$

भारित सहप्रसरण की गणना के लिए एक छोटा संशोधन भी किया जा सकता है:

इसी तरह, दो सेटों के सहप्रसरणों को संयोजित करने का एक सूत्र है जिसका उपयोग गणना को समानांतर करने के लिए किया जा सकता है:


 * $$C_X = C_A + C_B + (\bar x_A - \bar x_B)(\bar y_A - \bar y_B)\cdot\frac{n_A n_B}{n_X}. $$

भारित बैच संस्करण
भारित ऑनलाइन कलन विधि का एक संस्करण जो बैच अद्यतन करता है वह भी मौजूद है: चलो $$w_1, \dots w_N$$ वज़न दर्शाएं और लिखें


 * $$\begin{alignat}{2}

\bar x_{n+k} &= \bar x_n &\,+\,& \frac{\sum_{i=n+1}^{n+k} w_i (x_i - \bar x_n)}{\sum_{i=1}^{n+k} w_i} \\ \bar y_{n+k} &= \bar y_n &\,+\,& \frac{\sum_{i=n+1}^{n+k} w_i (y_i - \bar y_n)}{\sum_{i=1}^{n+k} w_i} \\ C_{n+k}     &= C_n      &\,+\,& \sum_{i=n+1}^{n+k} w_i (x_i - \bar x_{n+k})(y_i - \bar y_n) \\ &= C_n     &\,+\,& \sum_{i=n+1}^{n+k} w_i (x_i - \bar x_n)(y_i - \bar y_{n+k}) \\ \end{alignat}$$ इसके बाद सहप्रसरण की गणना इस प्रकार की जा सकती है


 * $$\operatorname{Cov}_N(X,Y) = \frac{C_N}{\sum_{i=1}^{N} w_i}$$

यह भी देखें

 * कहान योग एल्गोरिथ्म
 * माध्य से वर्ग विचलन
 * यामार्टिनो विधि