同时对两列应用 Box Cox 变换
Apply Box Cox transformation to two columns simultaneously
我想对两个不同的列应用 Box-Cox 变换。不同之处在于我被要求同时选择最适合两列的 lambda。
scipy.stats.boxcox
只接受一维数组。
如何将 Box-Cox 变换应用到满足 lambda_1
= lambda_2
的两列?
我想转换列 SPEED
和 CAP
。
import pandas as pd
from scipy import stats
df = pd.read_csv('https://raw.githubusercontent.com/BenjaminKay/berndt-econometrics/master/data/floppy_ver/CHAP4.DAT/COLE',
sep='\t')
stats.boxcox(df[['SPEED','CAP']].values)
ValueError: Data must be 1-dimensional.
听起来您希望 boxcox
将两列视为一个数据集。您可以将它们合并为一个一维数组,应用 boxcox
,然后在之后恢复形状,如下所示。
获取二维数组的值:
In [63]: data = df[['SPEED','CAP']].values
将数据传递给boxcox
;在传入数据之前使用 .ravel()
方法将 data
展平为一维数组:
In [64]: result1d, lam = stats.boxcox(data.ravel())
In [65]: lam
Out[65]: -0.02063317824310837
重塑 result1d
回到原来的二维形状:
In [66]: result = result1d.reshape(data.shape)
In [67]: result.shape
Out[67]: (91, 2)
In [68]: result[:8]
Out[68]:
array([[-1.82384013, 7.23194418],
[-4.09393704, 3.25939313],
[-3.80017243, 4.39314839],
[-3.80017243, 4.39314839],
[-3.80017243, 4.39314839],
[-3.80017243, 4.39314839],
[-3.11153324, 5.01897958],
[-3.11153324, 5.01897958]])
我想对两个不同的列应用 Box-Cox 变换。不同之处在于我被要求同时选择最适合两列的 lambda。
scipy.stats.boxcox
只接受一维数组。
如何将 Box-Cox 变换应用到满足 lambda_1
= lambda_2
的两列?
我想转换列 SPEED
和 CAP
。
import pandas as pd
from scipy import stats
df = pd.read_csv('https://raw.githubusercontent.com/BenjaminKay/berndt-econometrics/master/data/floppy_ver/CHAP4.DAT/COLE',
sep='\t')
stats.boxcox(df[['SPEED','CAP']].values)
ValueError: Data must be 1-dimensional.
听起来您希望 boxcox
将两列视为一个数据集。您可以将它们合并为一个一维数组,应用 boxcox
,然后在之后恢复形状,如下所示。
获取二维数组的值:
In [63]: data = df[['SPEED','CAP']].values
将数据传递给boxcox
;在传入数据之前使用 .ravel()
方法将 data
展平为一维数组:
In [64]: result1d, lam = stats.boxcox(data.ravel())
In [65]: lam
Out[65]: -0.02063317824310837
重塑 result1d
回到原来的二维形状:
In [66]: result = result1d.reshape(data.shape)
In [67]: result.shape
Out[67]: (91, 2)
In [68]: result[:8]
Out[68]:
array([[-1.82384013, 7.23194418],
[-4.09393704, 3.25939313],
[-3.80017243, 4.39314839],
[-3.80017243, 4.39314839],
[-3.80017243, 4.39314839],
[-3.80017243, 4.39314839],
[-3.11153324, 5.01897958],
[-3.11153324, 5.01897958]])