{ "cells": [ { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true, "pycharm": { "is_executing": true } }, "outputs": [], "source": [ "import pandas as pd\n", "import numpy as np\n", "from sklearn.ensemble import RandomForestRegressor\n", "from sklearn import metrics\n", "import matplotlib.pyplot as plt\n", "from pprint import pprint\n", "import statsmodels.api as sm\n", "from stargazer.stargazer import Stargazer" ] }, { "cell_type": "code", "execution_count": null, "outputs": [], "source": [ "for i in dataL1:\n", " rreal=dataL1[i][dataL1[i]['YYYYmm']>201901][['stkdret']].values.reshape(-1)\n", " from sklearn.ensemble import RandomForestRegressor\n", " # 准备数据,'SMB1L1','HML1L1','RMW1L1','CMA1L1'\n", " X_train = dataL1[i][dataL1[i]['YYYYmm']<=201901][['RiskPremium1L1','SMB1L1','HML1L1','RMW1L1','CMA1L1']] # 训练集特征\n", " y_train = dataL1[i][dataL1[i]['YYYYmm']<=201901]['stkdret'] # 训练集目标变量\n", " X_test=dataL1[i][dataL1[i]['YYYYmm']>201901][['RiskPremium1L1','SMB1L1','HML1L1','RMW1L1','CMA1L1']]\n", " # 创建随机森林模型\n", " model = RandomForestRegressor(n_estimators=100, max_depth=10)\n", " # 训练模型\n", " model.fit(X_train, y_train)\n", " # 获取特征重要性\n", " importances = model.feature_importances_\n", " # 打印特征重要性\n", " # for i, importance in enumerate(importances):\n", " # print(f\"Feature {i+1}: {importance}\")\n", " rout = model.predict(X_test)\n", " rmean = np.mean(rreal)\n", " rfree=dataL1[i][dataL1[i]['YYYYmm']>201901]['rfL1'].values.reshape(-1)\n", " volt2 = np.sum(dataL1[i][dataL1[i]['YYYYmm']>201901]['stkdret'].values.reshape(-1)**2)\n", " R2os, MFSEadj, pvalue_MFSEadj = myfun_stat_gains(rout, rmean, rreal)\n", " Uout, Umean, DeltaU = myfun_econ_gains(rout, rmean, rreal, rfree, volt2, gmm=5)\n", "\n" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": null, "outputs": [], "source": [ "from sklearn import svm\n", "from sklearn.model_selection import train_test_split\n", "from sklearn.metrics import accuracy_score\n", "\n", "for i in dataL1:\n", " rreal=dataL1[i][dataL1[i]['YYYYmm']>201901][['stkdret']].values.reshape(-1)\n", " from sklearn.ensemble import RandomForestRegressor\n", " # 准备数据,'SMB1L1','HML1L1','RMW1L1','CMA1L1'\n", " X_train = dataL1[i][dataL1[i]['YYYYmm']<=201901][['RiskPremium1L1','SMB1L1','HML1L1','RMW1L1','CMA1L1']] # 训练集特征\n", " y_train = dataL1[i][dataL1[i]['YYYYmm']<=201901]['stkdret'] # 训练集目标变量\n", " X_test=dataL1[i][dataL1[i]['YYYYmm']>201901][['RiskPremium1L1','SMB1L1','HML1L1','RMW1L1','CMA1L1']]\n", " # 创建SVM模型\n", " model = svm.SVR()\n", " # X_train, X_test, y_train, y_test = train_test_split(dataL1[i][['RiskPremium1L1','SMB1L1','HML1L1','RMW1L1','CMA1L1']], dataL1[i]['stkdret'], test_size=0.7, random_state=42)\n", " # 训练模型\n", " model.fit(X_train, y_train)\n", " # 预测\n", " y_pred = model.predict(X_test)\n", " # 模型评估\n", " rout = model.predict(X_test)\n", " rmean = np.mean(rreal)\n", " rfree=dataL1[i][dataL1[i]['YYYYmm']>201901]['rfL1'].values.reshape(-1)\n", " volt2 = np.sum(dataL1[i][dataL1[i]['YYYYmm']>201901]['stkdret'].values.reshape(-1)**2)\n", " R2os, MFSEadj, pvalue_MFSEadj = myfun_stat_gains(rout, rmean, rreal)\n", " Uout, Umean, DeltaU = myfun_econ_gains(rout, rmean, rreal, rfree, volt2, gmm=5)" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": null, "outputs": [], "source": [ "from keras.layers import LSTM, Dense\n", "from sklearn.model_selection import train_test_split\n", "from keras.models import Sequential\n", "from sklearn.metrics import mean_squared_error\n", "for i in dataL1:\n", " rreal=dataL1[i][dataL1[i]['YYYYmm']>201901][['stkdret']].values.reshape(-1)\n", " from sklearn.ensemble import RandomForestRegressor\n", " # 准备数据,'SMB1L1','HML1L1','RMW1L1','CMA1L1'\n", " X_train = dataL1[i][dataL1[i]['YYYYmm']<=201901][['RiskPremium1L1','SMB1L1','HML1L1','RMW1L1','CMA1L1']].values # 训练集特征\n", " y_train = dataL1[i][dataL1[i]['YYYYmm']<=201901]['stkdret'].values # 训练集目标变量\n", " X_test=dataL1[i][dataL1[i]['YYYYmm']>201901][['RiskPremium1L1','SMB1L1','HML1L1','RMW1L1','CMA1L1']].values\n", " # 创建SVM模型\n", " X_train=X_train.reshape(len(X_train),5,1)\n", " model = Sequential()\n", " model.add(LSTM(50, activation='relu', input_shape=(5, 1)))\n", " model.add(Dense(1)) # 输出层\n", " # X_train, X_test, y_train, y_test = train_test_split(dataL1[i][['RiskPremium1L1','SMB1L1','HML1L1','RMW1L1','CMA1L1']], dataL1[i]['stkdret'], test_size=0.7, random_state=42)\n", " # 训练模型\n", " model.compile(optimizer='adam', loss='mse')\n", " model.fit(X_train, y_train)\n", " # 模型评估\n", " rout = model.predict(X_test)\n", " rout=rout.reshape(-1)\n", " rmean = np.mean(rreal)\n", " rfree=dataL1[i][dataL1[i]['YYYYmm']>201901]['rfL1'].values.reshape(-1)\n", " volt2 = np.sum(dataL1[i][dataL1[i]['YYYYmm']>201901]['stkdret'].values.reshape(-1)**2)\n", " R2os, MFSEadj, pvalue_MFSEadj = myfun_stat_gains(rout, rmean, rreal)\n", " Uout, Umean, DeltaU = myfun_econ_gains(rout, rmean, rreal, rfree, volt2, gmm=5)" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": null, "outputs": [], "source": [ "from sklearn.cross_decomposition import PLSRegression\n", "from sklearn.metrics import mean_squared_error, r2_score\n", "from sklearn.model_selection import train_test_split\n", "from sklearn.preprocessing import StandardScaler\n", "\n", "for i in dataL1:\n", " rreal=dataL1[i][dataL1[i]['YYYYmm']>201901][['stkdret']].values.reshape(-1)\n", " from sklearn.ensemble import RandomForestRegressor\n", " # 准备数据,'SMB1L1','HML1L1','RMW1L1','CMA1L1'\n", " X_train = dataL1[i][dataL1[i]['YYYYmm']<=201901][['RiskPremium1L1','SMB1L1','HML1L1','RMW1L1','CMA1L1']] # 训练集特征\n", " y_train = dataL1[i][dataL1[i]['YYYYmm']<=201901]['stkdret'].values # 训练集目标变量\n", " X_test=dataL1[i][dataL1[i]['YYYYmm']>201901][['RiskPremium1L1','SMB1L1','HML1L1','RMW1L1','CMA1L1']].values\n", " # 准备数据集,假设X是输入变量,y是输出变量\n", " # X和y应该是数值型的特征矩阵和目标向量\n", " # 这里只是示例数据,你需要根据实际情况替换为你自己的数据\n", " # 数据预处理 - 标准化\n", " X=dataL1[i][['RiskPremium1L1','SMB1L1','HML1L1','RMW1L1','CMA1L1']].values\n", " scaler = StandardScaler()\n", " X_scaled = scaler.fit_transform(X)\n", " # 应用PLSR算法\n", " n_components = 2 # 设置偏最小二乘回归因子的数量\n", " pls = PLSRegression(n_components=n_components)\n", " pls.fit(X_train, y_train)\n", " # 模型评估 - 在测试集上进行预测并计算评估指标\n", " y_pred = pls.predict(X_test)\n", " mse = mean_squared_error(rreal, y_pred)\n", " r2 = r2_score(rreal, y_pred)\n", " # 使用训练好的模型进行预测\n", " new_data_scaled = scaler.transform(X_test)\n", " rout = pls.predict(X_test)\n", " rout=rout.reshape(-1)\n", " rmean = np.mean(rreal)\n", " rfree=dataL1[i][dataL1[i]['YYYYmm']>201901]['rfL1'].values.reshape(-1)\n", " volt2 = np.sum(dataL1[i][dataL1[i]['YYYYmm']>201901]['stkdret'].values.reshape(-1)**2)\n", " R2os, MFSEadj, pvalue_MFSEadj = myfun_stat_gains(rout, rmean, rreal)\n", " Uout, Umean, DeltaU = myfun_econ_gains(rout, rmean, rreal, rfree, volt2, gmm=5)\n" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": null, "outputs": [], "source": [], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": null, "outputs": [], "source": [], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": null, "outputs": [], "source": [], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": null, "outputs": [], "source": [], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": null, "outputs": [], "source": [], "metadata": { "collapsed": false } } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.6" } }, "nbformat": 4, "nbformat_minor": 0 }