Sahte İstatistikler


27

Bazı sahte haberler icat edecekseniz, yedeklemek için bazı veriler üretmek istersiniz. Önceden tasarlanmış bazı sonuçlara varmış olmalısınız ve bazı istatistiklerin hatalı mantığınızın argümanını güçlendirmesini istiyorsunuz. Bu zorluk size yardımcı olmalı!

Verilen üç giriş numarası:

  • N - veri noktalarının sayısı
  • μ - veri noktalarının ortalaması
  • σ - μ ve σ ' nin verildiği veri noktalarının standart sapması :

    görüntü tanımını buraya girin

Verilen N , μ ve σ ' yu oluşturacak sıralanmamış bir sayı listesi, 𝑥 i .

G / Ç formatları konusunda çok seçici olmayacağım, ancak μ , σ ve çıktı veri noktaları için bazı ondalık sayılar beklerim . En azından, en az 3 önemli rakam ve en az 1.000.000 büyüklük desteklenmelidir. IEEE yüzmeleri gayet iyi.

  • N her zaman bir tamsayı olacak, 1 ≤ N ≤ 1,000
  • μ herhangi bir gerçek sayı olabilir
  • σ daima ≥ 0 olacak
  • veri noktaları herhangi bir gerçek sayı olabilir
  • Eğer , N 1, daha sonra σ her zaman 0 olacaktır.

Çoğu girişin birçok olası çıkışa sahip olacağını unutmayın. Sadece bir geçerli çıktı vermeniz gerekir. Çıktı deterministik veya deterministik olmayabilir.

Örnekler

Input (N, μ, σ) -> Possible Output [list]

2, 0.5, 1.5 -> [1, 2]
5, 3, 1.414 -> [1, 2, 3, 4, 5]
3, 5, 2.160 -> [2, 6, 7]
3, 5, 2.160 -> [8, 4, 3]
1, 0, 0 -> [0]

6
P-değeri için bir truthy / falsy girişi eklemiş olsaydık , ya sahte-yedek ya da sahte-disprove ahaha ile ya korelasyonlu ya da ilişkisiz veri yapmamız gerekirdi.
Magic Octopus Urn

1
Ne geliyor +veve -veortalama?
CG.

@ChelseaG. Olumlu ve olumsuz kısaltmaları . Netleştirmek için düzenleme yaptım.
Dijital Travma

N = 1 olduğunda, σ mümkün kılmak için her zaman 0 olur mu?
xnor

1
Gerçekten biz pegular düzeltilmiş örnek standart sapmayı kullanıyor olmalı ve N = 1 olan girdiler için uygulama yapmamalıyız.
Jonathan Allan

Yanıtlar:


8

Pyth , 44 35 34 bayt

? eA.DhQ2 + eQ * G, -eQJ * E @ hc1thQ2 + eQJ * G, -eQKE + eQK 
.N? eA.DN2 +T*G+ LT_B*Y@hc1tN2*G+ LT_BY
.N? EA.DN2+T*G+LT_B*Y@cNtN2*G+LT_BY

Çevrimiçi deneyin! (Yukarıdaki kod bir işlevi tanımlar. İşlevi :.*çağırmak için bağlantıya eklenir.)

Matematik

Bu, verileri simetrik olarak yapılandırır. Eğer Neşitse, o zaman veriler sadece ortalama artı veya eksi standart sapmadır. Ancak, eğer Ngaripse, o zaman sadece bir simit solucanı açtık, çünkü verilerin simetrik olması için ortalamanın olması gerekiyor ve bu yüzden dalgalanmaların belirli bir faktörle çarpılması gerekiyor.

Eğer nbile

  • Verilerin yarısı μ+σ.
  • Verilerin yarısı μ-σ.

Eğer ngarip

  • Bir referans noktası μ.
  • Verilerin yarısından az μ+σ*sqrt(n/(n-1)).
  • Verilerin yarısından az μ-σ*sqrt(n/(n-1)).

6

MATL , 22 bayt

@DigitalTrauma'ya düzeltme için teşekkürler .

:t&1Zs/tYm-*+tZN?3G9L(

Girdi sırası: N, σ, μ.

Çevrimiçi deneyin!

Veya üretilen verilerin ortalama ve standart sapmasını da kontrol eden bir versiyonunu kontrol edin.

açıklama

Kod dört bölüme ayrılmıştır:

  1. :dizisi oluşturur örtülü girdi olarak alınır.[1 2 ... N]N

  2. t&1Zs/bu sayıları ampirik standart sapmalarına göre böler (normalize ederek hesaplanır N) ve tYm-elde edilen değerlerin ampirik ortalamasını çıkarır. Bu, sonuçların ampirik ortalama 0ve ampirik standart sapma olmasını sağlar 1.

  3. *her ikisi de örtük girdi olarak alınan çarparak σve +ekler μ.

  4. tZN?x3GBu özel durumda işler N = 1, σ = 0kendisi için çıkış olmalıdır μ. Eğer gerçekten durum buysa, o zaman ikinci adımda hesaplanan ampirik standart sapma 0, bölümün verdiği infve σüçüncü adımdaki ile çarpıldığı idi NaN. Kodun yaptığı şey şudur: elde edilen dizi tüm NaNdeğerlerden (kod tZN?) oluşuyorsa, onu silin ( x) ve olan üçüncü girişi ( 3G) itin μ.


4

Python , 50 bayt

lambda n,m,s:[m+s*(n-1)**.5]+[m-s/(n-1%n)**.5]*~-n

Çevrimiçi deneyin!

Mean ve sdev nile aşağıdaki- 0element dağılımını kullanır 1:

  • Olasılıkla 1/n(yani 1eleman), çıktı(n-1)**0.5
  • Olasılıkla 1-1/n(yani n-1elementler) çıktı-(n-1)**(-0.5)

Bu, dönüştürerek ortalama mve sdev olarak yeniden ölçeklendirilir . Annoyingly, biz uzakta yaparak kesmek, böylece işe yaramaz bir değer için sıfır hata ile bir bölünme verir ile, verilmesi için ve aksi.sx->m+s*xn=1/(n-1%n)**.51%n0n==11

Kısıtlanabileceğini düşünebilirsiniz , ancak üstele ilk önce (n-1)**.5başlayabilirsiniz ~-n**.5.

A defbir bayt daha uzun.

def f(n,m,s):a=(n-1%n)**.5;print[m+s*a]+[m-s/a]*~-n

3

R, 83 62 53 bayt

function(n,m,s)`if`(n>1,scale(1:n)*s*sqrt(1-1/n)+m,m)

Eğer n=1öyleyse geri döner m(o scalezaman geri dönecektir NA), aksi takdirde verileri [1,...,n]ortalama 0 ve (örnek) standart sapma 1 olacak şekilde ölçeklendirir , böylece s*sqrt(1-1/n)doğru popülasyon standart sapmasını elde etmek için çoğalır mve uygun ortama kayması eklenir . Bana ölçek işlevini tanıtıp bu baytları bıraktığım için Dason'a teşekkürler!

Çevrimiçi deneyin!


Çevrimiçi Deneyin bölümüne bazı testler ekleyebilir misiniz? Böylece cevabınız kolayca doğrulanabilir mi?
Dijital Travma

Evet! bana iki dakika ver
Giuseppe

Muhtemelen sadece 4 bayt kaydetmek 1:nyerine kullanabilirsiniz rt(n,n). Ve scalefonksiyon muhtemelen faydalı olabilir.
Dason

@Dason - teşekkürler! scaleHangisinin harika olduğunu öğrendim .
Giuseppe

1

Jöle , 20 bayt

÷_Ḃ$©$*.;N$ṁ®;0ṁ⁸×⁵+

Çevrimiçi deneyin!

Üç komut satırı argümanı alan tam program: n , μ , σ .

Nasıl?

Oluşturur kat (N / 2) , bu değerlerin ortalaması ortalama bir değere eşit uzaklıkta , n standart sapma doğru olduğunu tek şekildedir ...

÷_Ḃ$©$*.;N$ṁ®;0ṁ⁸×⁵+ - Main link: n, μ (σ expected as third input, the 5th command argument)
   $                 - last two links as a monad:
 _                   -   n minus:
  Ḃ                  -     n mod 2            i.e. n-1 if n is odd, n if n is even
    ©                - copy value to register
÷                    - n divided by that
       .             - literal 0.5
      *              - exponentiate = (n / (n - (n mod 2))) ^ 0.5
                     -        i.e. 1 if n is even; or (n/(n-1))^0.5 if n is odd
         $           - last two links as a monad:
        N            -   negate
       ;             -   concatenate   i.e. [1,-1] or [(n/(n-1))^0.5,-(n/(n-1))^0.5]
            ®        - recall value from register
           ṁ         - mould the list like something of that length
             ;0      - concatenate a zero
                ⁸    - link's left argument, n
               ṁ     - mould the list like something of length n (removes the zero for even n)
                  ⁵  - fifth command argument, third program argument (σ)
                 ×   - multiply (vectorises)
                   + - add μ (vectorises)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.