Как отобразить цифры в научной записи в / до статистического теста? - PullRequest
0 голосов
/ 16 мая 2019

У меня есть эти данные в data.frame с именем df.

 "nothing" "SNP" "Site" "Color" "Frequence"
 "19595089" "scaffold9976|size55684_51259" "Katiu" "Green" 0.153846153846154
 "41766717" "scaffold9976|size55684_51259" "Gambier" "Green" 0.149532710280374
 "63938345" "scaffold9976|size55684_51259" "Gambier" "Red" 0.102803738317757
 "86109973" "scaffold9976|size55684_51259" "Katiu" "Yellow" 0.1
 "108281601" "scaffold9976|size55684_51259" "Takapoto" "Yellow" 0.0465116279069767
 "130453229" "scaffold9976|size55684_51259" "Hatchery" "Red" 0.0459770114942529
 "152624857" "scaffold9976|size55684_51259" "Gambier" "Yellow" 0.123893805309735
 "174796485" "scaffold9976|size55684_51259" "Takapoto" "Red" 0.0476190476190476
 "196968113" "scaffold9976|size55684_51259" "Katiu" "Red" 0.076271186440678
 "219139741" "scaffold9976|size55684_51259" "Takapoto" "Green" 0.0957446808510638
 "241311369" "scaffold9976|size55684_51259" "Hatchery" "Yellow" 0.0705882352941176
 "263482997" "scaffold9976|size55684_51259" "Hatchery" "Green" 0.121212121212121

И я запускаю эту модель:

 library(multcomp)

 SNP_name <- as.character(unique(df$SNP)[11])
 ok <- filter(df, df$SNP  == unique(df$SNP)[11])
 mod <- glm(Frequence ~ Color + Site, data = ok)
 K1 <- glht(mod, mcp(Color = "Tukey"))$linfct
 K2 <- glht(mod, mcp(Site = "Tukey"))$linfct
 pvaleur <- summary(glht(mod, linfct = rbind(K1, K2)))$test$pvalues[1:9]

Некоторые значения значимы:

 > summary(glht(mod, linfct = rbind(K1, K2)))

     Simultaneous Tests for General Linear Hypotheses

 Fit: glm(formula = Frequence ~ Color + Site, data = ok)

 Linear Hypotheses:
                           Estimate Std. Error z value Pr(>|z|)    
 Red - Green == 0         -0.061916   0.007059  -8.771  < 1e-04 ***
 Yellow - Green == 0      -0.044835   0.007059  -6.352  < 1e-04 ***
 Yellow - Red == 0         0.017081   0.007059   2.420  0.11152    
 Hatchery - Gambier == 0  -0.046151   0.008151  -5.662  < 1e-04 ***
 Katiu - Gambier == 0     -0.015371   0.008151  -1.886  0.34344    
 Takapoto - Gambier == 0  -0.062118   0.008151  -7.621  < 1e-04 ***
 Katiu - Hatchery == 0     0.030780   0.008151   3.776  0.00133 ** 
 Takapoto - Hatchery == 0 -0.015967   0.008151  -1.959  0.30122    
 Takapoto - Katiu == 0    -0.046747   0.008151  -5.735  < 1e-04 ***

Но первое сравнение показывает меньшее значение, чем у других:

 $pvalues
 [1] 0.000000e+00 1.336467e-09 1.114732e-01 9.550331e-08 3.434281e-01 1.207923e-13 1.406660e-03 3.012392e-01
 [9] 1.276309e-07

Действительно, для объяснения причины здесь , R вместо 1e-400 использует 0 (или 0.000000e+00), например, если экспонента слишком "огромна".

Но мне нужно точно знать «число этой экспоненты».

Существует множество потоков, объясняющих, как отображать научные обозначения после статистических данных, таких как здесь , здесь или здесь с помощью:

options(scipen = 0)
options(digits = 2)

или это

format(pvaleur, scientific = TRUE)

Но это только дает:

 [1] 0.0e+00 1.4e-09 1.1e-01 1.1e-07 3.4e-01 1.5e-13 1.3e-03 3.0e-01 5.8e-08 

Итак, как заставить тест не получить 0.0e+00, а "реальное" значение?

Любые советы, которые помогут мне при написании кода, будут очень благодарны

EDIT:

 > dput(head(df,15))
 structure(list(nothing = c(22173807L, 44345435L, 66517063L, 88688691L, 
 110860319L, 133031947L, 155203575L, 177375203L, 199546831L, 221718459L, 
 243890087L, 2180L, 22173808L, 44345436L, 66517064L), SNP = structure(c(1L, 
 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L), .Label = c("scaffold1|size567472_100042", 
 "scaffold1|size567472_100059", "scaffold1|size567472_100087", 
 "scaffold1|size567472_100124", "scaffold1|size567472_100201", 
 "scaffold1|size567472_100212", "scaffold1|size567472_100253", 
 "scaffold1|size567472_100277", "scaffold1|size567472_100300", 
 "scaffold1|size567472_100304", "scaffold9976|size55684_51259"
 ), class = "factor"), Site = structure(c(1L, 1L, 3L, 4L, 2L, 
 1L, 4L, 3L, 4L, 2L, 2L, 3L, 1L, 1L, 3L), .Label = c("Gambier", 
 "Hatchery", "Katiu", "Takapoto"), class = "factor"), Color = structure(c(1L, 
 2L, 3L, 3L, 2L, 3L, 2L, 2L, 1L, 3L, 1L, 1L, 1L, 2L, 3L), .Label = c("Green", 
 "Red", "Yellow"), class = "factor"), Frequence = c(0.333333333333333, 
 0.225, 0.12, 0.0952380952380952, 0.297297297297297, 0.107142857142857, 
 0.0465116279069767, 0.196078431372549, 0.354166666666667, 0.222222222222222, 
 0.138888888888889, 0.1, 0.188679245283019, 0.315789473684211, 
 0.115384615384615)), row.names = c(NA, 15L), class = "data.frame")
...