Czy istnieją jakieś programy lub biblioteki (np do R) które pomogą mi w obliczaniu statystyk opisowych dla szeregów przedziałowych rozdzielczych.
Najbardziej potrzebuję mediany, mody i dobrych przybliżeń podstawowych kwantyli.
Jeżeli to zły dział to przepraszam.
Statystyki opisowe dla szeregów rozdzielczych przedziałowych
Statystyki opisowe dla szeregów rozdzielczych przedziałowych
Kiedyś napisałem sobie taki skrypt. Może pomoże. Na pewno są też dostępne pakiety, ale nie szukałem. Możesz dowolnie modyfikować kod.
Kod: Zaznacz cały
#-------------------------------------------------------------
# Kwantyle
#-------------------------------------------------------------
kwantyl=function(p,dane)
{
n=sum(dane[,2]) # liczebność próby
k=1 # początkowy numer klasy kwantyla
sk=0 # początkowa poprzednia liczebność skumulowana
# Ustalenie numeru klasy kwantyla
while(sk+dane[k,2]<n*p)
{
sk=sk+dane[k,2]
k=k+1
}
# Wyliczenie kwantyla
return(dane[k,1]+(n*p-sk)*(dane[2,1]-dane[1,1])/dane[k,2])
}
Q1=function(dane)
return(kwantyl(0.25,dane))
Me=function(dane)
return(kwantyl(0.5,dane))
Q3=function(dane)
return(kwantyl(0.75,dane))
# Szereg punktowy i konstrukcja szeregu rozdzielczego
wzrost=c(169,153,148,154,170,157,175,159,160,165,156,160,151,174,169,186,
170,159,161,173,163,164,159,158,169,155,159,148,163,161,171,171,
167,180,183,162,163,177,166,159,172,162,172,161,145,162,168,155,
145,154,153,167,166,153,179,162,163,162,166,168,165,163,161,177,
170,149,160,164,148,154,161,172,163,149,159,155,171,156,170,154)
print(max(wzrost)-min(wzrost))
print(table(cut(wzrost,seq(from=140,to=185,by=5))))
# Dane do sezregu rozdzielczego 1
srodki1=2.5+seq(from=140,to=180,by=5)
n1=c(2,5,11,13,20,14,9,4,1)
wzrost1=rep(srodki1,n1)
mean(wzrost1)
median(wzrost1)
d1=which.max(n1) # numer klasy dominanty
do1=srodki1[d1]-2.5+5*(n1[d1]-n1[d1-1])/(2*n1[d1]-n1[d1-1]-n1[d1+1])
do1
# Dane do szeregu rozdzielczego 2
srodki2=5+seq(from=140,to=180,by=10)
n2=c(7,24,34,13,1)
wzrost2=rep(srodki2,n2)
mean(wzrost2)
median(wzrost2)
d2=which.max(n2) # numer klasy dominanty
do2=srodki2[d2]-5+10*(n2[d2]-n2[d2-1])/(2*n2[d2]-n2[d2-1]-n2[d2+1])
do2
# Szereg rozdzielczy 1 do obliczenia kwantyli
wzrost_kw1=array(c(srodki1-2.5,n1),c(9,2))
# Szereg rozdzielczy 2 do obliczenia kwantyli
wzrost_kw2=array(c(srodki2-5,n2),c(5,2))
# Szereg rozdzielczy do obliczenia pozostałych miar
wzrost_r=rep(srodki,n)
mean(wzrost)
# Kwantyle w szeregu 1
for(i in c(0.25,0.5,0.75)) print(kwantyl(i,wzrost_kw1))
for(i in 1:9/10) print(kwantyl(i,wzrost_kw1))
# Kwantyle w szeregu 2
for(i in c(0.25,0.5,0.75)) print(kwantyl(i,wzrost_kw2))
for(i in 1:9/10) print(kwantyl(i,wzrost_kw2))
# Kwantyle w szeregu punktowym
print(quantile(wzrost,c(0.25,0.5,0.75)))
print(quantile(wzrost,1:9/10))
# Miary
m=c(mean(wzrost1),mean(wzrost2),mean(wzrost))
s=c(sd(wzrost1),sd(wzrost2),sd(wzrost))
m
# Odchylenia standardowe
data.frame(row.names="Odchylenia standardowe",Szereg_1=sd(wzrost1),Szereg_2=sd(wzrost2),Szczegółowy=sd(wzrost))
# Przedziały typowych wartości cechy
data.frame(row.names=c("Szereg 1","Szereg 2","Szereg szczegółowy"),Początek=m-s,Koniec=m+s)
# Zmienność i asymetria
do=c(do1,do2,NA)
M3=c(mean((wzrost1-mean(wzrost1))^3),mean((wzrost2-mean(wzrost2))^3),mean((wzrost-mean(wzrost))^3))
data.frame(row.names=c("Szereg 1","Szereg 2","Szereg szczegółowy"),Współczynnik_zmienności=s/m,Współczynnik_skośności=(m-do)/s,Współczynnik_asymetrii=M3/s^3)
# Szereg kwartylowy
quantile(wzrost,c(0.25,0.5,0.75),type=1)
table(cut(wzrost,c(0,156,162,169,200)))
quantile(wzrost,1:10/10,type=1)
table(cut(wzrost,c(0,151,155,159,161,162,164,167,170,173,186)))