เลขดัชนี(index number)

คำถาม เงินร้อยบาทวันนี้ กับเงินร้อยบาทเมื่อ 10 ปีมีค่าเท่ากันหรือไม่? แน่นอนว่าทุกต้องแบบว่าค่าไม่กันแน่นอน ทั้งๆ ที่เป็นตัวเลขเดียวกัน เหตุที่มีค่าไม่เท่ากันก็เพราะเกี่ยวข้องกับอัตราเงินเฝ้อ และมีเรื่องของเวลาเข้ามาเกี่ยวข้อง เงินร้อยบาทตอนนี้อาจจะมีค่ามากกว่าหรือน้อยกว่าเมื่อสิบปีก่อนก็ได้ขึ้นอยู่กับว่า ถ้านำไปซื้อของแบบเดียวกัน เหมือนกัน หรือไม่แตกต่างกัน เงินในเวลาใดจะสามารถซื้อได้ในปริมาณที่มากกว่ากัน ในการวัดการเปลี่ยนแปลงนี้เราจะวิธีการที่เรียกว่าเลขดัชนี ในการวัดการเปลี่ยนแปลงด้วยเลขดัชนีนี้อาจจะเป็นวัดการเปลี่ยนไปของ ของสิ่งหนึ่งสิ่งใดเพียงชนิดเดียว หรือกลุ่มของของที่เกี่ยวข้องกันก็ได้ โดยมีเป้าหมายเพื่อนำไปใช้ประโยชน์เพื่อการเปรียบเทียบหรือช่วยในการตัดสินใจ ตัวอย่างที่สำคัญที่พบเห็นในชีวิตประจำวัน คือ ดัชนีตลาดหลักทรัพย์ ดัชนีราคาผู้บริโภค(customer price index: CPI) เป็นต้น ในการคำนวณเลขดัชนีนั้น สิ่งที่ต้องการวัด ต้องเป็นสิ่งที่สามารถวัดได้สามารถนำมา บวก ลบ คูณ หรือหารได้ และสามารถบอกได้ว่า สิ่งใดมีค่าสูงมากกว่ากัน เลขดัชนีที่นิยมใช้จะวัดอยู่ 3 สิ่งที่พบได้โดยทั่วไป คือ ราคา ปริมาณ มูลค่า เมื่อใช้เลขดัชนี จะเรียกว่า ดัชนีราคา(price index) ดัชนีปริมาณ(quantity index) และดัชนีมูลค่า(value index) ตามลำดับ ก่อนจะหาเลขดัชนี สิ่งต้องมีก็คือข้อมูลที่ต้องการวัด ซึ่งจะเป็นข้อมูลที่อยู่ในรูปของอนุกรมเวลา ที่ได้ถึงมาแล้วในก่อนหน้านี้ ในการคำนวนเลขดัชนี จะต้องกำหนดเวลาที่จะอ้างอิง เพื่อจะนำไปเปรียบเทียบกับเวลาอื่นๆ ต่อไป

เลขดัชนีอย่างง่าย(simple index number)

เป็นคำนวณเลขดัชนีหาความสัมพัทธ์ระหว่าง ค่าของของสิ่งการวัดอ้างอิง \(X_0\) กับค่าของอีกสิ่งเดียวกันในปีืที่ \(n\) ก็คือ \(X_n\) เลขดัชนี \(I_n\) คืิอ \[I_n=\dfrac{X_n}{X_o}\times 100\] ถ้าเป็น \(X\) เป็นราคาจะเปลี่ยนตัวแปรเป็น \(P\)

ถ้าเป็น \(X\) เป็นปริมาณจะเปลี่ยนตัวแปรเป็น \(Q\)

ถ้าเป็น \(X\) เป็นมูลค่าจะเปลี่ยนตัวแปรเป็น \(V\)

มูลค่า \(V=P\times Q\) ในบทนี้จะใช้ package micEconIndex ในการคำนวณดัชนีราคา และข้อมูลสำหรับการคำนวณจาก package micEcon และ tseries

library(micEconIndex) #ใช้ package
library(micEcon)
## 
## If you have questions, suggestions, or comments regarding one of the 'micEcon' packages, please use a forum or 'tracker' at micEcon's R-Forge site:
## https://r-forge.r-project.org/projects/micecon/
library(tseries)
## Registered S3 method overwritten by 'xts':
##   method     from
##   as.zoo.xts zoo
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo

ถ้าสนใจข้อมูล ราคา ข้าวสาลี(wheat) จากข้อมูลชื่อ bev

data(bev)
str(bev)
##  Time-Series [1:370] from 1500 to 1869: 17 19 20 15 13 14 14 14 14 11 ...
plot(bev)

ถ้าต้องคำนวนดัชนีราคาของข้าวสาลีปี 1850 โดยใช้ปี 1600 เป็นฐาน \[I_{1850}=\dfrac{P_{1850}}{P_{1600}}\times 100 \] ถ้าใช้อาร์ จำเป็นต้องรู้ก่อนว่าปี 1600 และปี 1850 เป็นข้อมูลที่ตำแหน่งใด ข้อมูลชุดนี้เป็นข้อมูลชนิด

class(bev)
## [1] "ts"

ด้องใช้คำสั่งให้เหมาะกับชนิดของข้อมูล

I.1850<-window(bev,star=1850,end=1850)/as.vector(window(bev,star=1600,end=1600))*100
I.1850
## Time Series:
## Start = 1850 
## End = 1850 
## Frequency = 1 
## [1] 206.4935

\(I_{1850}=206.49\) หมายความว่าในปี 1850 ราคาของข้าวสาลี คิดเป็น ร้อยละ 206.49 เมื่อ เทียบกับปี ค.ศ. 1600 หรือ เพิ่มขึ้นร้อยละ 100.49 จากปีฐาน

มหายเหตุ ถ้าไม่ใช้คำสั่ง as.vector เปลี่ยนข้อมูลชนิด ts เป็น vector จะไม่สามารถคำนวณค่า I.8850 ได้

I.1850<-window(bev,star=1850,end=1850)/window(bev,star=1600,end=1600)*100
## Warning in .cbind.ts(list(e1, e2), c(deparse(substitute(e1))[1L],
## deparse(substitute(e2))[1L]), : non-intersecting series

ถ้ากำหนดเป็นปี 1500 เป็นฐานดัชนีราคาทั้งหมดคือ

I.wheat<- bev/bev[1]*100 

plot(I.wheat)

เราสามารถรวม ข้อมูล bev กับ I.wheat เป็นตัวแปรชื่อ PriceAndPriceIndex.wheat

PriceAndPriceIndex.wheat<-cbind(bev,I.wheat)
head(PriceAndPriceIndex.wheat,3)
##      bev  I.wheat
## [1,]  17 100.0000
## [2,]  19 111.7647
## [3,]  20 117.6471

คำถาม จงคำนวณดัชนีราคาของข้าวสาลีนี้ทั้งหมด โดยกำหนดปี 1700 เป็นปีฐาน

ดัชนีเชิงประกอบ (Composite Index)

จากตัวอย่างก่อนหน้านี้ เราจะได้คำนวณเลขดัชนีของราคาข้าวสาลีเพียงอย่างเดียว ถ้าในการคำนวณเลขดัชนีในแต่ละปี ประกอบไปสินค้า หลากหลายประเภท ดัชนีเชิงประกอบก็คือ \[I_n^c=\dfrac{\sum_{i=1}^k X_{in}}{\sum_{i=1}^kX_{i0}}\] สมมุติให้ \(X_{in}\) คือ ราคาสินค้าของชนิดที่ \(i\) ณ ปีที่ \(n\) ดังนั้น \(\sum_{i=1}^k X_{in}\) คือผลรวมของราคาทั้งหมดในปี ที่ \(n\)

ตัวอย่างข้อมูล Missong03E7.7 จาก package micEcon

data("Missong03E7.7")
Missong03E7.7

p.beef p.veal p.pork เป็นราคาเฉลี่ยของเนื้อวัว เนื้อลูกวัว และเนื้อหมู q.beef q.veal q.pork เป็นความต้องการบริโภคเฉลี่ยของเนื้อวัว เนื้อลูกวัว และเนื้อหมู ในปี 1986 1987 1988 และ 1989 ตามลำดับ ถ้าให้ ปี 1986 เป็นปีฐาน ดัชนีราคาของเนื้อทั้งหมดคือ

Price<-Missong03E7.7[,c(1,3,5)]
Price
rowSums(Price)
##  1986  1987  1988  1989 
## 33.19 33.19 34.46 37.96
PriceIndex<-rowSums(Price)/rowSums(Price)[1]*100
PriceIndex
##     1986     1987     1988     1989 
## 100.0000 100.0000 103.8265 114.3718

ผลที่ได้จากการคำนวณ ดัชนีราคาเฉลี่ยของเนื้อชนิดต่างๆ ในปี 1987 1988 1989 เปลี่ยนแปลงจากปี 1986 เพิ่มขึ้น 0% 3.83% และ 14.37%

การคำนวณดัชนีราคานี้ เป็นการพิจารณาที่ราคาของเนื้อทั้งหมดเพียงอย่าเดียว ไม่ได้ปริมาณถึงปริมาณหรือน้ำหนักของเนื้อแต่ละชนิดเข้าไปด้วย ถ้ากำหนดให้ปีแรกเป็นปีฐาน และพิจารณา ปริมาณที่บริโภคเข้าเกี่ยวข้อง การคำนวณดัชนีราคานี้ มีทั้งหมด 3 วิธี กำหนดให้

\(P_{ij}\) คือ ราคาสินค้าชนิดที่ \(i\) ณ เวลาที่ \(j\) \(Q_{ij}\) คือ ปริมาณสินค้าชนิดที่ \(i\) ณ เวลาที่ \(j\)

1. ดัชนีราคาแบบลาสแปร์ส(Laspeyres price index: \(L_p^k\))

ให้ \(P_{i0}\) เป็นราคาสินค้าปีฐาน ให้ \(P_{ik}\) เป็นราคาสินค้าของปีที่ \(k\) หรือต้องการคำนวณเลขดัชนี มีสูตรการคำนวณ คือ \[L_{p}^k=\dfrac{\sum_{i=1}^kP_{ik}Q_{i0}}{\sum_{i=1}^kP_{i0}Q_{i0}} \] จากข้อมูล Missong03E7.7 ถ้าเราให้ปีที่ 1886 เป็นปีฐานจะได้ เราสามารถใช้ package micEconIndex โดยใช้คำสั่ง pirceIndex()

 PriceIndex.L<- priceIndex(
               price= c( "p.beef", "p.veal", "p.pork" ),
               quantities=c( "q.beef", "q.veal", "q.pork" ),
               base= 1,
               method= "Laspeyres",
               data= Missong03E7.7 )
PriceIndex.L   
##      1986      1987      1988      1989 
## 1.0000000 0.9839897 0.9966514 1.1254719

2. ดัชนีราคาแบบแบบพาส์เชอ (Paasche price index: \(P_p^k\))

มีสูตรการคำนวณคือ

\[P_{p}^k=\dfrac{\sum_{i=1}^kP_{ik}Q_{ik}}{\sum_{i=1}^kP_{i0}Q_{ik}} \] การคำนวณในอาร์ คือ

 PriceIndex.P<- priceIndex(
               price= c( "p.beef", "p.veal", "p.pork" ),
               quantities=c( "q.beef", "q.veal", "q.pork" ),
               base= 1,
               method= "Paasche",
               data= Missong03E7.7 )
PriceIndex.P   
##      1986      1987      1988      1989 
## 1.0000000 0.9839652 0.9966153 1.1251109

3. ดัชนีราคาแบบฟิชเชอร์(Fisher price index: \(F_p^k\))

เป็นการคำนวณด้วยการใช้ มัชฌิมเลขคณิต(Arithmetic mean) ระหว่าง \(L_p^k\) กับ \(P_p^k\) นั้นเอง \[F_p^k=\sqrt{L_p^k \times P_p^k} \] คำสั่งในอาร์คือ

 PriceIndex.F<- priceIndex(
               price= c( "p.beef", "p.veal", "p.pork" ),
               quantities=c( "q.beef", "q.veal", "q.pork" ),
               base= 1,
               method= "Fisher", 
               data=Missong03E7.7 )
PriceIndex.F   
##      1986      1987      1988      1989 
## 1.0000000 0.9839775 0.9966334 1.1252914

จากนั้นก็สามารถสร้างเป็นกรอกข้อมูลของเลขดัชนีจากทั้ง 3 วิธีได้ดังนี้

PriceIndex<-cbind(PriceIndex.L,PriceIndex.P,PriceIndex.F)
PriceIndex
##      PriceIndex.L PriceIndex.P PriceIndex.F
## 1986    1.0000000    1.0000000    1.0000000
## 1987    0.9839897    0.9839652    0.9839775
## 1988    0.9966514    0.9966153    0.9966334
## 1989    1.1254719    1.1251109    1.1252914

## บทอื่นๆ