我对统计和分析非常陌生。我有一些基本的本科统计数据,现在正在学习 O'Reily 的 Practical Statistics for Data Science。我一直在对房屋销售数据进行一些引导练习,只是无法弄清楚为什么我的回归系数的引导置信区间始终比statsmodels每个系数给我的标准系数置信区间更宽。如果您能帮助我理解为什么会这样,如果缺少关键概念,我将非常感谢您的帮助,在哪里研究这些缺失的概念。我的数据框如下所示:
house[cols].head()
# Import resample from sklearn and statsmodels for regression
from sklearn.utils import resample
import statsmodels.api as sm
# Define bootstrap function
def bootstrap(data):
"""Returns the parameter coefficients of one set of bootstrapped data."""
da = resample(data)
model = sm.OLS.from_formula('AdjSalePrice ~ SqFtTotLiving + SqFtLot + Bathrooms + Bedrooms + BldgGrade', data=da).fit()
return model.params
# Create initial dataframe for model coefficients
params = pd.DataFrame(bootstrap(house[cols])).T
# Create bootstrap coefficients
for i in range(1000):
params.loc[i] = bootstrap(house[cols])
# Find the 95% confint with percentile method
params.quantile([0.025, 0.975]).T
这始终比来自简单 statsmodels OLS 结果的 95% CI 更宽:
house_model = sm.OLS.from_formula('AdjSalePrice ~ SqFtTotLiving + SqFtLot + Bathrooms + Bedrooms + BldgGrade', data=house)
house_result = house_model.fit()
house_result.summary()
更新:感谢所有为我指明大方向的人。由于我被问及数据中的任何类型的依赖关系,我做了一个相关热图和一个残差拟合值图。见下文:
这里并没有超出预期。
该图中显示的异常值让我认为我应该对房价进行对数转换,但我不太确定如何处理价格方差的比例增加。尽管如此,我最初的问题已经得到解答。
请注意,我仍在学习绳索,但数据中的异方差和异常值很可能是罪魁祸首。此外,正如最高回复所指出的那样,鉴于房地产价格确实聚集在社区中,数据中的聚集肯定是另一个罪魁祸首。


