Разный вывод функции "summary"

Вопросы по статистическому пакету R. Не обязательно гео.
Ответить
ymr3R9Jge
Активный участник
Сообщения: 117
Зарегистрирован: 31 окт 2011, 00:18
Репутация: 14
Откуда: Кривий Ріг

Разный вывод функции "summary"

Сообщение ymr3R9Jge » 30 окт 2013, 14:27

Здравствуйте. Столкнулся с такой проблемой: есть набор данных (см. прикреплённый файл). Это блочная модель, сохранённая в виде CSV-файла. Она обрабатывается в R в виде data.frame. При вызове функции summary для всей модели - граничные значения первых столбцов (номерные значения) указываются правильно:

Код: Выделить всё

   NUM            NUM_BL            
 Min.   :    1   Min.   :    0  
 1st Qu.: 3524   1st Qu.: 3523
 Median : 7048   Median : 7046
 Mean   : 7048   Mean   : 7046
 3rd Qu.:10571   3rd Qu.:10570
 Max.   :14094   Max.   :14093
При вызове summary для каждого столбца в отдельности - неправильно (такое ощущение, что не находит последние строки):

Код: Выделить всё

> summary(bl$NUM)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
      1    3524    7048    7048   10570   14090
> summary(bl$NUM_BL)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
      0    3523    7046    7046   10570   14090
А для столбца NUM - ещё различаются и 3-и квартили
Вложения
BL_1.csv
(922 КБ) 659 скачиваний

gamm
Гуру
Сообщения: 4064
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1061
Ваше звание: программист
Откуда: Казань

Re: Разный вывод функции "summary"

Сообщение gamm » 30 окт 2013, 15:34

bug, однако ... команду summary() клинит для чисел более 14090

Код: Выделить всё

> summary(c(1,2,3,4,5)+20000)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  20000   20000   20000   20000   20000   20000 
причем во всех версиях ... копаться не охота, видимо, что-то с преобразованием чисел

ymr3R9Jge
Активный участник
Сообщения: 117
Зарегистрирован: 31 окт 2011, 00:18
Репутация: 14
Откуда: Кривий Ріг

Re: Разный вывод функции "summary"

Сообщение ymr3R9Jge » 30 окт 2013, 22:52

И ошибка на разных ОС - на домашнем компе стоит FreeBSD - тут summary тоже глючит.

[ Сообщение с мобильного устройства ]

Аватара пользователя
Игорь Черниенко
Активный участник
Сообщения: 137
Зарегистрирован: 28 мар 2009, 01:05
Репутация: 11
Откуда: Хабаровск, Южно-Сахалинск

Re: Разный вывод функции "summary"

Сообщение Игорь Черниенко » 04 ноя 2013, 13:26

При вычислении над единичным вектором, независимо от его длины происходит округление, как вверх так и вниз.

Код: Выделить всё

> df<-data.frame(x=rnorm(n=20000,mean=10,sd=15),y=rnorm(n=20000,mean=20,sd=18))
> summary(df)
       x                  y          
 Min.   :-49.3447   Min.   :-53.182  
 1st Qu.:  0.1113   1st Qu.:  7.848  
 Median : 10.0622   Median : 19.890  
 Mean   : 10.0443   Mean   : 20.023  
 3rd Qu.: 20.2222   3rd Qu.: 32.267  
 Max.   : 63.4305   Max.   :101.605  
> summary(df[,1])
    Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
-49.3400   0.1113  10.0600  10.0400  20.2200  63.4300 
> summary(df[1:100,1:2])
       x                  y          
 Min.   :-29.6739   Min.   :-30.208  
 1st Qu.: -0.8663   1st Qu.:  5.554  
 Median :  9.5432   Median : 19.920  
 Mean   :  9.5397   Mean   : 19.672  
 3rd Qu.: 19.2296   3rd Qu.: 34.020  
 Max.   : 50.2193   Max.   : 66.292  
> summary(df[1:100,1])
    Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
-29.6700  -0.8663   9.5430   9.5400  19.2300  50.2200 

> summary(df[1:2000,1])
    Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
-42.4300   0.4343   9.9880  10.3100  20.1500  62.2400 
> summary(df[1:2000,1:2])
       x                  y          
 Min.   :-42.4286   Min.   :-35.671  
 1st Qu.:  0.4343   1st Qu.:  7.429  
 Median :  9.9885   Median : 19.091  
 Mean   : 10.3091   Mean   : 19.808  
 3rd Qu.: 20.1502   3rd Qu.: 32.462  
 Max.   : 62.2423   Max.   : 81.896  

Может быть это не баг, а фича? :0)

gamm
Гуру
Сообщения: 4064
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1061
Ваше звание: программист
Откуда: Казань

Re: Разный вывод функции "summary"

Сообщение gamm » 04 ноя 2013, 14:08

Игорь Черниенко писал(а):Может быть это не баг, а фича? :0)
точно, фича - смотрим сырцы:

Код: Выделить всё

    function(object, ..., digits = max(3, getOption("digits") - 3))
эти перцы по умолчанию берут 7-3=4 значащих цифры. Интересно, почему не 7, как все остальные? смутило то, что все сломалось на числе 14090, уж больно не круглое (сегодня налетел на похожую фичу на числе 100001, так сразу стало понятно).

Ответить

Вернуться в «R»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей