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函数,进行循环获取数据,并将结果打印输出。