我正在研究不同参数(样本大小和方差)的正态分布和伽马分布的鲁棒性。
我也得到了模拟结果。他们是三张桌子。 但现在我必须尝试绘制模拟分布图,以使人们更好地理解结果。
我还是R的新人。我是否需要包括所有三个表格'在分布图中的结果?
########################################################################
#For gamma distribution with equal skewness 1.5
# rm(list=ls()) # clean the workspace
nSims<-10000 #set the number of simulations
alpha<-0.05 #set the significance level
# to ensure the reproduction of the result
# here we declare the random seed generator
set.seed(1)
#create vector to combine all std deviations
sds<-matrix(c(4,4,6,4,8,4,10,4,12,4),nrow=2)
sd1<-c(4,6,8,10,12)
sd2<-c(4,4,4,4,4)
## Put the samples sizes into matrix then use a loop for sample sizes
sample_sizes<-matrix(c(10,10,10,25,25,25,25,50,25,100,50,25,50,100,100,25,100,100),
nrow=2)
#shape parameter for gamma distribution for equal skewness
#forty five cases for each skewness!!!!
sp1<-matrix(rep(c(16/9),each=45),ncol=1)
scp <- c(1,1.5,2,2.5,3)
##(use expand.grid)to create a data frame
ss_scp<- expand.grid(sample_sizes[2,],scp)
#create a matrix combining the forty five cases of combination of sample sizes,shape and scale parameter
all <- cbind(rep(sample_sizes[1,], 5),ss_scp[,1],sp1,ss_scp[,2])
# name the column samples 1 and 2 and standard deviation
colnames(all) <- c("m","n","sp","scp")
#set empty vector of length no.of simulation(10000) to store p-value
equal<-unequal<-mann<-c(rep(0,nrow(all)))
#set nrow =nsims because wan storing every p-value simulated
#for gamma distribution with equal skewness
matrix_t <-matrix(0,nrow=nSims,ncol=5)
matrix_u<-matrix(0,nrow=nSims,ncol=5)
matrix_mann <-matrix(0,nrow=nSims,ncol=5)
##for the samples sizes into matrix then use a loop for sample sizes
# this loop steps through the all_combine matrix
for(ss in 1:nrow(all))
{
#generate samples from the first column and second column
m<-all[ss,1]
n<-all[ss,2]
for (sim in 1:nSims)
{
#generate 2 random samples from gamma distribution with equal skewness
gamma1<-rgamma(m,all[ss,3],scale=all[ss,4])
gamma2<-rgamma(n,all[ss,3],scale=1)
gamma1<-gamma1-all[ss,3]*all[ss,4]
gamma2<-gamma2-all[ss,3]
#extract p-value out and store every p-value into matrix
p<-t.test(gamma1,gamma2,var.equal=TRUE)$p.value
q<-t.test(gamma1,gamma2,var.equal=FALSE)$p.value
r<-wilcox.test(gamma1,gamma2)$p.value
matrix_t[sim,1]<- p
matrix_u[sim,1]<- q
matrix_mann[sim,1] <- r
}
##store the result
equal[ss]<- sum(matrix_t[,1]<alpha)
unequal[ss]<-sum(matrix_u[,1]<alpha)
mann[ss]<- sum(matrix_mann[,1]<alpha)
}
g1_equal<-cbind(all, equal, unequal, mann)
print("g1_equal_skewness1.5)")
print(g1_equal)
#samples sizes (10,10),(10,25)..
#standard deviation ratio (1,1.5,2,2.5,3)
Gamma(equal skewness) Gamma(unequal skewness)
1.5 2.0 2.5 3.0 3.5 (1.5,1) 2,1.5 2.5,2 3,2.5 3.5,3
10,10
Normal
1.0 506 382 379 343 270 246 422 426 383 303 247
1.5 472 493 463 507 537 571 531 518 548 528 532
2.0 516 597 679 736 829 935 597 680 760 836 951
2.5 498 627 747 905 1028 1215 687 825 944 1011 1197
3.0 493 678 864 1010 1190 1379 705 831 1015 1170 1436
10,25
1.0 511 568 557 633 647 630 603 599 604 652 654
1.5 501 692 840 977 1012 1173 675 756 940 1068 1130
2.0 438 713 951 1049 1264 1470 773 869 1055 1259 1401
2.5 506 810 939 1101 1300 1594 761 960 1155 1339 1512
3.0 524 787 933 1176 1378 1599 772 967 1201 1339 1612
25,25
1.0 479 463 451 447 417 414 513 429 439 469 392
1.5 493 534 556 504 568 587 537 517 528 539 555
2.0 510 543 599 676 663 773 538 607 677 712 725
2.5 487 591 662 731 807 908 581 643 733 769 893
3.0 488 614 668 761 811 1002 582 694 728 900 946
25,50
1.0 519 585 487 569 559 579 521 572 568 581 583
1.5 510 532 651 695 725 836 625 647 729 737 802
2.0 501 586 660 758 846 888 618 653 794 876 957
2.5 466 635 687 823 937 996 612 702 782 909 1025
3.0 492 603 719 824 970 1045 640 704 826 945 1073
25,100
1.0 486 559 589 670 726 778 552 614 666 752 750
1.5 494 621 700 787 903 955 602 703 774 842 1008
2.0 516 617 707 817 969 1073 613 755 774 932 1091
2.5 470 598 731 873 969 1118 624 752 849 970 1094
3.0 493 710 718 824 1021 1167 645 746 887 988 1149
50,25
1.0 495 507 511 552 550 534 491 527 496 554 534
1.5 535 472 470 489 470 413 458 503 460 456 410
2.0 499 507 478 488 468 465 495 490 542 528 489
2.5 486 500 532 517 559 629 509 493 526 569 601
3.0 490 586 536 561 654 644 544 567 563 614 665
50,100 1.0 518 515 530 531 514 569 516 494 517 548 578
1.5 528 503 542 597 596 656 554 565 612 606 708
2.0 453 525 588 640 727 775 520 625 628 727 772
2.5 500 586 660 669 733 837 552 622 660 695 802
3.0 494 557 640 680 747 847 582 634 686 776 834
100,25
1.0 489 553 607 641 712 777 557 560 653 677 751
1.5 516 497 553 532 619 595 496 548 512 549 553
2.0 500 492 483 518 472 468 536 521 497 463 463
2.5 493 498 473 446 488 461 483 463 476 452 472
3.0 482 490 516 481 488 500 563 477 496 492 537
100,100
1.0 472 508 492 483 517 487 517 521 476 505 485
1.5 507 498 496 511 518 546 520 520 498 547 531
2.0 465 478 540 542 584 599 496 504 585 558 589
2.5 508 486 566 551 614 602 520 539 583 601 642
3.0 494 497 575 545 614 651 561 557 590 615 624
答案 0 :(得分:0)
听起来你想知道如何绘制你的发行版。您可以创建三个单独的图,也可以在一个图上覆盖每个分布。以下是ggplot2
中的方法。
假设您的数据框为df
,其中包含dist1
,dist2
和dist3
列。
install.packages('ggplot2')
library(ggplot2)
ggplot(df, aes(x = dist1)) +
geom_density(color = 'red') +
geom_density(aes(x = dist2), color = 'green') +
geom_density(aes(x = dist3), color = 'blue')
这应该给你一个三行的密度图,每个分布一个。如果要创建三个单独的图,只需为每个分布创建一个新的ggplot。
plot1 <- ggplot(df, aes(x = dist1) + geom_density()
plot2 <- ggplot(df, aes(x = dist2) + geom_density()
......等等。这有帮助吗?