Stworzyłem skrypt jak poniżej, aby zrobić coś, co zwane jako „ważonej” regresji:„ważone” regresji w R
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)
Widać, że w temp.df
, każdy wiersz ma swoją wagę, co Chodzi mi o to, że w sumie jest 1178 próbek, ale w przypadku wierszy z tymi samymi bp
i age
są one scalane w jeden wiersz i reprezentowane w kolumnie weight
.
że stosowane parametry weight
w funkcji lm
, to krzyżują sprawdzić wynik z innym dataframe że temp.df
dataframe jest „rozciągany”. Zauważyłem jednak, że wyjścia lm
różnią się dla dwóch ramek danych.
Czy ja źle zinterpretować parametry weight
w lm
funkcji, a może ktoś dać mi znać, jak biegnę regresji prawidłowo (tzn bez zwiększania dataframe ręcznie) dla zbioru danych prezentowanych jak temp.df
? Dzięki.
Te dwie regresje dają identyczne wyniki. –
zobacz dane wyjściowe 'summary', są one różne – lokheart
Współczynniki są takie same, ale wartości p są rzeczywiście różne. Myślę, że następujące czynności. Po rozszerzeniu danych zakłada się, że obserwacje są niezależne: ponieważ istnieje wiele danych, można mieć pewność co do oszacowań, a wartości p są niskie. Podczas stosowania wag liczba obserwacji pozostaje mała, a wartości p są wysokie. –