Я создал скрипт наподобие приведенного ниже, чтобы сделать то, что я назвал «взвешенной» регрессией.:
library(plyr)
set.seed(100)
temp.df <- data.frame(uid=1:200,
bp=sample(x=c(100:200),size=200,replace=TRUE),
age=sample(x=c(30:65),size=200,replace=TRUE),
weight=sample(c(1:10),size=200,replace=TRUE),
stringsAsFactors=FALSE)
temp.df.expand <- ddply(temp.df,
c("uid"),
function(df) {
data.frame(bp=rep(df[,"bp"],df[,"weight"]),
age=rep(df[,"age"],df[,"weight"]),
stringsAsFactors=FALSE)})
temp.df.lm <- lm(bp~age,data=temp.df,weights=weight)
temp.df.expand.lm <- lm(bp~age,data=temp.df.expand)
Вы можете видеть, что в temp.df
каждая строка имеет свой вес, я имею в виду, что всего 1178, но для строк с одинаковыми bp
и age
они объединяются в 1 строку и представлены в столбце weight
.
Я использовал параметры weight
в функции lm
, затем я перепроверил результат с другим кадром данных, что кадр данных temp.df
«расширен». Но я обнаружил, что выходные данные lm
отличаются для 2 фреймов данных.
Я неправильно истолковал параметры weight
в функции lm
, и может ли кто-нибудь дать мне знать, как правильно запустить регрессию (, то есть без расширения фрейма данных вручную )для набора данных, представленного как temp.df
? Спасибо.