我对 python 和一般编程都很陌生,所以请原谅任何简单的错误/应该显而易见的事情。
我想做的事情非常简单,我只想将线性趋势(一维多项式)拟合到一堆时间序列上,看看斜率是正还是负。现在我只是想让它在一个时间序列中工作。
问题:pandas 和 numpy 似乎都无法对日期时间进行回归。我的约会时间不规律(通常每月 1 天,但不是同一天),因此无法使用中提出的建议时间序列 Pandas 的线性回归 https://stackoverflow.com/questions/30425490/linear-regression-from-time-series-pandas/30431930#30431930
我的时间序列 csv 看起来像:
StationName, year, month, day, depth, NO3-N, PO4-P, TotP, TotN,
Kvarnbacken (Savaran), 2003, 2, 25, 0.5, 46, 9, 14, 451
Kvarnbacken (Savaran), 2003, 3, 18, 0.5, 64, 15, 17, 310
Kvarnbacken (Savaran), 2003, 3, 31, 0.5, 76, 7, 19, 566
到目前为止我所拥有的是
import datetime as dt
from scipy import stats
import numpy as np
# read in station csv file
data = pd.read_csv('Kvarnbacken (Savaran)_2003.csv')
data.head()
# set up dates to something python can recognize
data['date'] = pd.to_datetime(data.year*10000+data.month *
100+data.day, format='%Y%m%d')
I tried
slope, intercept, r_value, p_value, std_err = stats.linregress(data.date,
data.TotP)
并得到错误
类型错误:ufunc add 无法使用类型为 dtype('
我也尝试过
coefP = np.polyfit(data.date, data.TotP, 1)
polyP = np.poly1d(coefP)
ys = polyP(data.date)
print 'For P: coef, poly'
print coefP
print polyP
并得到同样的错误。
我猜想解决这个问题的最简单方法是做一些事情,我只计算自第一次测量以来的天数,然后用 days_since 进行回归到总磷浓度(totP),但我不确定最简单的方法这样做或者是否还有其他技巧。