ভেরিয়েবলের পার্টিশনের বিভিন্নতার গণনা কীভাবে করা যায়


15

আমি এমন একটি পরীক্ষা চালাচ্ছি যেখানে আমি সমান্তরালে নমুনা সংগ্রহ করছি (আমি স্বাধীন) নমুনাগুলি প্রতিটি গ্রুপের নমুনার বৈচিত্রটি গণনা করছি এবং এখন সমস্ত নমুনার মোট বৈকল্পিক সন্ধানের জন্য আমি সমস্তগুলি একত্রিত করতে চাই।

আমি এর পরিভাষা সম্পর্কে নিশ্চিত না হওয়ায় এর জন্য একটি উত্স আবিষ্কার করতে আমার বেশ কষ্ট হচ্ছে। আমি এটিকে একটি আরভি বিভাজন হিসাবে মনে করি।

তাই আমি খুঁজতে চান থেকে , , ..., এবং ভী একটি ( এক্স এন ) , যেখানে এক্স = [ এক্স 1 , এক্স 2 , ... , এক্স এন ]ভি আর ( এক্স 1 ) ভি আর ( এক্স 2 )ভীএকটিR(এক্স)ভীএকটিR(এক্স1)ভীএকটিR(এক্স2)ভীএকটিR(এক্সএন)X[X1,X2,,Xn]

সম্পাদনা: পার্টিশনগুলি একই আকার / কার্ডিনালিয়ালিটি নয়, তবে পার্টিশন মাপের সমষ্টি সামগ্রিক নমুনা সেটে নমুনার সংখ্যার সমান।

সম্পাদনা 2: এখানে একটি সমান্তরাল গণনার জন্য একটি সূত্র রয়েছে , তবে এটি কেবলমাত্র দুটি সেটগুলিতে বিভাজনের ক্ষেত্রে কভার করে, n সেট নয়।


এটি কি এখানে আমার প্রশ্নের মত একই: mathoverflow.net/questions/64120/…

এই শেষ বন্ধনীটির অর্থ কী? এবং "সম্পূর্ণ বৈকল্পিক" বলতে কী বোঝ? এটি কি সম্মিলিত ডেটাসেটের বৈকল্পিকতা ছাড়া অন্য কিছু?
হোয়বার

@ শেষ কোন বন্ধনী? "মোট বৈকল্পিক" অর্থ মোট ডেটাসেটের বৈকল্পিক।
গ্যালামাইন

অভিব্যক্তিটি অনেকগুলি বোঝাতে পারে (যদিও প্রচলিতভাবে এটি ভেক্টর হবে): আমি একটি স্পষ্টতা খুঁজছিলাম। [X1,X2,,Xn]
হোবার

উত্তর:


22

সূত্রটি মোটামুটি সোজা যদি সমস্ত উপ-নমুনার সমান নমুনার আকার থাকে। আপনি ছিল যদি আকার উপ-নমুনার (মোট নমুনা), তারপর মিলিত নমুনার ভ্যারিয়েন্স গড় উপর নির্ভরশীল এবং ভ্যারিয়েন্স ভী প্রতিটি উপ-নমুনা: ভী একটি ( এক্স 1 , , এক্স জি কে ) = কে - 1gkgkEjVjযেখানেভিaআর(জে) দ্বারানমুনাটির পরিবর্তনের অর্থ।

Var(X1,,Xgk)=k1gk1(j=1gVj+k(g1)k1Var(Ej)),
Var(Ej)

আর তে একটি বিক্ষোভ:

> x <- rnorm(100)
> g <- gl(10,10)
> mns <- tapply(x, g, mean)
> vs <- tapply(x, g, var)
> 9/99*(sum(vs) + 10*var(mns))
[1] 1.033749
> var(x)
[1] 1.033749

যদি নমুনার আকারগুলি সমান না হয় তবে সূত্রটি এত সুন্দর নয়।

সম্পাদনা: অসম নমুনা আকারের সূত্র

তাহলে আছে উপ-নমুনা সঙ্গে প্রতিটি , = 1 , ... , মোট উপাদানের এন = Σ মূল্যবোধ, তারপর V একটি ( এক্স 1 , ... , এক্স এন ) = 1gkj,j=1,,gn=kj যেখানে ˉ এক্স =( জি জে = 1 কেজে ˉ এক্স))/এনহ'ল সমস্ত মাধ্যমের ওজনযুক্ত গড় (এবং সমস্ত মানের গড়ের সমান)।

Var(X1,,Xn)=1n1(j=1g(kj1)Vj+j=1gkj(X¯jX¯)2),
X¯=(j=1gkjX¯j)/n

আবার, একটি বিক্ষোভ:

> k <- rpois(10, lambda=10)
> n <- sum(k)
> g <- factor(rep(1:10, k))
> x <- rnorm(n)
> mns <- tapply(x, g, mean)
> vs <- tapply(x, g, var)
> 1/(n-1)*(sum((k-1)*vs) + sum(k*(mns-weighted.mean(mns,k))^2))
[1] 1.108966
> var(x)
[1] 1.108966

(XjiX¯)2X¯j[(XjiX¯j)(X¯jX¯)]2


ধন্যবাদ। দুর্ভাগ্যক্রমে, আমি গ্যারান্টি দিতে পারি না যে আমার পার্টিশনগুলি সমস্ত একই আকারের। আমি একটি বহুল সমান্তরাল প্রক্রিয়া চালাচ্ছি যেখানে প্রতিটি পার্টিশনের বৈকল্পগুলি সমান্তরালভাবে শেষের পরে একত্রিত করতে আমার প্রয়োজন, তবে প্রতিটি সমান্তরাল প্রক্রিয়া থেকে প্রাপ্ত ফলাফল / নমুনাগুলি সমান নয় (এটি প্রাপ্ত ফোটনের একটি মন্টি কার্লো সিমুলেশন)।
গ্যালামাইন

3
ডেটা গুদামের পরিবেশে সমান্তরাল গণনার জন্য আমি এই পর্যাপ্ত, সুপার সহায়ক সূত্রটি +1 করতে পারি না
নোহ ইয়াত্টার

1

এটি ডিক্রিভেশন এবং কিছু পাইথন কোডের রুক্ষ স্কেচ সহ অনিকোর উত্তরের একটি অ্যাড-অন , তাই সমস্ত ক্রেডিট অনিকোর কাছে যায়।

শিক্ষাদীক্ষা

XjX={X1,X2,,Xg}gkj=|Xj|

Ej=E[Xj]=1kji=1kjXjiVj=Var[Xj]=1kj1i=1kj(XjiEj)2
respectively. If we set n=j=1gkj, the variance of the total dataset is given by:
Var[X]=1n1j=1gi=1kj(XjiE[X])2=1n1j=1gi=1kj((XjiEj)(E[X]Ej))2=1n1j=1gi=1kj(XjiEj)22(XjiEj)(E[X]Ej)+(E[X]Ej)2=1n1j=1g(kj1)Vj+kj(E[X]Ej)2.
If we have the same size k for each part, i.e. j:kj=k, above formula simplifies to
Var[X]=1n1j=1g(k1)Vj+k(g1)Var[Ej]=k1n1j=1gVj+k(g1)k1Var[Ej]

python code

The following python function works for arrays that have been splitted along the first dimension and implements the "more complex" formula for differently sized parts.

import numpy as np

def combine(averages, variances, counts, size=None):
    """
    Combine averages and variances to one single average and variance.

    # Arguments
        averages: List of averages for each part.
        variances: List of variances for each part.
        counts: List of number of elements in each part.
        size: Total number of elements in all of the parts.
    # Returns
        average: Average over all parts.
        variance: Variance over all parts.
    """
    average = np.average(averages, weights=counts)

    # necessary for correct variance in case of multidimensional arrays
    if size is not None:
        counts = counts * size // np.sum(counts, dtype='int')

    squares = (counts - 1) * variances + counts * (averages - average)**2
    return average, np.sum(squares) / (size - 1)

It can be used as follows:

# sizes k_j and n
ks = np.random.poisson(10, 10)
n = np.sum(ks)

# create data
x = np.random.randn(n, 20)
parts = np.split(x, np.cumsum(ks[:-1]))

# compute statistics on parts
ms = [np.mean(p) for p in parts]
vs = [np.var(p, ddof=1) for p in parts]

# combine and compare
combined = combine(ms, vs, ks, x.size)
numpied = np.mean(x), np.var(x, ddof=1)
distance = np.abs(np.array(combined) - np.array(numpied))
print('combined --- mean:{: .9f} - var:{: .9f}'.format(*combined))
print('numpied  --- mean:{: .9f} - var:{: .9f}'.format(*numpied))
print('distance --- mean:{: .5e} - var:{: .5e}'.format(*distance))
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.