虚假统计


27

如果您要发明一些虚假新闻,则需要构造一些数据以进行备份。您必须已经有了一些先入为主的结论,并且想要一些统计数据来加强错误逻辑的论据。这一挑战将为您提供帮助!

给定三个输入数字:

  • N-数据点数
  • μ-数据点的平均值
  • σ-数据点的标准偏差,其中μσ表示为:

    在此处输入图片说明

输出数字的无序列表,𝑥 ,这会产生给定Ñμ,和σ

我对I / O格式不会太挑剔,但是我确实希望μσ和输出数据点具有某种十进制形式。至少应支持至少3个有效数字和至少1,000,000的数量级。IEEE浮点数很好。

  • N始终是整数,其中1≤N≤1,000
  • μ可以是任何实数
  • σ始终≥0
  • 数据点可以是任何实数
  • 如果N为1,则σ始终为0。

请注意,大多数输入将具有许多可能的输出。您只需要提供一个有效的输出即可。输出可以是确定性的或不确定性的。

例子

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值添加一个真实/虚假的输入,因此我们必须对假备份或假反证ahaha进行关联或不关联的数据。
魔术章鱼缸

1
是什么+ve-ve意味着什么?
CG。

@切尔西 缩写为阳性阴性。我已进行编辑以澄清问题。
Digital Trauma

当N = 1时,σ始终为0才可能吗?
xnor

1
确实,我们的助听器应该使用校正后的样本标准偏差,而不是对N = 1的输入实施。
乔纳森·艾伦

Answers:


8

Pyth44 35 34字节

?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

在线尝试! (上面的代码定义了一个函数。:.*附加在链接上以调用该函数。)

数学

这将对称地构造数据。如果N是偶数,则数据只是平均值加上或减去标准偏差。但是,如果N是奇数,则我们只打开了一个蠕虫罐,因为必须具有均值才能使数据对称,因此波动必须乘以某个因子。

如果n是偶数

  • 一半的数据是μ+σ
  • 一半的数据是μ-σ

如果n是奇数

  • 一个基准是μ
  • 不到一半的数据是μ+σ*sqrt(n/(n-1))
  • 不到一半的数据是μ-σ*sqrt(n/(n-1))

6

MATL,22字节

感谢@DigitalTrauma的更正。

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

输入顺序为:Nσμ

在线尝试!

或查看经过修改的版本,该版本还计算生成的数据的平均值和标准偏差,作为检查。

说明

该代码分为四个部分:

  1. :生成数组[1 2 ... N]N将其作为隐式输入。

  2. t&1Zs/将这些数字除以它们的经验标准偏差(通过进行计算归一化N),然后tYm-减去所得值的经验平均值。这样可以确保结果具有经验均值0和经验标准差1

  3. *乘以σ+相加μ,均视为隐式输入。

  4. tZN?x3G处理特殊情况下N = 1σ = 0为使输出应该μ。如果确实如此,则在第二步中计算出的经验标准偏差为0,除法得到infσ在第三步中乘以得出NaN。因此,代码的作用是:如果获取的数组包含所有NaN值(代码tZN?),则将其删除(x)并按入第三个输入(3Gμ


4

Python,50个字节

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

在线尝试!

n均值0和sdev 使用以下-element 分布1

  • 有概率1/n(即1元素),输出(n-1)**0.5
  • 具有概率1-1/n(即n-1元素),输出-(n-1)**(-0.5)

通过转换将其重新缩放为Mean m和sdev 。烦人,给出了零差错的无用值一个部门,所以我们破解它拿走做,以使对和其他。sx->m+s*xn=1/(n-1%n)**.51%n0n==11

您可能会认为(n-1)**.5可以缩短为~-n**.5,但是求幂首先发生。

A def长一个字节。

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

3

R,83 62 53字节

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

如果为n=1,则返回m(因为scale将返回NA),否则将数据缩放为[1,...,n]均值0和(样本)标准差1,因此将其乘以s*sqrt(1-1/n)得到正确的总体标准差,并m增加到适当的均值。感谢Dason向我介绍了scale函数并删除了这些字节!

在线尝试!


您可以在“ 在线试用”中添加一些测试,以便轻松验证您的答案吗?
Digital Trauma'Apr

是的!给我两分钟。
朱塞佩

可能只是使用1:n而不是rt(n,n)保存4个字节。该scale功能可能很有用。
戴森

@Dason-谢谢!我了解到scale哪个很棒。
朱塞佩

1

果冻,20 字节

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

在线尝试!

具有三个命令行参数的完整程序:nμσ

怎么样?

如果n为奇数,则创建与平均值等距的地板(n / 2)值和平均值处的值,以使标准偏差正确。

÷_Ḃ$©$*.;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)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.