一元线性回归slope

这篇博客探讨了如何在通达信公式中运用SLOPE函数计算股票趋势线的斜率。通过介绍线性最小二乘法的概念,解释了SLOPE如何寻找一组数据点的最优直线拟合。作者利用numpy的polyfit函数实现了滚动窗口计算SLOPE,并提供了模拟pandas rolling功能的辅助函数。文章还展示了如何在Excel中验证计算结果,并给出了Python代码示例来计算K线数据的斜率。
摘要由CSDN通过智能技术生成

看通达信公式其中SLOPE用到的挺多,其中有一个买卖线的用到SLOPE(C,21),然后就网上搜索这个函数的意义。

简单的说就是一组点比较接近线性关系,则找到一条直线,使得各点到此直接的距离最短。

如下图所示:

公式这一块的推导看的不明白,不过结果还是比较容易理解的

我们只需要求出b来即可。

验证起来也比较容易,可借助excel

先把, 这些值都算出来,然后通过公式:=(8*D10-(B10*C10))/(E10*8-B10*B10)

即可算出系数b=2.06

同样a也可根据公式:=C10/8-B14*B10/8算出a=4151

然后将a, b代入直线方程中,得出各点的预测值.

意义弄明白了,通达信中的SLOPE明显不是计算一个值,而是一组值。因此需要借助于numpy的polyfit()函数,此函数是用来算拟合的,实际上算出来的就是我们这里的系数b

def _calc_slope(x):
    return np.polyfit(range(len(x)), x, 1)[0]

此函数实现请求一组数的斜率,即我们这儿的系数b

通常我们获取的K线是一个比较大的数组,然后计算5根或是8根等K线的斜率,numpy没有像pandas中的rolling函数来作为移动窗口,来计算我们指定的K线的数值,因此需要做一个模拟:

def rolling_window(a, window):
    '''
    copy from http://stackoverflow.com/questions/6811183/rolling-window-for-1d-arrays-in-numpy
    '''
    shape = a.shape[:-1] + (a.shape[-1] - window + 1, window)
    strides = a.strides + (a.strides[-1], )
    return np.lib.stride_tricks.as_strided(a, shape=shape, strides=strides)

此函数模拟的是pandas的rolling移动窗口的功能,实际上此返回的是一个二维数组,其中每个子项为指定大小的数组。

这样我们就可以计算一组数的slope了

def slope(series, n):
    """
    求斜率
    """
    a = rolling_window(series, n)
    obj = np.array([_calc_slope(x) for x in a])
    new_obj = np.pad(obj, (len(series) - len(obj), 0), 'constant', constant_values=(np.nan, np.nan))
    return new_obj

new_obj这一行的代码是将缺失的数据补回nan,保持计算前后数据的总长度不变

 

NDVI一元线性回归分析是通过计算NDVI指数在一定时间范围内的变化趋势,来研究植被生长的趋势和变化。根据引用\[1\]中的描述,一元线性回归分析可以通过计算n年连续年份的趋势来确定生长季参数的变化趋势。而根据引用\[3\]中的方法,可以在ArcGIS平台上使用多幅NDVI影像构成一个ImageCollection,并使用ee.Reducer.linearFit()函数进行一元线性回归分析。这样可以得到线性回归的斜率、截距和delta_y等结果。此外,还可以使用ee.Reducer.pearsonsCorrelation()函数计算皮尔逊相关性系数Pearson correlation和p-value,以评估NDVI与其他变量之间的相关性。因此,通过NDVI一元线性回归分析,可以揭示植被生长的趋势和变化,并提供有关植被健康状况和环境变化的信息。 #### 引用[.reference_title] - *1* *2* [【遥感物候】30年物候始期空间分布特征(平均值)和变化趋势分析(Slope 一元线性回归分析)](https://blog.csdn.net/lucky51222/article/details/105337301)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [GEE:趋势分析(一元线性回归)](https://blog.csdn.net/qq_35591253/article/details/115743102)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

永远的麦田

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值