excel标准差 标准差公式为什么除以n-1

时间:2023-05-07 02:37/span> 作者:tiger 分类: 新知 浏览:1032 评论:0

本文介绍如何使用 Python 的 akshare 包获取股票、指数和场内基金的收盘价,并进行数据处理,以获取线性回归的期望值、残差标准差、斜率、截距、相关系数、P 值和标准误差等相关数据。

通过对线性回归相关数据的分析,量化投资者可以更好地判断市场走向。具体步骤如下:

首先,使用 akshare 包获取所需数据,并将其存储在 pandas 数据框中。然后,使用 pandas 和 numpy 库进行数据处理,计算出线性回归所需的各项数据。最后,使用 statsmodels 库进行线性回归分析,并输出结果。

通过以上步骤,我们可以得到更加清晰、简洁和整体可读性的分析结果,帮助量化投资者更好地进行市场分析和投资决策。

整理代码

import akshare as ak
import pandas as pd
import numpy as np
import csv
from scipy import stats
from datetime import datetime, timedelta
  

 获取指数、股票、场内基金的线性回归期望值和残差标准差等

def linear_regression_stock_multi(symbol, kind, years_list):     参数分别为代码,种类和调取数据年份列表
    df_list = []    
    for many_years in years_list:    将调取年份列表放入循环

         获取指定股票近多少年的收盘价数据
        today = datetime.now().date()    获取当前时间
        start_date = (today - timedelta(days=365*many_years)).strftime(&39;%Y%m%d&39;)     获取多少年之前的时间
        end_date = today.strftime(&39;%Y%m%d&39;)      对今天的时间设置取结束时间,总设定格式
        if kind == &39;指数&39;:       种类包括指数、股票和场内基金,不同种类其函数不同,所以,设置了条件
            df = ak.index_zh_a_hist(symbol=symbol, period=&34;daily&34;, start_date=start_date, end_date=end_date)
        elif kind == &39;股票&39;:
            df = ak.stock_zh_a_hist(symbol=symbol, period=&34;daily&34;, start_date=start_date, end_date=end_date, adjust=&34;qfq&34;)
             参数分别表示代码、周期、开始时间,结束时间 是否复权  
        elif kind == &39;基金&39;:
            df = ak.fund_etf_hist_em(symbol=symbol, period=&34;daily&34;, start_date=start_date, end_date=end_date, adjust=&34;qfq&34;)
         计算线性回归期望值和残差的标准差
        y = df[&34;收盘&34;]
        x = np.arange(len(y))
        slope, intercept, r_value, p_value, std_err = stats.linregress(x, y)
        expected_value = intercept + slope * len(y)      计算期望值
        residuals = y - (intercept + slope * x)      残差
        std_residuals = np.std(residuals)    残差标准差

         构建结果DataFrame
        index=[f&34;{many_years}year_expected_value&34;, f&34;{many_years}year_std_residuals&34;, f&34;{many_years}year_slope&34;, f&34;{many_years}year_intercept&34;, f&34;{many_years}year_r_value&34;, f&34;{many_years}year_p_value&34;, f&34;{many_years}year_std_err&34;]
        data = [expected_value, std_residuals, slope, intercept, r_value, p_value, std_err]

         上面数据分别表示线性回归期望值、残差标准差、斜率、截距、相关系数、P值、标准误差
        result_df = pd.DataFrame(data=[data], index=[symbol], columns=index)
        df_list.append(result_df)
    result = pd.concat(df_list, axis=1)
    return result


 通过读取excel中的列“代码”(注意导入的是str,不是int),进行怎么,需要借助自定义函数dustom_functions(code, kind)
def get_circulate_xslx_str(kind, file_index_code,sheet):    参数为导入的excel表格和第几张表
    codes = pd.read_excel(file_index_code, sheet_name=sheet, engine=&39;openpyxl&39;)[&39;代码&39;].astype(str).tolist()  读取csv文件,选择“代码”列,并将其转换为列表。int导入的是整数型
    all_data = pd.DataFrame()
    for code in codes:
        ratios = dustom_functions(code,kind)  假设有一个名为get_valuation_ratios的函数,返回指定股票的估值比率数据。
        all_data = pd.concat([all_data, ratios])
    return all_data

 调取自定义函数,进行循环获取数据
def dustom_functions(code, kind):
    if kind == &39;线性回归&39;:
        return linear_regression_stock_multi(code, &39;股票&39;, [7,3,1])

print(get_circulate_xslx_str(&39;线性回归&39;,&39;测试.xlsx&39;,0))
 print(linear_regression_stock_multi(&39;000300&39;, &39;指数&39;, [7,3,1]))

此段代码主要是用于获取指数、股票、场内基金的线性回归期望值和残差标准差等,并通过读取 excel 中的列“代码”进行循环获取数据。

其中,linear_regression_stock_multi 函数用于获取指数、股票、场内基金的线性回归期望值和残差标准差等,get_circulate_xslx_str 函数用于通过读取 excel 中的列“代码”,进行怎么,需要借助自定义函数 dustom_functions(code, kind)。

最后,通过调用get_circulate_xslx_str函数,进行循环获取数据,并将结果打印输出。

文章评论