我正在寻找一次跨多个列的线性趋势。
我有一个数据框跨越许多列,并且想一次查找每一列的线性趋势,因此我尝试使用numpy.polyfit
和scipy.linregress
,但改为使用多列仅有一个会引起问题
我首先创建了一个x
向量,该向量的长度恰好用作x
变量
x = np.arange(0, len(data))
然后在polyfit
和scipy.linregress
中使用它
z = np.polyfit(x,data,1)
还有:
slope, intercept, r_value, p_value, std_err = stats.linregress(x,data)
这两种尝试均无效,至少效果不佳。 numpy
尝试返回的数组意义不大:
array([[ 2.41486068e-01, 1.44953560e+01, -2.13374613e+01,
2.96418989e+01, 3.22187822e+01, -2.31909185e+01,
1.29256966e+01, 3.00044995e+03, 5.29339525e+02,
1.17439628e+02, 2.14332301e+02, 5.53914345e+02,
2.01359443e+03, 3.85400413e+03, 2.73097523e+03,
4.36991434e+03, 4.65668318e+03, 1.09214809e+04,
1.22903880e+04, 4.54465470e+04, 1.44244135e+05,
4.44253437e+04, 3.97449362e+05, 4.50699857e+06],
[ 2.55029240e+01, 1.04122807e+02, 6.85701754e+02,
1.13766082e+02, -5.26374269e+01, 1.26212281e+03,
1.65853801e+02, -1.03461579e+04, -7.30163743e+02,
4.51048538e+03, 8.33842105e+02, 1.39311696e+03,
-3.93859649e+01, -1.13257018e+04, -7.10956725e+03,
-1.63806608e+04, -1.89128070e+04, -3.52064211e+04,
3.22219240e+04, 2.08106906e+05, -2.73555982e+05,
5.78638579e+05, -1.72544502e+06, -1.36054242e+07]])
尽管scipy
尝试出错了(显然,有多个Y
值没有意义,但是嘿,一定要尝试一下)
我会爱并且一直在寻找一种优雅的方法,可以一次在所有列中查找线性趋势,并获得我所拥有的列长的输出。
有关如何执行此操作的任何建议?