如果已知数据点数、均值和标准差,是否有确定数据集(离散比例,1 到 5)的函数?

Is there a function to determine dataset (discrete scale, 1 to 5) if number of data points, mean, and standard deviation is known?

我的问题与这个问题非常相似:"Reverse" statistics。然而,他们想要创建一个 正态 (和随机)分布 任意 大小以符合特定的均值和标准差。但是,假设我们知道 多于 均值和标准差。偏差,我们知道数据点数以及离散尺度值落在

所以我真的有两个问题。 首先,鉴于我们知道,

...是否可以知道确切的数据集?例如,如果我们知道在 1-5 的李克特量表上有 5 个数据点,均值为 4.40,标准差为 1.20,是否可以算出数据集为 {5, 5, 5, 5, 2}(值的顺序不重要)?

其次,是否已经有功能可以自动解决这个问题?

由于我要识别的数据集相当小 (n < 30),我的一个朋友建议使用 itertools combinations_with_replacement() 来生成所有可能的数据集,然后写一个匹配函数给定我的参数。

这是最终代码。

from itertools import combinations_with_replacement
from statistics import pstdev

# Function to figure out exact data set given we know:
## N is integer (number of data points)
## SIGMA is float (standard deviation)
## MU is float (mean)
## discreteScale is list (all possible values of data points)
#### Function returns list containing tuple(s) (possible sets of data points that match criteria)

def find_DataSet(N, MU, SIGMA, discreteScale):
    possibleCombs = combinations_with_replacement(discreteScale, N)
    
    container = []
    for dataSet in possibleCombs:
        mu = sum(dataSet)/len(dataSet)
        roundMu = round(mu, 2)
        
        sigma = pstdev(dataSet)
        roundSigma = round(sigma, 2)
        
        if ((roundMu == MU) and (roundSigma == SIGMA)):
            container.append(dataSet)
        
    return container

示例输出:

result = find_DataSet(20, 4.50, 0.81, [1, 2, 3, 4, 5])
print(result)

[(2, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5), (3 , 3, 3, 3, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5)]