ara*_*oun 5 python statsmodels
我有一个包含 3 列的数据框['X', 'Y', 'Z'],我想研究X和如何Y影响 的分布Z。为此,我想使用 nadaraya watson 的非参数回归器。在 statsmodels 中有一个名为 KernelReg 的类来实现它。
虽然我能够成功运行一维回归的代码(Zon Xand Zon 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')
Run Code Online (Sandbox Code Playgroud)
我得到的错误是cannot reshape array of size 3171442 into shape (2,1)
xv.shape = yv.shape = zv.shape =(1585721,)
Run Code Online (Sandbox Code Playgroud)
我已经尝试了指定 exog 的不同替代方法,例如
XYZ.loc[:, ['X', 'Y']] or XYZ.loc[:, ['X', 'Y']].values or np.concatenate([xv[:, None], yv[:, None]])
Run Code Online (Sandbox Code Playgroud)
总是同样的错误。
在statsmodels中exog的描述中。它应该是自变量的列表。列表中的每个元素都是一个单独的变量,我不知道如何解释它。
我相信需要为同一字符串(即在参数中)中的每个自变量给出变量类型var_type。如果两个变量都是连续的,那么您的情况的代码将是:
ksrmv = KernelReg(endog=zv, exog= [xv, yv], var_type='cc')
Run Code Online (Sandbox Code Playgroud)