GrowthSW - Dữ liệu về tỷ lệ tăng trưởng trung bình trong giai đoạn 1960–1995 của 65 quốc gia, cùng với các biến số có khả năng liên quan đến tăng trưởng. Một khung dữ liệu chứa 65 quan sát trên 6 biến.
growth: phần trăm tăng trưởng trung bình hàng năm của GDP thực tế từ năm 1960 đến năm 1995.
rgdp60: giá trị GDP bình quân đầu người năm 1960, quy đổi ra đô la Mỹ năm 1960.
tradeshare: tỷ trọng thương mại trung bình trong nền kinh tế từ 1960 đến 1995, là giá trị trung bình của (X + M)/GDP từ 1960 đến 1995.
education: số năm đi học trung bình của cư dân trưởng thành ở quốc gia đó vào năm 1960.
revolutions: số cuộc cách mạng, nổi dậy và đảo chính trung bình hàng năm ở quốc gia đó từ năm 1960 đến năm 1995.
assassinations: số vụ ám sát chính trị trung bình hàng năm ở quốc gia đó từ năm 1960 đến năm 1995 (tính trên một triệu dân).
Đây là dữ liệu Chuỗi thời gian về mức tiêu dùng (Y : đơn vị 100000 VNĐ) và thu nhập (X : đơn vị 100000 VNĐ). Tính theo đầu người và tính theo giá cố định năm 1980 trong thời kỳ 1971 – 1990 ở một khu vực
nam <- c(1971,1972,1973,1974,1975,1976,1977,1978,1979,1980,1981,1982,1983,1984,1985,1986,1987,1988,1989,1990 )
chitieu <- c(48.34, 48.54, 47.44, 54.58, 55, 63.49, 59.22, 57.77, 60.22, 55.4, 52.17, 60.84, 60.73, 76.04, 76.42, 69.34, 61.75, 68.78, 67.07, 72.94 )
thunhap <- c(51.01, 52.41, 51.55, 58.88, 59.66, 68.42, 64.27, 63.01, 65.61, 61.05, 63.36, 67.42, 67.86, 83.39, 84.26, 77.41, 70.08, 77.44, 75.79, 81.89)
chuoitg <- data.frame(nam, chitieu, thunhap)
head(chuoitg)
## nam chitieu thunhap
## 1 1971 48.34 51.01
## 2 1972 48.54 52.41
## 3 1973 47.44 51.55
## 4 1974 54.58 58.88
## 5 1975 55.00 59.66
## 6 1976 63.49 68.42
Ta sử dụng package “readxl” để thực hiện thao tác nhập dữ liệu từ file excel.
library(readxl)
## Warning: package 'readxl' was built under R version 4.3.1
Cũng với bộ dữ liệu trên nhưng được lưu dưới dạng tập tin excel. Vị trí file dữ liệu cần dùng là “C:/Users/TIEN/Downloads/HQD.xlsx” thì ta thực hiện thao tác nhập dữ liệu như:
hq1 <- read_excel("C:/Users/TIEN/Downloads/HQD.xlsx")
View(hq1)
Biểu đồ phân tán (scatter plot):
Sử dụng các dấu chấm để thể hiện giá trị (điểm giao nhau) của hai biến số khác nhau.
Dùng để quan sát mối tương quan giữa 2 biến định lượng.
Trục hoành (trục X) mô tả biến độc lập. Trục tung (Y) mô tả biến phụ thuộc.
hq1 |> ggplot(map=aes(x = thunhap , y = chitieu )) + geom_point(color = "blue")
hq1 |> ggplot(map=aes(x = thunhap , y = chitieu )) + geom_point(color = "blue")+ xlab("Thu Nhập")+ ylab("Chi Tiêu")
hq1 |> ggplot(aes(x = thunhap, y = chitieu )) +
geom_smooth(formula = y ~ x, method = "lm", col = "green") +
geom_point(color = 'red') +
labs(title = 'Đồ Thị Dạng Scatter', x = "Thu nhập", y = "Chi tiêu" )
=> Từ đồ thị ta có thể thấy rõ sự tương quan giữa 2 biến thu nhập và chi tiêu. Nếu biến thu nhập thay đổi thì cũng sẽ có ảnh hưởng đến mức chi tiêu. Cụ thể, nếu thu nhập giảm thì mức chi tiêu cũng sẽ giảm .
hq1 |> ggplot(aes(x = thunhap , y = chitieu)) + geom_point(color = 'blue') + geom_line(color = 'red')
=> 2 yếu tố này có một mối quan hệ tỉ lệ thuận với nhau, khi số thu nhập tăng lên thì mức chi tiêu cũng có xu hướng tăng theo.
data("GrowthSW")
g <- GrowthSW
names(g) <- c("gr","rg","tr","ed","re","as")
CreditCard |> ggplot(aes(x = income, y = dependents, color = card )) + geom_point(na.rm = T) + xlab(“Thu nhập hằng năm”) + ylab(” Số người phụ thuộc”)
growth <- GrowthSW$growth
g |> ggplot(aes(x = rg , y = ed , color = growth ))+ geom_point(na.rm = T) + xlab(" GDP bình quân đầu người ") + ylab(" Số năm đi học trung bình ")+ labs(title="Biểu đồ thể hiện sự tương quan giữa trình độ và GDP bình quân ")
=> Biểu đồ cho ta thấy sự tương quan giữa hai biến education và biến rgdp60. Nghĩa là mức độ học vấn của cư dân ở quốc gia đó có ảnh hưởng đến giá trị GDP bình quân đầu người.
GrowthSW$grow[growth>2.5] <- "phattriennhanh"
GrowthSW$grow[growth<2.5] <- "champhattrien"
GrowthSW |> ggplot(aes(x = rgdp60 , y = education ))+ geom_point(aes (color= growth ),na.rm = T ) +
geom_smooth(aes(color = growth),formula = y ~ x, method = 'lm', na.rm=T) +
xlab("GDP bình quân đầu người") + ylab(" Số năm đi học trung bình ")+
labs(title="Biểu đồ thể hiện sự tương quan giữa trình độ và GDP bình quân")
=> Kết luận: Đường hồi quy cho ta biết biến education và biến rgdp60 tỷ lệ thuận với nhau, nếu thời gian đi học càng nhiều tức là trình dộ học vấn càng cao thì GDP bình quân sẽ có xu hường tăng cao.
g |> ggplot(aes(x = ed , y = rg )) +
geom_point(color = 'blue') +
geom_line(color = 'red')
data("CreditCard")
CreditCard |> ggplot(aes(x = card)) + geom_bar(fill = 'blue')
CreditCard |> group_by(card) |>
summarise(n = n()) |> mutate(pG = percent(n/sum(n),accuracy = ,01)) |> ggplot(aes(x =card , y =pG)) +
geom_col(fill = 'blue') + theme_classic() + labs(x = 'Tần số', y = 'Tỷ lệ %')
- Chúng ta có thể ghi chú tỷ lệ % hoặc số đếm lên đỉnh mỗi cột như
sau:
CreditCard |> ggplot(aes(x = card, y = after_stat(count))) + geom_bar(fill = 'blue') + geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat = 'count', color = 'red', vjust = - 0.1 ) + theme_classic() + labs(x = 'Cấp thẻ tín dụng ', y = 'Tần số')
=> Biểu đồ cho ta biết tỷ lệ người được cấp thẻ tín dụng chiếm 78% và
tỷ lệ không được cấp thẻ tín dụng chiếm 22%
Chú thích: - Số 0 là thẻ tín dụng không được tổ chức - Số 1 là thẻ tín dụng chính được tổ chức
CreditCard |> ggplot(aes(x = card, y = after_stat(count))) +
geom_bar(fill = 'blue') +
geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat = 'count', color = 'red', vjust = - .5) + facet_grid(. ~ majorcards) +
theme_classic() +
labs(x = 'Cấp thẻ tín dụng ', y = 'tần số')
CreditCard |> ggplot(aes(x = card )) +
geom_bar(aes(y = after_stat(count), fill = majorcards), stat = 'count') + geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat = 'count', color = 'red', vjust = - .5) + facet_grid(. ~ majorcards ) + ylab('tần số') + xlab(' Cấp thẻ tín dụng ')
CreditCard|> count(dependents ) |>
mutate(pC = percent(n/sum(n),accuracy = 0.01)) |>
ggplot(aes(x = dependents , y = n)) +
geom_col(fill = 'blue') +
geom_text(aes(label = pC),color = 'black', vjust = 0.5, size = 5) +
ylab('Tần số') +
xlab('Số người phụ thuộc')
=> Biểu đồ cho thấy trường hợp có 0 người phụ thuộc chiếm tỷ lệ cao
nhất đồng nghĩa với việc có 50% người không có ai phụ thộc vào họ và
ngược lại số người phụ thuộc càng nhiều thì tần số càng thấp.
Với biểu đồ như trên chúng ta có thể quay ngang như sau:
CreditCard|> count(dependents ) |>
mutate(pC = percent(n/sum(n),accuracy = 0.01)) |>
ggplot(aes(x = dependents , y = n)) +
geom_col(fill = 'blue') +
geom_text(aes(label = pC),color = 'black', vjust = 0.5, size = 5) +
ylab('Tần số') +
xlab('Số người phụ thuộc ')+
coord_flip()
### Đồ thị 2 biến
CreditCard |> ggplot(aes(x = dependents, y = after_stat(count),fill = card )) +
geom_bar(position = 'dodge') +
ylab('Tần số ') +
xlab('Số người phụ thuộc')
Với dạng đồ thị như trên thay vì để 2 cột cạnh nhau, chúng ta có thể chồng nó lên nhau như sau để dễ phân tích hơn.
CreditCard |> ggplot(aes(x = dependents)) + geom_bar(aes(y = after_stat(count), fill = card ), stat = 'count') +
ylab('Tần số ') +
xlab('Số người phụ thuộc')
CreditCard |> count( dependents , card ) |>
group_by(dependents) |>
mutate(pH = n/sum(n)) |>
ggplot(aes(x = dependents , y = n, fill = card)) +
geom_col() +
geom_text(aes(label = percent(pH, accuracy = .01)), position = position_stack(vjust = 0.5 ), size = 3) +
ylab('Tần số ') +
xlab('Số người phụ thuộc')
CreditCard |> group_by(selfemp) |>
summarise(mr = mean(income, na.rm = T)) |>
ggplot(aes(x = selfemp , y = mr)) +
geom_col(fill = 'blue') +
geom_text(aes(label = round(mr,2)), vjust = 2, color = 'red', size = 5) +
xlab('Làm chủ ') +
ylab('Thu nhập trung bình hằng năm')
Tương tự chúng ta cũng có thể dùng đồ thị cột để vẽ phương sai, độ lệch chuẩn, trung vị hay bất kỳ một đặc trưng thống kê nào để thực hiện việc so sánh.
CreditCard |> group_by(selfemp) |>
summarise(sdr = sd(income, na.rm = T)) |>
ggplot(aes(x = selfemp , y = sdr)) +
geom_col(stat='indentity', fill = 'blue') +
geom_text(aes(y= sdr+.5, label = round(sdr ,2)), vjust = 2, color = 'red', size = 5) +
xlab('Làm chủ ') +
ylab('Độ lệch chuẩn thu nhập hằng năm')
## Warning in geom_col(stat = "indentity", fill = "blue"): Ignoring unknown
## parameters: `stat`
head(hq1)
## # A tibble: 6 × 3
## N chitieu thunhap
## <dbl> <dbl> <dbl>
## 1 1971 48.3 51.0
## 2 1972 48.5 52.4
## 3 1973 47.4 51.6
## 4 1974 54.6 58.9
## 5 1975 55 59.7
## 6 1976 63.5 68.4
hq1a <- lm(data= hq1 ,thunhap~chitieu)
plot(thunhap~chitieu,data=hq1) + abline(hq1a)
## integer(0)
cor.test(thunhap, chitieu)
##
## Pearson's product-moment correlation
##
## data: thunhap and chitieu
## t = 24, df = 18, p-value = 3e-15
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.9617 0.9942
## sample estimates:
## cor
## 0.985
cor.test(thunhap, chitieu, method="spearman")
##
## Spearman's rank correlation rho
##
## data: thunhap and chitieu
## S = 28, p-value = 7e-06
## alternative hypothesis: true rho is not equal to 0
## sample estimates:
## rho
## 0.9789
cor.test( chitieu, thunhap,method="kendall")
##
## Kendall's rank correlation tau
##
## data: chitieu and thunhap
## T = 182, p-value = 2e-12
## alternative hypothesis: true tau is not equal to 0
## sample estimates:
## tau
## 0.9158
lm( chitieu ~ thunhap)
##
## Call:
## lm(formula = chitieu ~ thunhap)
##
## Coefficients:
## (Intercept) thunhap
## 3.766 0.848
=> SRF:Y = 3.766 + 0.848β ##### Kiểm định các giả thuyết thống kê - Lập bảng thống kê hồi quy ta có:
eq <- lm(chitieu ~ thunhap)
summary(eq)
##
## Call:
## lm(formula = chitieu ~ thunhap)
##
## Residuals:
## Min 1Q Median 3Q Max
## -5.344 -0.370 0.130 0.883 1.684
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 3.765 2.378 1.58 0.13
## thunhap 0.848 0.035 24.25 3.4e-15 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.56 on 18 degrees of freedom
## Multiple R-squared: 0.97, Adjusted R-squared: 0.969
## F-statistic: 588 on 1 and 18 DF, p-value: 3.39e-15
ketqua <- 3.766 + 0.848*80
ketqua
## [1] 71.61
=> Khi mức thu nhập là 8 triệu VND thì mức chi tiêu trung bình sẽ là 7.161 triệu VND
Đồ thị thể hiện sự tương quan giữa trình độ và GDP bình quân
g |> ggplot(map = aes(x = ed , y = gr )) + geom_point(color="red") + xlab(" Số năm đi học trung bình ") + ylab(" phần trăm tăng trưởng trung bình của GDP ") + geom_smooth(formula = y ~ x, method = 'lm', color = 'black') + labs(title = 'Đồ Thị thể hiện sự tương quan giữa trình độ và phần trăm tăng trưởng GDP thực tế ')
- Kết luận: như vậy giữa hai biến education và growth có quan hệ tương
quan tuyến tính với nhau
gr <- g$gr
rg <- g$rg
tr <- g$tr
ed <- g$ed
re <- g$re
as <- g$as
cor.test( ed,gr)
##
## Pearson's product-moment correlation
##
## data: ed and gr
## t = 2.8, df = 63, p-value = 0.007
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.09475 0.53195
## sample estimates:
## cor
## 0.331
=> Kết luận: ta có p-value=0.007 < alpha=0.05 nên hai biến education và growth có quan hệ tương quan tuyến tính với nhau
cor.test(gr,rg)
##
## Pearson's product-moment correlation
##
## data: gr and rg
## t = 0.5, df = 63, p-value = 0.6
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## -0.184 0.302
## sample estimates:
## cor
## 0.06271
=> Kết luận: p-value=0.6 > anpha=0.05 điều này có nghĩa là hai biến growth và rgdp60 không có mối quan hệ tuyến tính với nhau, có nghĩa nếu 1 trong hai biến thay đổi thì sẽ không làm ảnh hưởng đến biến còn lại.
cor.test(ed,gr ,method="spearman" )
##
## Spearman's rank correlation rho
##
## data: ed and gr
## S = 28510, p-value = 0.002
## alternative hypothesis: true rho is not equal to 0
## sample estimates:
## rho
## 0.377
=> Kết luận: ta có p-value=0.002 < alpha=0.05 nên hai biến education và growth có quan hệ tương quan tuyến tính với nhau
cor.test(ed,gr ,method="kendall" )
##
## Kendall's rank correlation tau
##
## data: ed and gr
## z = 2.8, p-value = 0.005
## alternative hypothesis: true tau is not equal to 0
## sample estimates:
## tau
## 0.2376
lm(ed ~gr )
##
## Call:
## lm(formula = ed ~ gr)
##
## Coefficients:
## (Intercept) gr
## 3.123 0.444
=> SRF:Y = 3.123 + 0.444β ##### Kiểm định các giả thuyết
eq2 <- lm(ed~gr)
summary(eq2)
##
## Call:
## lm(formula = ed ~ gr)
##
## Residuals:
## Min 1Q Median 3Q Max
## -3.690 -1.852 -0.601 1.399 5.980
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 3.123 0.431 7.25 7.4e-10 ***
## gr 0.444 0.159 2.78 0.0071 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 2.42 on 63 degrees of freedom
## Multiple R-squared: 0.11, Adjusted R-squared: 0.0954
## F-statistic: 7.75 on 1 and 63 DF, p-value: 0.00708
kq2 <- 3.123 + 0.444 *3
kq2
## [1] 4.455
=> Khi giá trị của growth=3 thì giá trị trung bình của biến education=4.455