Powered By Blogger

воскресенье, 14 июня 2015 г.

Пост №15 А, нет. Вроде всё хорошо.

Вот результаты:


(Intercept)  lnDISTANCE       lnPOP     lnPRICE 
 29.4843122  -0.8773576   2.7149047  -5.3049186 
[1] "C:\\Users\\MSI\\Desktop\\Diploma\\1.png"
[1] "1"      "passed"
(Intercept)  lnDISTANCE       lnPOP     lnPRICE 
-19.3794672  -0.4621249   0.7261156   1.5506031 
[1] "C:\\Users\\MSI\\Desktop\\Diploma\\2.png"
[1] "2"      "passed"
(Intercept)  lnDISTANCE       lnPOP     lnPRICE 
 76.8466006   3.8141986  -0.3617652  -8.1779239 
[1] "C:\\Users\\MSI\\Desktop\\Diploma\\3.png"
[1] "3"      "passed"
(Intercept)  lnDISTANCE       lnPOP     lnPRICE 
-15.2803225  -0.6359375   0.3386784   1.7648999 
[1] "C:\\Users\\MSI\\Desktop\\Diploma\\4.png"
[1] "4"      "passed"
(Intercept)  lnDISTANCE       lnPOP     lnPRICE 
-13.1994550  -0.2358880   0.3877832   1.1868844 
[1] "C:\\Users\\MSI\\Desktop\\Diploma\\5.png"
[1] "5"      "passed"
(Intercept)  lnDISTANCE       lnPOP     lnPRICE 
-21.5115385  -0.9477819   0.3907421   2.3869958 
[1] "C:\\Users\\MSI\\Desktop\\Diploma\\6.png"
[1] "6"      "passed"
(Intercept)  lnDISTANCE       lnPOP     lnPRICE 
-20.7035107  -1.2498314   0.7403301   1.7907024 
[1] "C:\\Users\\MSI\\Desktop\\Diploma\\7.png"
[1] "7"      "passed"
(Intercept)  lnDISTANCE       lnPOP     lnPRICE 
 -9.8970255  -0.6955112   0.2408305   1.3855454 
[1] "C:\\Users\\MSI\\Desktop\\Diploma\\8.png"
[1] "8"      "passed"
(Intercept)  lnDISTANCE       lnPOP     lnPRICE 
 -44.268107    3.068713   -3.123103    6.573212 
[1] "C:\\Users\\MSI\\Desktop\\Diploma\\9.png"
[1] "9"      "passed"
(Intercept)  lnDISTANCE       lnPOP     lnPRICE 
 10.2295082  -0.2577039   0.2874827  -0.8856239 
[1] "C:\\Users\\MSI\\Desktop\\Diploma\\10.png"
[1] "10"     "passed"
(Intercept)  lnDISTANCE       lnPOP     lnPRICE 
  6.6679963  -1.0220502   0.8448232  -0.8223628 
[1] "C:\\Users\\MSI\\Desktop\\Diploma\\11.png"
[1] "11"     "passed"
(Intercept)  lnDISTANCE       lnPOP     lnPRICE 
-17.7441202  -0.7740952   0.4280146   1.8287646 
[1] "C:\\Users\\MSI\\Desktop\\Diploma\\12.png"
[1] "12"     "passed"
(Intercept)  lnDISTANCE       lnPOP     lnPRICE 
-13.9135456  -0.2475969   0.7041399   0.9254973 
[1] "C:\\Users\\MSI\\Desktop\\Diploma\\13.png"
[1] "13"     "passed"
(Intercept)  lnDISTANCE       lnPOP     lnPRICE 
 -5.7745402  -0.7750687   0.9078026   0.2074171 
[1] "C:\\Users\\MSI\\Desktop\\Diploma\\14.png"
[1] "14"     "passed"
(Intercept)  lnDISTANCE       lnPOP     lnPRICE 
 -5.0219419  -0.6046783   0.6864889   0.3247134 
[1] "C:\\Users\\MSI\\Desktop\\Diploma\\15.png"
[1] "15"     "passed"
(Intercept)  lnDISTANCE       lnPOP     lnPRICE 
  24.228005   -1.010879    1.497688   -3.301982 
[1] "C:\\Users\\MSI\\Desktop\\Diploma\\16.png"
[1] "16"     "passed"
(Intercept)  lnDISTANCE       lnPOP     lnPRICE 
-7.99067844 -0.79251906  1.20779808 -0.07727839 
[1] "C:\\Users\\MSI\\Desktop\\Diploma\\17.png"
[1] "17"     "passed"
(Intercept)  lnDISTANCE       lnPOP     lnPRICE 
-14.1889447  -0.1917927   0.7302785   0.8847434 
[1] "C:\\Users\\MSI\\Desktop\\Diploma\\18.png"
[1] "18"     "passed"
(Intercept)  lnDISTANCE       lnPOP     lnPRICE 
-11.7166027  -0.4288422   0.7131081   0.8144704 
[1] "C:\\Users\\MSI\\Desktop\\Diploma\\19.png"
[1] "19"     "passed"
(Intercept)  lnDISTANCE       lnPOP     lnPRICE 
 -1.9957444  -1.3588665   1.2278396  -0.3995821 
[1] "C:\\Users\\MSI\\Desktop\\Diploma\\20.png"
[1] "20"     "passed"
(Intercept)  lnDISTANCE       lnPOP     lnPRICE 
-16.5786902  -0.7940430   0.9785531   1.0504018 
[1] "C:\\Users\\MSI\\Desktop\\Diploma\\21.png"
[1] "21"     "passed"
(Intercept)  lnDISTANCE       lnPOP     lnPRICE 
-22.3771538  -1.0983045   0.7542901   2.0455875 
[1] "C:\\Users\\MSI\\Desktop\\Diploma\\22.png"
[1] "22"     "passed"
(Intercept)  lnDISTANCE       lnPOP     lnPRICE 
-13.6910908  -1.0223097   0.6740041   1.3242571 
[1] "C:\\Users\\MSI\\Desktop\\Diploma\\23.png"
[1] "23"     "passed"
(Intercept)  lnDISTANCE       lnPOP     lnPRICE 
   13.51368    -1.41809          NA          NA 
[1] "24"                        "GTFO! Grub a better city!"
(Intercept)  lnDISTANCE       lnPOP     lnPRICE 
-11.1474284  -0.6454736   0.6911271   0.8126065 
[1] "C:\\Users\\MSI\\Desktop\\Diploma\\25.png"
[1] "25"     "passed"
(Intercept)  lnDISTANCE       lnPOP     lnPRICE 
 -8.7342022  -0.9006813   0.6811819   0.9039362 
[1] "C:\\Users\\MSI\\Desktop\\Diploma\\26.png"
[1] "26"     "passed"



А вот сам скрипт:
#Код для диплома. Часть один
#
#


f <- read.csv("C:/Users/MSI/Desktop/Diploma/raw_data_v71.csv",header = TRUE,  sep=";", quote="\"", encoding = "UTF-8");
names(f) <- c("FROM","TO", "MIGR", "TO_POP", "FROM_LAT", "FROM_LON", "TO_LAT","TO_LON" , "DISTANCE", "FR_OKTMO", "TO_OKTMO", "SAME_REG", "ADM2", "ADM1", "M2PRICE");
MigrMore5 <- f[f$MIGR >5, ];
citiesMore5 <-  unique(MigrMore5$FROM) ;
citiesMore5 <- as.vector(citiesMore5);
for (i in 1:length(citiesMore5))
{
  City <- MigrMore5[MigrMore5$FROM == citiesMore5[i], ]; 
  lnMIGR <- log(City$MIGR);

  lnDISTANCE <- log(City$DISTANCE);
  lnPOP <- log(City$TO_POP);

  lnPRICE <- log(City$M2PRICE);

  #print(j);
  #print(lnPRICE);

  SAME_REG <- City$SAME_REG;
  LinearModel <- lm(lnMIGR ~ lnDISTANCE + lnPOP + lnPRICE );
  coef<- LinearModel[[1]];

  #print(i);
  print(coef);
  res <- LinearModel[[2]];
  dimention<-dim(City);

  #len <- dimention[2];
  deep <-dimention[1];
  if(    any(is.na(coef[1:4])))
  {
    print(c(i, "GTFO! Grub a better city!"))
    next;
  }

  #else
  #{

    prediction <- matrix(0, 1, deep);
    for (j in 1:deep)
    {
      prediction[j] <- coef[1] + coef[2]*lnDISTANCE[j] + coef[3]*lnPOP[j]  + coef[4]*lnPRICE[j] #+ coef[5]*SAME_REG[j]; 
    }
    adress<- paste0 ("C:\\Users\\MSI\\Desktop\\Diploma\\", i, ".png");
    print(adress)
    png(adress);

    #  print(i);
    #  print(lnMIGR);
    #  print(prediction)
;
    plot(lnMIGR, prediction, xlab = "Real migration", ylab = "Predicted migration");
    title(as.character(citiesMore5[i]));
    abline(0,1);
    for (j in 1:deep)
    {
      prediction[j] <- coef[1] + coef[2]*lnDISTANCE[j] + coef[3]*lnPOP[j]  + coef[4]*lnPRICE[j] + res[j] #+ coef[5]*SAME_REG[j]; 
    }

   
    dev.off();
    print(c(i, "passed"))
  #}
}


Так, надо снова убрать отсюда невязки.


Хотя, блин, и так норм вполне хДД -  разброс немного дофига.
Ай лан. Научрук сказал выпилить. Значит, выпилим!

Теперь настало время посчитать отклонения.  Интереееесно, а совпадут ли они с невязками?....


Ну лан, модифицировала я алгоритм.


countRes <- rep (0, deep); #'cause my compiler say me "object countRes not found...
    prediction <- rep (0, deep);
    lnMIGR <- as.vector(lnMIGR); #why not?
    for (j in 1:deep)
    {
      prediction[j] <- coef[1] + coef[2]*lnDISTANCE[j] + coef[3]*lnPOP[j]  + coef[4]*lnPRICE[j] #+ coef[5]*SAME_REG[j]; 
    }
    adress<- paste0 ("C:\\Users\\MSI\\Desktop\\Diploma\\", i, ".png");
    print(adress)
    png(adress);
 
    plot(lnMIGR, prediction, xlab = "Real migration", ylab = "Predicted migration");
    title(as.character(citiesMore5[i]));
    abline(0,1);
    for (j in 1:deep)
    {
      prediction[j] <- coef[1] + coef[2]*lnDISTANCE[j] + coef[3]*lnPOP[j]  + coef[4]*lnPRICE[j] #+ res[j] #+ coef[5]*SAME_REG[j]; 
      countRes[j] <- prediction[j] - lnMIGR[j];
    }
    abscountRes<- abs(countRes); #cause I can
    dev.off();
    #print(c("prediction", prediction));
    #print(c("countRes", countRes));
    print(c(i, "passed"));
  #count residual  as abs(predicted - lnMIGR)  & in data.frame and compare whith
  #automatically counted residuals with lm() function.
  #How does write table?... I forgot. Fuck!
 
  CityData <- data.frame(prediction, countRes, abscountRes, lnMIGR, res);
  #I ought to write a table


Сохранились данные для последнего города:
> CityData <- data.frame(prediction, countRes, abscountRes, lnMIGR, res)
prediction countRes abscountRes lnMIGR res 1 2.7672967 0.570072123 0.570072123 2.197225 -0.570072123 2 0.7509037 -1.040855778 1.040855778 1.791759 1.040855778 3 3.5887068 0.033358755 0.033358755 3.555348 -0.033358755 4 3.2875790 0.397207287 0.397207287 2.890372 -0.397207287 5 2.0680551 -0.704533589 0.704533589 2.772589 0.704533589 6 4.5512828 -0.236208987 0.236208987 4.787492 0.236208987 7 2.8265355 0.428640216 0.428640216 2.397895 -0.428640216 8 2.7734113 0.827501107 0.827501107 1.945910 -0.827501107 9 2.6688438 0.366258754 0.366258754 2.302585 -0.366258754 10 3.4778743 0.219777754 0.219777754 3.258097 -0.219777754 11 2.1100003 0.030558732 0.030558732 2.079442 -0.030558732 12 4.1904416 -2.521298837 2.521298837 6.711740 2.521298837 13 2.9931516 0.508244992 0.508244992 2.484907 -0.508244992 14 2.0617794 -0.423127273 0.423127273 2.484907 0.423127273 15 3.1900841 1.110642524 1.110642524 2.079442 -1.110642524 16 3.4720867 0.581714944 0.581714944 2.890372 -0.581714944 17 0.4768813 -1.469028853 1.469028853 1.945910 1.469028853 18 2.4878688 -0.946118450 0.946118450 3.433987 0.946118450 19 4.5336369 -1.652571735 1.652571735 6.186209 1.652571735 20 2.2895602 0.497800687 0.497800687 1.791759 -0.497800687 21 2.3274000 0.535640566 0.535640566 1.791759 -0.535640566 22 5.5622905 -0.006054031 0.006054031 5.568345 0.006054031 23 3.2035471 -0.054549442 0.054549442 3.258097 0.054549442 24 3.4701918 1.524281677 1.524281677 1.945910 -1.524281677 25 1.6992851 -0.785621597 0.785621597 2.484907 0.785621597 26 3.9649095 -2.739504820 2.739504820 6.704414 2.739504820 27 3.4142821 -0.274597399 0.274597399 3.688879 0.274597399 28 3.2493475 0.764440848 0.764440848 2.484907 -0.764440848 29 2.9137336 0.515838323 0.515838323 2.397895 -0.515838323 30 2.9925917 0.220002928 0.220002928 2.772589 -0.220002928 31 4.5013872 -0.718968596 0.718968596 5.220356 0.718968596 32 1.9627436 -1.081778835 1.081778835 3.044522 1.081778835 33 1.8372367 0.045477240 0.045477240 1.791759 -0.045477240 34 2.8970870 0.951176827 0.951176827 1.945910 -0.951176827 35 2.1984189 0.118977325 0.118977325 2.079442 -0.118977325 36 3.5134003 -0.097517660 0.097517660 3.610918 0.097517660 37 3.0996335 0.902408955 0.902408955 2.197225 -0.902408955 38 3.5039071 -0.539144207 0.539144207 4.043051 0.539144207 39 3.1003570 0.797771863 0.797771863 2.302585 -0.797771863 40 3.1014143 1.309654840 1.309654840 1.791759 -1.309654840 41 3.1055232 0.161084228 0.161084228 2.944439 -0.161084228 42 3.2626875 1.183245928 1.183245928 2.079442 -1.183245928 43 2.4614093 0.515499159 0.515499159 1.945910 -0.515499159 44 2.5720968 0.174201505 0.174201505 2.397895 -0.174201505 Ну прогнала я их функцей "стебля с листьями"

> stem(countRes)

  The decimal point is at the |

  -2 | 75
  -2 | 
  -1 | 75
  -1 | 10
  -0 | 98775
  -0 | 432110
   0 | 00012222444
   0 | 55555668889
   1 | 0123
   1 | 5
Ну, пожалуй, когда отличие около нуля - это норм. А вот //условие заработало: //
for( i in 1:length(x)){ if ((x[i]<2.2) | (x[i]>3.8)) x[i] <- 1 }
[1] 1.0 1.0 1.0 1.0 1.0 1.0 2.2 2.4 2.6 2.8 3.0 3.2 3.4 3.6 1.0 1.0 1.0 1.0 1.0 1.0
[21] 1.0


Ну ладно. Сначала попытаемся прогнать по квантилям :) 

Все, что не лежит в интервале [(x_{25}-1{,}5 \cdot (x_{75}-x_{25})), \,\, (x_{75}+1{,}5 \cdot (x_{75}-x_{25}))] 
 - выброс

Комментариев нет:

Отправить комментарий