/ Align = "left" / lm () W R - jak uzyskać niestałe pasma predykcyjne wokół dopasowanych wartości

Więc obecnie próbuję narysować przedział ufności dla modelu liniowego. Dowiedziałem się, że powinienem używać predict.Lm () do tego, ale mam kilka problemów naprawdę ze zrozumieniem funkcji i nie lubię używać funkcji bez wiedzy o tym, co się dzieje. Znalazłem kilka poradników na ten temat, ale tylko z odpowiednim kodem R, bez prawdziwego wyjaśnienia. Jest to funkcja sama w sobie:

## S3 method for class 'lm'
predict(object, newdata, se.fit = FALSE, scale = NULL, df = Inf,
        interval = c("none", "confidence", "prediction"),
        level = 0.95, type = c("response", "terms"),
        terms = NULL, na.action = na.pass,
        pred.var = res.var/weights, weights = 1, ...)

Teraz, co mam problem ze zrozumieniem:

    1) newdata  
    An optional data frame in which to look for variables 
    with which to predict. If omitted, the fitted values are used.
  • Każdy zdaje się użyj newdata do tego, ale nie do końca rozumiem dlaczego. Do obliczenia przedziału ufności oczywiście potrzebuję danych, dla których ten przedział jest (jak # obserwacji, średnia z x itp.), więc nie może być to, co przez to rozumie. Ale potem: co to znaczy?

    2) interval
    Type of interval calculation.

  • Ok.. ale po co jest "brak"?

    3a) type
    Type of prediction (response or model term).

    3b) terms
    If type="terms", which terms (default is all terms)

  • 3a: Czy Mogę przez to uzyskać przedział ufności dla jednej konkretnej zmiennej w moim modelu? A jeśli tak, to co to jest 3b na to? Gdybym mógł określić termin w 3a, nie byłoby sensu robić tego ponownie w 3b.. więc znowu się mylę, ale nie wiem dlaczego.

Myślę, że niektórzy z was mogą pomyśleć: dlaczego po prostu tego nie wypróbujecie? I zrobiłbym (nawet gdyby to może nie rozwiązałoby wszystkiego tutaj), ale teraz Nie wiem, jak to zrobić. Ponieważ Nie wiem teraz, do czego służy newdata, Nie wiem, jak go używać, a jeśli spróbuję, nie uzyskam odpowiedniego przedziału ufności. Jakoś to jest bardzo ważne, jak ty wybierz te dane, ale po prostu nie rozumiem!

EDIT: chcę dodać, że moim zamiarem jest zrozumienie, jak przewidywać.lm działa. Mam na myśli, że nie rozumiem, czy to działa tak, jak myślę. Czyli oblicza y-hat (przewidywane wartości), a następnie dodaje/odejmuje dla każdego upr / lwr-granice interwału, aby obliczyć kilka punktów danych (wyglądających wtedy jak linia zaufania)?? Następnie chciałbym undestand dlaczego jest konieczne, aby mieć taką samą długość w newdata jak w linear model.

Author: AdamO, 2012-09-22

1 answers

Uzupełnić dane:

d <- data.frame(x=c(1,4,5,7),
                y=c(0.8,4.2,4.7,8))

Dopasuj model:

lm1 <- lm(y~x,data=d)

Przedziały ufności i przewidywania z oryginalnymi wartościami x:

p_conf1 <- predict(lm1,interval="confidence")
p_pred1 <- predict(lm1,interval="prediction")

Conf. i pred. odstępy z nowymi wartościami x (ekstrapolacja i bardziej drobno / równomiernie rozmieszczone niż oryginalne dane):

nd <- data.frame(x=seq(0,8,length=51))
p_conf2 <- predict(lm1,interval="confidence",newdata=nd)
p_pred2 <- predict(lm1,interval="prediction",newdata=nd)

Wszystko razem:

par(las=1,bty="l") ## cosmetics
plot(y~x,data=d,ylim=c(-5,12),xlim=c(0,8)) ## data
abline(lm1) ## fit
matlines(d$x,p_conf1[,c("lwr","upr")],col=2,lty=1,type="b",pch="+")
matlines(d$x,p_pred1[,c("lwr","upr")],col=2,lty=2,type="b",pch=1)
matlines(nd$x,p_conf2[,c("lwr","upr")],col=4,lty=1,type="b",pch="+")
matlines(nd$x,p_pred2[,c("lwr","upr")],col=4,lty=2,type="b",pch=1)

Tutaj wpisz opis obrazka

Użycie nowych danych pozwala na ekstrapolację poza oryginalnymi danymi; również, jeśli oryginalne dane są słabo lub nierównomiernie rozmieszczone, przedziały predykcji (które nie są liniami prostymi) mogą nie być dobrze przybliżone przez interpolację liniową między oryginalnymi wartościami x ...

Nie jestem do końca pewien, co masz na myśli przez "przedział ufności dla jednej konkretnej zmiennej w moim modelu"; jeśli chcesz przedziały ufności na parametr , powinieneś użyć confint. Jeśli chcesz przewidywania zmian oparte tylko na niektórych zmieniających się parametrach (ignorując niepewność wynikającą z innych parametrów), to robisz rzeczywiście chce używać type="terms".

interval="none" (domyślne) po prostu mówi R, aby nie zawracał sobie głowy obliczaniem przedziałów ufności lub przewidywania i zwracał tylko przewidywane wartości.

 21
Author: Ben Bolker,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-15 17:28:37