在线性模型 = 0 + 1 × i + 2 × j + 3 × k + 中,什么值 ,j,k ∈ [1,100] 会导致模型具有最高的 R-Squared?
数据集由 100 个自变量和 1 个因变量组成。每个变量有 50 个观测值。
我唯一的猜测是遍历三个变量的所有可能组合并比较每个组合的 R 平方。我用 Python 完成的方法是:
import itertools as itr
import pandas as pd
import time as t
from sklearn import linear_model as lm
start = t.time()
#linear regression model
LR = lm.LinearRegression()
#import data
data = pd.read_csv('csv_file')
#all possible combinations of three variables
combs = [comb for comb in itr.combinations(range(1, 101), 3)]
target = data.iloc[:,0]
hi_R2 = 0
for comb in combs:
variables = data.iloc[:, comb]
R2 = LR.fit(variables, target).score(variables, target)
if R2 > hi_R2:
hi_R2 = R2
indices = comb
end = t.time()
time = float((end-start)/60)
print 'Variables: {}\nR2 = {:.2f}\nTime: {:.1f} mins'.format(indices, hi_R2, time)
完成需要 4.3 分钟。我相信这种方法对于每个变量都有数千个观察值的数据集效率不高。你会建议什么方法?
谢谢你。