我有一个包含3列['X', 'Y', 'Z']
的数据框,我想研究X
和Y
如何影响Z
的分布。为此,我想使用nadaraya watson的非参数回归量。在statsmodels中有一个名为KernelReg的类来实现它。
虽然我能够成功运行一维回归的代码(Z
上的X
和Z
上的Y
),但我很难运行它二维回归。
我的代码如下:XYZ
是我的数据框
xv = XYZ['X'].values; yv = XYZ['Y'].values; zv = XYZ['Z'].values
from statsmodels.nonparametric.kernel_regression import KernelReg
ksrmv = KernelReg(endog=zv, exog= [xv, yv], var_type='c')
我得到的错误是cannot reshape array of size 3171442 into shape (2,1)
xv.shape = yv.shape = zv.shape =(1585721,)
我已经尝试过另外一种指定exog的方法,如
XYZ.loc[:, ['X', 'Y']] or XYZ.loc[:, ['X', 'Y']].values or np.concatenate([xv[:, None], yv[:, None]])
总是一样的错误。
在statsmodels中对exog的描述。它应该是一个独立变量列表。列表中的每个元素都是一个单独的变量,我不确定如何解释它。
答案 0 :(得分:0)
我认为必须为同一字符串(即var_type
参数中的每个自变量)提供变量类型。如果两个变量都是连续的,那么您的代码将是:
ksrmv = KernelReg(endog=zv, exog= [xv, yv], var_type='cc')