【问题标题】:How calculate OLS regression with Survey Weights in Python.如何在 Python 中使用调查权重计算 OLS 回归。
【发布时间】:2017-11-18 10:34:44
【问题描述】:

我想对带有调查权重的调查数据进行线性回归。

调查数据来自欧盟,每个观察值都有权重。 (一位受访者为 0.4,另一位受访者为 1.5。)

这个权重被描述为:

“欧洲权重,变量 6,产生一个有代表性的样本 在分析中使用整个欧洲共同体。这个变量 根据每个国家的情况调整每个国家样本的大小 对欧洲共同体人口的贡献。”

我正在使用 sklearn 进行计算。

from sklearn import linear_model
regr = linear_model.LinearRegression()
regr.fit(X,y, sample_weight = weights)

X 是一个熊猫数据框。 y 是一个 numpy.ndarray。 weights 是熊猫系列。

我是否正确使用了“sample_weight”,这是在 scikit 中处理调查权重的正确方法吗?

【问题讨论】:

    标签: python pandas numpy scikit-learn statsmodels


    【解决方案1】:

    TL 博士;是的。

    这是一个非常简单的例子,

    import numpy as np
    import matplotlib.pylab as plt
    from sklearn import linear_model
    regr = linear_model.LinearRegression()
    
    X = np.array([1, 2, 4]).reshape(-1, 1)
    y = np.array([10, 20, 60]).reshape(-1, 1)
    weights = np.array([1, 1, 1])
    
    def weighted_lr(X, y, weights):
        """Quick function to run weighted linear regression and return a
        plot and some predictions"""
    
        regr.fit(X,y, sample_weight=weights)
        y_pred = regr.predict(X)
        plt.scatter(X, y)
        plt.plot(X, y_pred)
        plt.title('Weights: %s' % ', '.join(str(i) for i in weights))
        plt.show()
        return y_pred
    
    y_pred = weighted_lr(X, y, weights)
    print(y_pred)
    
    weights = np.array([1000, 1000, 1])
    y_pred = weighted_lr(X, y, weights)
    
    print(y_pred)
    

    [[  7.14285714]
     [ 24.28571429]
     [ 58.57142857]]
    

    [[  9.96051333]
     [ 20.05923001]
     [ 40.25666338]]
    

    在第一个具有偶数权重的线性回归模型中,我们看到该模型的行为与正常线性回归模型的预期一致。

    然而,接下来,我们看到在第二个模型中,最后一个值的权重较低,几乎忽略了最后一个值。大部分训练都已加权到此处的其他两个值。

    【讨论】:

    • 感谢一百万真的有用!
    • @TiarnándeBurca 没问题。如果这回答了您的问题,那么您应该接受它。如果没有,请评论我错过的要点或编辑您的答案以详细说明。
    • 我认为我已将其标记为已接受。 (我确实尝试过投票,因为我认为这是机制,但我没有足够的“代表”来做到这一点。)再次感谢。
    • @TiarnándeBurca 很棒,不用担心。您甚至会因接受问题而获得 +2 代表,因此值得这样做(如果答案回答了您的问题!!):)
    猜你喜欢
    • 2017-11-29
    • 2020-10-25
    • 2015-12-31
    • 1970-01-01
    • 2015-07-22
    • 2016-10-21
    • 1970-01-01
    • 2015-08-27
    • 2020-09-27
    相关资源
    最近更新 更多