混合数统计分析

Statistical Analysis with mixed numbers

我正在为一个小项目进行调查,该项目要求用户通过从一组单选值中进行选择来回答一些问题,例如非常不同意、同意、中立、同意和非常同意。对于这些选择,Radio 值分别为 -1、-2、0、1 和 2。最后,我需要对数据进行某种类型的分析。 首先,我使用 Python 尝试使用 Log10 函数

对值进行归一化
import numpy as np

feel = [-1,-2,0,1,2]
for i in feel:
    print( np.log10(i))

结果不理想:

-inf
nan
0.0
0.6931471805599453
1.0986122886681098
<ipython-input-35-830bb9e2f96e>:3: RuntimeWarning: divide by zero encountered in log1p
  print( np.log1p(i))
<ipython-input-35-830bb9e2f96e>:3: RuntimeWarning: invalid value encountered in log1p
  print( np.log1p(i))

如果我使用 C# 重复 Log10 规范化:

List<double> origin = new List<double> { -1,-2,0,1,2};

Program p = new Program(); 
var norm = 0.0;
var denorm = 0.0;

foreach(var item in origin){

    System.Console.WriteLine($"Number: {item}"); 

    norm = p.normalize(item); // 0.2

    System.Console.WriteLine($"Normalized: {norm}");

    denorm = p.denormalize(norm); //12

    System.Console.WriteLine($"Denormalized: {denorm}");
}


public double normalize(double value)
{
    var norm = Math.Log10(value);
    return norm;
}

public double denormalize(double value)
{
    var denorm = Math.Round(Math.Pow(10,value),14); 
    return denorm;
}

我得到:

Number: -1
Normalized: NaN
Denormalized: NaN
Number: -2
Normalized: NaN
Denormalized: NaN
Number: 0
Normalized: -∞
Denormalized: 0
Number: 1
Normalized: 0
Denormalized: 1
Number: 2
Normalized: 0.3010299956639812
Denormalized: 2

是否有一种有限的方法来收集调查数据,然后进行归一化并最终 运行 对态度方法进行一些分析?

使用 np.log10 的问题是负数没有以 10 为底的根。换句话说,10^x = y 且 y < 0 不可解。如果您想要或需要特别使用该功能,则需要对所有选项求和 3。也就是说,不是从 -2 到 2,而是从 1 到 5。

import numpy as np

feel = [1,2,3,4,5]
for i in feel:
    print(np.log10(i))

这输出:

>>> 0.0
>>> 0.3010299956639812
>>> 0.47712125471966244
>>> 0.6020599913279624
>>> 0.6989700043360189