Exemplo n.º 1
0
ana2.summary()

# In[16]:
# 取对数会使模型更有解释意义
# y和x同时取对数,减小异方差,同时增大 R-squared为0.480
exp['Income_ln'] = np.log(exp['Income'])  # 取对数之后 是按百分比 看指标
ana3 = ols('avg_exp_ln ~ Income_ln', exp).fit()
exp['Pred'] = ana3.predict(exp)
exp['resid'] = ana3.resid
exp.plot('Income_ln', 'resid', kind='scatter')  # 随着Income的增大,残差resid稍微形状好了些
ana3.summary()
# In[16]:
# 调用封装好的函数:残差分析
Ytrain = exp['avg_exp']
Ytrain.name = 'Y'
r_sq = ft.heteroscedastic(exp, Ytrain, ['Age', 'Income', 'dist_home_val'])

# 7.3.2 强影响点分析:学生化残差
# In[18]:
# 就是 R-squared 指标,可以看出 ln(exp)~ln(Income) 模型的 R-squared为0.480最高。
r_sq = {
    'exp~Income': ana1.rsquared,
    'ln(exp)~Income': ana2.rsquared,
    'ln(exp)~ln(Income)': ana3.rsquared
}
print(r_sq)

# In[19]:
# 7.3.2.1、手动计算 学生化残差
# 使用的就是 ln(exp)~ln(Income) 模型的 残差
# 求 学生化残差  =  (残差 - 残差均值) / 残差的标准差
Exemplo n.º 2
0
# 1、扰动项ε 独立同分布 (异方差检验、DW检验)
'''
MedInc :该街区住户的收入中位数
HouseAge :该街区房屋使用年代的中位数
AveRooms :该街区平均的房间数目
AveBedrms :该街区平均的卧室数目
Population :街区人口
AveOccup :平均入住率
Latitude :街区的纬度
Longitude :街区的经度
'''
col_list = [
    "MedInc", "HouseAge", "AveRooms", "AveBedrms", "Population", "AveOccup",
    "Latitude", "Longitude"
]
r_sq = ft.heteroscedastic(Xtrain, Ytrain, col_list)
# In[]:
col = "HouseAge"
r_sq = ft.heteroscedastic_singe(Xtrain, Ytrain, col)

# In[]:
# 2、扰动项ε 服从正太分布 (QQ检验)
ft.disturbance_term_normal(Xtrain, Ytrain, col_list)

# In[]:
# 3、学生化残差
temp_index = ft.studentized_residual(Xtrain, Ytrain, col_list, 'Y', num=3)
temp_data = Xtrain.loc[temp_index]
# In[]:
#ft.strong_influence_point(Xtrain, Ytrain) # 太耗时,最好不要用了