2013-08-15 3 views
5

Я выполняю регрессию по данным переписи, где моя зависимая переменная - это ожидаемая продолжительность жизни, и у меня есть восемь независимых переменных. Данные агрегируются как города, поэтому у меня много тысяч наблюдений.Как установить взвешенные наименьшие квадраты в r для гетеросексуальных данных?

Моя модель несколько гетеросексуальна. Я хочу запустить взвешенные наименьшие квадраты, где каждое наблюдение взвешивается населением города. В этом случае это означало бы, что я хочу весить наблюдения обратным квадратным корнем населения. Однако мне непонятно, какой будет лучший синтаксис. В настоящее время у меня есть:

Model=lm(…,weights=(1/population)) 

Это правильно? Или это должно быть:

Model=lm(…,weights=(1/sqrt(population))) 

(я нашел этот вопрос здесь:. Weighted Least Squares - R, но не уточняет, как R интерпретирует аргумент весов)

+0

Если вы хотите похудеть за счет обратного квадратного корня от населения, что будет аргументом для варианта 1 над вариантом 2? – joran

+0

Я думаю, что это корень вопроса - R интерпретирует аргумент веса далее? –

ответ

1

чтобы ответить на ваш вопрос, Лукас, Я думаю, что вы хотите, чтобы весы = (1/население). R параметризует веса как обратно пропорциональные дисперсиям, поэтому указание весов таким образом сводится к предположению, что дисперсия erro 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 похожи, то вы делаете что-то правильно.Если они сильно отличаются друг от друга, возможно, ваше предположение нарушено.

2

От ?lm: «вес: дополнительный вектор весов, чтобы быть используемый в процессе подгонки. Должен быть NULL или числовой вектор. Если используются не-NULL, взвешенные наименьшие квадраты с весами weights (т. е. минимизация суммы (w * e^2)), в противном случае используются обычные наименьшие квадраты ». R не делает никакой дальнейшей интерпретации аргумента веса.

Итак, если вы хотите свести к минимуму сумму (квадрат расстояния от каждой точки до линии соответствия * 1/sqrt (население), то вы хотите ...weights=(1/sqrt(population)).Если вы хотите минимизировать сумму (квадрат расстояние от каждой точки до посадки линии * 1/население), то вы хотите ...weights=1/population.

, какой из них является наиболее подходящим ... это вопрос CrossValidated!

Смежные вопросы