混合数统计分析
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
我正在为一个小项目进行调查,该项目要求用户通过从一组单选值中进行选择来回答一些问题,例如非常不同意、同意、中立、同意和非常同意。对于这些选择,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