R kodunuzu verebilir misiniz? Bu sorunun nasıl halledildiğini bilmek isterdim.
Burada sorun boot.ci'ye sadece y
geçiyor olmanızdır, fakat my_function işlevini her çalıştırdığında, orijinal x
(my_function için x giriş eksikliğini not edin). Önyükleme, istatistik işlevini yeniden örneklenen verilere uygular; bu nedenle, x
numaralı orijinali ve y
numaralı bir örneği kullanarak istatistik işlevinizi uygularsanız, saçma bir sonuç elde edersiniz. Bu yüzden BCA yöntemi hiç işe yaramıyor, aslında: istatistik fonksiyonunuzu aynı sayıda elemanı olmayan jackknife örneklerine uygulayamaz.
Örnekler, eksen 0 (satırlar) boyunca alınır, böylece birden çok 1D dizisini istatistik işlevinize iletmek isterseniz, birden çok sütun kullanabilirsiniz: xy = vstack((x,y)).T
çalışır ve bu sütunlardan veri alan bir işlev kullanır: Eğer hiç verilerinizin karıştırmasını önlemek istiyorsa
def my_function(xysample):
return stats.linregress(xysample[:,0], xysample[:,1])[2]
Alternatif olarak, endeksler üzerinde faaliyet gösteren bir işlevi tanımlamak olabilir ve o zaman sadece boot.ci için endeksler geçmesi:
def my_function2(i):
return stats.linregress(x[i], y[i])[2]
boot.ci(np.arange(len(x)), statfunction=my_function2, alpha=0.05, n_samples=1000, method='pi')
Not o bu davalardan birinde, BCA Çalışır, bu yüzden gerçekten yüzdelik aralıklarını kullanmak istemediğiniz sürece method = 'bca' kullanabilirsiniz; BCA hemen hemen her zaman daha iyidir.
Her iki yöntemin de idealin altında olduğunu anlıyorum. Dürüst olmak gerekirse, bu gibi işlevler için birden fazla diziyi geçme gereği duymadım ve insanların büyük bir çoğunluğu mean
işlevini kullanıyor. Bence buradaki en iyi fikir, eşit boyutta [0] dizilerin listelenmesine izin vermek, örneğin, boot.ci([x,y],...)
, ve tüm bunları aynı anda örneklemek ve hepsini bağımsız değişkenler olarak göstergeye iletmek olabilir. Bu durumda, sadece bir my_function(x,y)
olabilir. Bunu yapabileceğimi göreceğim, ama eğer R kodunuzu gösterebilirseniz, bu harika olurdu, bununla ilgili daha iyi bir yol olup olmadığını görmek istiyorum.
Güncelleme:
scikits.bootstrap (v0.3.1) en son sürümünde
, diziler bir tanımlama grubu sağlanabilir ve onlardan örnekler statfunction ayrı argümanlar olarak geçirilir. Ek olarak, arıza dizi çıkışı sağlayabilir ve çıktıdaki her nokta için güven aralıkları hesaplanacaktır.Böylece, bu şimdi yapmak çok kolay. Aşağıdaki linregress her çıkış için güven aralıkları verecektir: Bu durumda
cis = boot.ci((x,y), statfunction=stats.linregress)
cis[:,2]
istenen güven aralığı olacaktır.
Mükemmel yanıtınız için teşekkürler, iyi çalıştı. R'de, benzer bir şekilde, bir veri yapısının (ve hatta açık bir modelin) istatistik hesaplama işlevine geçirilmesiyle gerçekleştirildiği görülmektedir: http://www.statmethods.net/advstats/bootstrapping.html – ToddP
Şunlar için teşekkürler bunu gündeme getirmek; Bu arada, taşma yapmak için yeni olabileceğiniz görülüyor, bu yüzden, soldaki onay işaretiyle iyi bir cevabı kabul etmenin yararlı olduğunu belirtmem gerektiğini düşündüm, böylece başkalarının da sorunun yanıtlandığını bilmesi gerekiyor. – cge
@ user2269232 cevabı kabul etmiş sayılırsınız. Bir ya da iki kimse kimseyi öldürmeyecek. – rll