老師留個小作業,用EXCEL做不同lambda(np)的泊松分布圖,這里分別用EXCEL,Python,MATLAB和R簡單畫一下。
1. EXCEL
運用EXCEL統計學公式,POISSON,算出各個數據,作圖。資料參考這里。
=POISSON.DIST(B$1,$A2,0)
注意這里絕對引用的方式,寫完公式之后,直接上下左右拖動鼠標即可自動填充。之后插入圖表。如下。
2.Python
這里stats.poisson.pmf中的pmf是probability mass function(概率質量函數)的縮寫。
以下引自WIKI:
在概率論中,概率質量函數(probability mass function,簡寫為pmf)是離散隨機變量在各特定取值上的概率。
概率質量函數和概率密度函數不同之處在於:概率質量函數是對離散隨機變量定義的,本身代表該值的概率;
概率密度函數是對連續隨機變量定義的,本身不是概率,只有對連續隨機變量的概率密度函數在某區間內進行積分后才是概率。
import scipy.stats as stats import matplotlib.pyplot as plt k = range(0,13) for ld in range(7): y = stats.poisson.pmf(k,ld) plt.xlabel('K') plt.ylabel('P') plt.title('POISSON') plt.plot(y,label=str(ld)) plt.legend() plt.show()
輸出圖形:
3.MATLAB
x=0:12; c = ['r','g','b','y','m','k']; for i = (1:6) y=poisspdf(x,i); plot(x,y,c(i)); hold on end
輸出如下:
4.R
pmf <- function(lambda){ y = list() for(k in 0:12){ y[k+1] <- round(dpois(x=k,lambda),3) } return(y) } mycols <- runif(10,min=1,max=length(colors())) for(i in 1:6){ par(new=TRUE) y = plot(c(0:12),pmf(i),type='l',ylim=c(0,0.4),col = mycols[i]) }
輸出:
美中不足的是,樓主不知道如何為每條線設置標簽。查了一下午legend函數,還是沒搞定。。。
解決了回頭補充吧。。。
###################################################
來補充了。。。問了問大佬們,給出下面的方法
pmf <- function(lambda){ y = list() for(k in 0:12){ y[k+1] <- round(dpois(x=k,lambda),3) } y = unlist(y) return(y) } mycols <- runif(10,min=1,max=length(colors())) y_data <- matrix(unlist(lapply(1:6,FUN = pmf)),ncol = 6) matplot(y_data,type='l',ylim=c(0,0.4),col = mycols) colnames(y_data) = 1:ncol(y_data) matplot(y_data,type='l',sub = "標記",ylim=c(0,0.4),col = mycols,main = "泊松分布圖") legend( "topright" ,legend = colnames(y_data) ,text.col = mycols ,col = mycols ,lty = mycols )
輸出: