我正在对人口普查数据进行回归,其中我的因变量是预期寿命,我有八个自变量。数据汇总为城市,因此我有数千个观测值。
我的模型虽然有些异方差。我想运行加权最小二乘法,其中每个观测值都按城市人口加权。在这种情况下,这意味着我想通过人口平方根的倒数来加权观察。然而,我不清楚什么是最好的语法。目前,我有:
Model=lm(…,weights=(1/population))
这是对的吗?或者它应该是:
Model=lm(…,weights=(1/sqrt(population)))
(我在这里找到了这个问题:Weighted Least Squares - R但它没有说明R如何解释权重参数。)
答案 0 :(得分:2)
来自?lm
:“权重:在拟合过程中使用的可选权重向量。应为NULL或数字向量。如果为非NULL,则使用加权最小二乘权重{{1} (即,最小化和(w * e ^ 2));否则使用普通最小二乘法。“ R不对权重论证做任何进一步的解释。
所以,如果你想要最小化的是(从每个点到拟合线的平方距离* 1 / sqrt(总体),那么你想要weights
。如果你想最小化总和(从每个点到拟合线的平方距离* 1 /人口)然后你想要...weights=(1/sqrt(population))
。
关于哪一个最合适...这是CrossValidated的问题!
答案 1 :(得分:2)
为了回答你的问题,卢卡斯,我想你想要权重=(1 /人口)。 R将权重参数化为与方差成反比,因此以这种方式指定权重相当于假设误差项的方差与城市的人口成比例,这是此设置中的常见假设。
但请检查一下假设!如果误差项的方差确实与种群大小成比例,那么如果您将每个残差除以其相应样本大小的平方根,则残差应具有恒定方差。请记住,将随机变量除以常数会导致方差除以该常数的平方。
以下是检查方法:通过
获取回归中的残差residuals = lm(..., weights = 1/population)$residuals
然后将残差除以总体方差的平方根:
standardized_residuals = residuals/sqrt(population)
然后比较对应于人口规模下半部分的残差中的样本方差:
variance1 = var(standardized_residuals[population < median(population)])
对应于人口规模上半部分的残差中的样本方差:
variance2 = var(standardized_residuals[population > median(population)])
如果这两个数字variance1
和variance2
相似,那么你做的就是正确的。如果它们完全不同,那么可能违反了你的假设。