> 0 imputujemy wartości losowe
> lmputefwektor,"random")
1 23456789 10
1 5 5* 2 8 8 3 8* 10 4
Wiele funkeji do generowania irnputacji jest przewidzianych dla ramek danych. Jeżeli chcemy imputować średnie lub mediany, to najwygodniej skorzystać z funkcji impute(el071) lub ce.mimp(dprep). W pakiecie dprep znajduje się też funkcja ec.knnimp(dprep) do wyznaczania irnputacji bazującej na najbliższych sąsiadach. Poniżej przedstawiamy przykłady.
0 za brakujące obserwacje wstawiane są mediany imputacjemedian - ei071::imputeOiepatitis, "median")
0 za brakujące obserwacje wstawiane są średnie wartości imputacjemean * ce.mimpOiepatitis, "mean", atr=l:20)
0 za brakujące obserwacje wstawiamy typowe dla najbliższych sąsiadów imputacjeknn - ec.knnimpfhepatitls, k=10)
Jeżeli irnputacji chcemy użyć do przeprowadzenia analizy regresji, to zamiast budować model na jednej próbie z imputacjami lepiej określić model bazując na wielu próbach z imputacjami (wstawiane wartości generować można np. z rozkładu brzegowego). Wykorzystać do tego można funkcję areglmpute(Hmisc) a przykład użycia tej funkcji przedstawiamy poniżej.
> 0 dla trzech wybranych kolumn V6, V1Z i V18 należy wygenerować amputacje
> 0 aby oceny efektów byty stabilne, wykonujemy 100 replikacji danych
> replikacja <- aregImpute(~V18+V12+V6, n.impute-100. data-hepatitis)
> 0 dopasowujemy model liniou/y (korzystamy z funkcji olsO zamiast ImO)
> modelRepl <- fit.rault.impute(V18~V6+V12, ols, replikacje, data=
hepatitis)
> 0 podsumowanie modelu liniowego (z imputacjami)
> summary.lm(modelRepl)
Cali:
fitterCformula = formula, data ” completed.data)
Residuals:
-1.71527 -0.24236 0.05764 0.38473 2.25764
Coefficients:
Estimate Std. Error t value Pr(>ltl)
Intercept 2.8463 0.1955 14.560 < 2e-16 *»»
V6 0.3213 0.1105 2.908 0.00418 **
V12 0.3250 0.1115 2.915 0.00410 **
Slgnif. codes: 0 '♦**’ 0.001 0.01 0.05 0.1 ' ’ 1
Realdual standard error: 0.6073 on 152 degrees of freedom Multiple R-Squared: 0.1358, Adjusted R-squared: 0.1244 K-atatistic: 11.94 on 2 and 152 DF, p-value: 1.526e-05
PrzelWIU/Itllir wilyjilli' 14!)
Przeprowadźmy tc same analizy, ale bez wstawiania irnputacji. S/.cząślIwlo, wy niki nie są w tym przypadku znacząco różne.
> tt model liniowy bez irnputacji
> tt standardowo wiersze z brakującymi obserwacjami są usuwane
> modelBezRepl <- lm(V18~V6+V12, data-hepatitis)
> summary(modelBezRepl)
Cali:
lm(formula = Vł8 V6 + V12, data = hepatitis)
Residuals:
-1.721630 -0.271600 -0.007777 0.378370 2.271474
Coefficients:
Estimate Std. Error t value Pr(>|tl)
(Intercept) 2.8870 0.2047 14.104 < 2e-16 ***
V6 0.3069 0.1167 2.630 0.00956 **
V12 0.3139 0.1173 2.677 0.00838 **
Signif. codes: 0 ’***’ 0.001 0.01 ‘** 0.05 0.1 ‘ ' 1
Residual standard error: 0.6003 on 132 degrees of freedom (20 observations deleted due to missingness)
Multiple R-Squared: 0.1469, Adjusted R-squared: 0.1339 F-statistic: 11.36 on 2 and 132 DF, p-value: 2.8e-05
Do wyznaczania irnputacji można też posłużyć się metodą lasów losowych Osoby zainteresowane tym tematem odsyłam do opisu funkcji randomForest(randomForest) lub opisu tej metody w pozycji [32].
Najprostszą transformacją jest skalowanie. W przypadku wielu metod (głównie związanych z klasyfikacją) taka transformacja może poprawić wyniki. Skalowanie polega zazwyczaj na odjęciu od każdej obserwacji wartości średniej z próby i podzielenie tej różnicy przez odchylenie standardowe z próby.
W R. takie skalowanie można wykonać funkcją scalę (stats). Dwa dodatkowo parametry tej funkcji pozwalają określić, czy dane mają być centrowane center=TRUE (czyli czy odejmować wartość średnią) oraz czy mają być skalowane scale=TRUE (czyli czy mają być dzielone przez odchylenie standardowe). Poniżej przedstawiamy przykład użycia tej funkcji.
> tt kowariancja danych oryginalnych
> cov(dane[,c(l,6,7)])
wiek ciśnienie.skurczowe ciśnienie.rozkurczowe wiek 191.742176 -6.016662 -8.941249
ciśnienie.skurczowe -6.016662 246.903989 82.809186
ciśnienie.rozkurczowe -8.941249 82.809186 60.324616