Or you want a quick look: 11.2 Hàm phi tuyến đối với biến đơn nhất
Chương 11 Hàm hồi quy phi tuyến
Cho đến giờ ta mặc định hàm hồi quy là tuyến tính, nghĩa là tham số nghiêng của hàm hồi quy là hằng số. Điều này hàm ý, ảnh hưởng lên (Y) của một đơn vị thay đổi của (X) không phụ thuộc vào giá trị của (X). Nếu ảnh hưởng này thật sự phụ thuộc vào giá trị của (X), ta cần phải sử dụng hàm hồi quy phi tuyến.
Bạn đang xem: Phi tuyến tính là gì
# prepare the datadata(CASchools)CASchools$size CASchools$students/CASchools$teachersCASchools$score (CASchools$read + CASchools$math) / 2cor(CASchools$income, CASchools$score)
## 0.7124308Ta thấy có sự tương quan tuyến tính dương ở hai biến này: thu nhập trên trung bình thì điểm thi trên trung bình. Liệu hồi quy tuyến tính có ước lượng được quan hệ dữ liệu.
# fit a simple linear modellinear_model lm(score ~ income, data = CASchools)# plot the observationsplot(CASchools$income, CASchools$score, col = "steelblue", pch = 20, xlab = "District Income (thousands of dollars)", ylab = "Test Score", cex.main = 0.9, main = "Test Score vs. District Income and a Linear OLS Regression Function")# add the regression line to the plotabline(linear_model, col = "red", lwd = 2)
Ta thấy rằng khi thu nhập cao thì đường hồi quy đang ước lượng “lố” quan hệ đúng nhưng khi thu nhập trung bình thì đường hồi quy lại ước lượng “chưa đủ”.
Ta xem xét một mô hình bậc hai như sau.
Khi đó (text{Thu nhập}_i^2) được dùng như một biến giải thích khác cho điểm thi. Ta xem xét kết quả trong R như sau.
income | 3.851*** |
(0.268) | |
I(income2) | -0.042*** |
(0.005) | |
Constant | 607.302*** |
(2.902) | |
Notes: | ***Significant at the 1 percent level. |
**Significant at the 5 percent level. | |
*Significant at the 10 percent level. |
Mô hình này cho phép ta kiểm định quan hệ giữa thu nhập và điểm thi là tuyến tính hay phi tuyến bậc hai. Nói cách khác:
Ta thấy rằng (H_0) bị bác bỏ ở bất kỳ mức ý nghĩa thông thường nào, do đó ta kết luận quan hệ giữa hai biến là phi tuyến. Điều này cũng trùng khớp với hình vẽ dưới đây.
# draw a scatterplot of the observations for income and test scoreplot(CASchools$income, CASchools$score, col = "steelblue", pch = 20, xlab = "District Income (thousands of dollars)", ylab = "Test Score", main = "Estimated Linear and Quadratic Regression Functions")# add a linear function to the plotabline(linear_model, col = "black", lwd = 2)# add quatratic function to the plotorder_id order(CASchools$income)lines(x = CASchools$income, y = fitted(quadratic_model), col = "red", lwd = 2)
11.2 Hàm phi tuyến đối với biến đơn nhất
11.2.1 Hàm đa thức
Từ ý tưởng hàm bậc hai, ta có thể mở rộng ra thành hàm đa thức tổng quát:
Trong R ta dùng hàm poly() để thể hiện số bậc mô hình. Chẳng hạn với mô hình bậc 3 ta code như sau.
# estimate a cubic modelcubic_model lm(score ~ poly(income, degree = 3, raw = TRUE), data = CASchools)
Ta có thể dùng kiểm định thống kê (F) để xác nhận mô hình tuyến tính hay phi tuyến đến bậc nào đó. Chẳng hạn, ta quan tâm đến bậc 3 mô hình.
# test the hypothesis of a linear model against quadratic or polynomial# alternatives# set up hypothesis matrixR rbind(c(0, 0, 1, 0), c(0, 0, 0, 1))# do the testlinearHypothesis(cubic_model, hypothesis.matrix = R, white.adj = "hc1")
## Linear hypothesis test## ## Hypothesis:## poly(income, degree = 3, raw = TRUE)2 = 0## poly(income, degree = 3, raw = TRUE)3 = 0## ## Model 1: restricted model## Model 2: score ~ poly(income, degree = 3, raw = TRUE)## ## Note: Coefficient covariance matrix supplied.## ## Res.Df Df F Pr(>F) ## 1 418 ## 2 416 2 37.691 9.043e-16 ***## ---## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1Ở đây ta đang xem xét giả thuyết (H_0: beta_2 = beta_3 = 0) bằng cách lợi dụng phép toán ma trận:
Bởi vì hàm linearHypothesis() sử dụng các vector (0) nên việc dùng một ma trận (mathbf{R}) sẽ rút ngắn được đoạn code. Ta thấy (p)-value khá nhỏ và do đó ta bác bỏ (H_0).
Trong thực tế, để xác định được bậc mô hình, ta nên kiểm định (t) nhiều lần từ một số bậc lớn nhất nào đó (r). Ta có thể thấy trong đoạn code dưới đây.
summary(cubic_model)
## ## Call:## lm(formula = score ~ poly(income, degree = 3, raw = TRUE), data = CASchools)## ## Residuals:## Min 1Q Median 3Q Max ## -44.28 -9.21 0.20 8.32 31.16 ## ## Coefficients:## Estimate Std. Error t value## (Intercept) 6.001e+02 5.830e+00 102.937## poly(income, degree = 3, raw = TRUE)1 5.019e+00 8.595e-01 5.839## poly(income, degree = 3, raw = TRUE)2 -9.581e-02 3.736e-02 -2.564## poly(income, degree = 3, raw = TRUE)3 6.855e-04 4.720e-04 1.452## Pr(>|t|) ## (Intercept)
# test the hypothesis using robust standard errorscoeftest(cubic_model, vcov. = vcovHC, type = "HC1")
## ## t test of coefficients:## ## Estimate Std. Error t value## (Intercept) 6.0008e+02 5.1021e+00 117.6150## poly(income, degree = 3, raw = TRUE)1 5.0187e+00 7.0735e-01 7.0950## poly(income, degree = 3, raw = TRUE)2 -9.5805e-02 2.8954e-02 -3.3089## poly(income, degree = 3, raw = TRUE)3 6.8549e-04 3.4706e-04 1.9751## Pr(>|t|) ## (Intercept) Khi sử dụng ước lượng vững, ta thấy kết quả có sự thay đổi ở mức ý nghĩa của hệ số biến bậc 3. Điều này có nghĩa ta bác bỏ giả thuyết (H_0) hàm hồi quy là bậc hai với (H_A) hàm hồi quy bậc ba tại mức ý nghĩa (5%).
11.2.2 Giải thích hệ số hồi quy
Chẳng hạn mô hình hồi quy có dạng
Như vậy khi tăng thu nhập từ (10) lên (11) thì điểm thi tăng (2.96) điểm, nhưng khi thu nhập tăng từ (40) lên (41) thì điểm thi chỉ tăng (0.42). Cho thấy độ nghiêng của hàm hồi quy dốc hơn ở mức thu nhập thấp và thoải hơn ở mức thu nhập cao.
# compute and assign the quadratic modelquadriatic_model lm(score ~ income + I(income^2), data = CASchools)# set up data for predictionnew_data data.frame(income = c(10, 11))# do the predictionY_hat predict(quadriatic_model, newdata = new_data)# compute the differencediff(Y_hat)
## 2 ## 2.962517
11.2.3 Hàm Logarithms
Một cách khác để quy cách hàm số phi tuyến là dùng hàm lograthims lên biến (Y) hoặc/và (X). Chuyển hàm logarithms thay đổi các biến sang phần trăm thay đổi. Có nhiều cách để xây dựng mô hình theo cách tiếp cận logarithm.Trường hợp 1: logarithm (X)
Mô hình trở thành:
# estimate a level-log modelLinearLog_model lm(score ~ log(income), data = CASchools)# compute robust summarycoeftest(LinearLog_model, vcov = vcovHC, type = "HC1")
## ## t test of coefficients:## ## Estimate Std. Error t value Pr(>|t|) ## (Intercept) 557.8323 3.8399 145.271 Ta vẽ đường hồi quy như sau.
# draw a scatterplotplot(score ~ income, col = "steelblue", pch = 20, data = CASchools, main = "Linear-Log Regression Line")# add the linear-log regression lineorder_id order(CASchools$income)lines(CASchools$income, fitted(LinearLog_model), col = "red", lwd = 2)
Ta có thể giải thích (hat{beta}_1) như sau. (1%) tăng trưởng thu nhập thì điểm thi tăng (0.01 times 36.42 = 0.36) điểm.
Trường hợp 2: logarithm (Y)
Mô hình trong trường hợp này như sau.
# estimate a log-linear model LogLinear_model lm(log(score) ~ income, data = CASchools)# obtain a robust coefficient summarycoeftest(LogLinear_model, vcov = vcovHC, type = "HC1")
## ## t test of coefficients:## ## Estimate Std. Error t value Pr(>|t|) ## (Intercept) 6.43936234 0.00289382 2225.210 Khi thu nhập tăng 1 đơn vị thu nhập, điểm thi tăng ((100times 0.00284)% = 0.284%).
Khi dùng hàm chuyển dạng cho biến (Y) ta cần cẩn trọng. Mô hình hồi quy sẽ cho ta ước lượng của (ln(Y)), một cách thông thường, ta có thể chuyển về (hat{Y}) bằng hàm exp(). Khi đó, mô hình có dạng:
Từ đó, ta có:
Vì (E(u_i|X_i)=0) nên (E(e^{u_i}|X_i) = 1), nói cách khác, (E(e^{u_i}|X_i) ne 0). Do đó ước lượng (hat{Y} = e^{hat{beta}_0 + hat{beta_1}X_i}) sẽ bị thiên lệch do thiếu mất thành tố (E(e^{u_i}|X_i)). Hình vẽ sau đây sẽ thể hiện sự thiên lệch này.
# draw a scatterplotorder_id order(CASchools$income)par(mfrow = c(1,2))plot(score ~ income, col = "steelblue", pch = 20, data = CASchools, main = "Regression Line with Log Transformation")abline(linear_model, col = "black", lwd = 2)# add the linear-log regression linelines(CASchools$income, exp(fitted(LogLinear_model)), col = "red", lwd = 2)# draw with different y-axisplot(log(score) ~ income, col = "steelblue", pch = 20, data = CASchools, main = "Log-Linear Regression Function")lines(CASchools$income, fitted(LogLinear_model), col = "red", lwd = 2)
Một cách giải quyết đó là cố gắng ước lượng thành tố thiếu (E(e^{u_i}|X_i)). Tuy nhiên nếu (u_i) có hiện tượng heteroskedasticity thì việc ước lượng càng phức tạp hơn.
Một cách giải quyết khác đó là giữ nguyên (ln(Y)). Trong tài chính, điều này có thể chấp nhận được khi phân tích diễn biến giá tài sản, nghĩa là phiên bản (ln(Y)) có ý nghĩa kinh tế.
Trường hợp 2: logarithm (X) và (Y)
Hồi quy log-log có dạng như sau
# estimate the log-log modelLogLog_model lm(log(score) ~ log(income), data = CASchools)# print robust coefficient summary to the consolecoeftest(LogLog_model, vcov = vcovHC, type = "HC1")
# generate a scatterplotplot(log(score) ~ income, col = "steelblue", pch = 20, data = CASchools, main = "Log-Linear Regression Function")# add the log-linear regression lineorder_id order(CASchools$income)# add the log-log regression linelines(sort(CASchools$income), fitted(LogLog_model), col = "red", lwd = 2)
Ta có thể mở rộng biến đổi logarithms bằng cách kết hợp với đa thức, ta có hàm polylog, chẳng hạn như sau.
# estimate the polylog modelpolyLog_model lm(score ~ log(income) + I(log(income)^2) + I(log(income)^3), data = CASchools)# print robust summary to the consolecoeftest(polyLog_model, vcov = vcovHC, type = "HC1")
# compute the adj. R^2 for the nonlinear modelsadj_R2 rbind("Quadratic" = summary(quadratic_model)$adj.r.squared, "Cubic" = summary(cubic_model)$adj.r.squared, "LinearLog" = summary(LinearLog_model)$adj.r.squared, "LogLinear" = summary(LogLinear_model)$adj.r.squared, "LogLog" = summary(LogLog_model)$adj.r.squared, "PolyLog" = summary(polyLog_model)$adj.r.squared)
Quadratic | 0.5540444 |
Cubic | 0.5552279 |
LinearLog | 0.5614605 |
LogLinear | 0.4970106 |
LogLog | 0.5567251 |
PolyLog | 0.5599944 |
# generate a scatterplotplot(score ~ income, data = CASchools, col = "steelblue", pch = 20, main = "Linear-Log and Cubic Regression Functions")# add the linear-log regression lineorder_id order(CASchools$income)lines(CASchools$income, fitted(LinearLog_model), col = "darkgreen", lwd = 2)# add the cubic regression linelines(x = CASchools$income, y = fitted(cubic_model), col = "darkred", lwd = 2)
Cả hai đường đều gần như nhau. Tuy nhiên ta thấy mô hình linear-log được ưu tiên hơn vì ít tham số hơn, ta không cần những hàm bậc cao.
11.3 Sự tương tác giữa các biến độc lập
Có nhiều vấn đề thực tiễn liên quan đến ảnh hưởng lên biến (Y) của sự thay đổi một biến (X_i) lại phụ thuộc vào giá trị của một biến (X_j) ((j ne i)) khác. Chẳng hạn, liệu các khu vực nhiều học sinh học tiếng Anh có được lợi gì về mặt điểm số không từ việc giảm quy mô lớp học. Thay vì câu hỏi hồi quy thông thường: điểm số sẽ bị tác động như thế nào nếu giảm quy mô lớp học. Để đánh giá vấn đề này, ta cần thêm vào mô hình một sự tương tác giữa các biến (X).
Ta xét ba trường hợp:
sự tương tác giữa hai biến nhị phân.sự tương tác giữa một biến nhị phân và một biến liên tục.sự tương tác giữa hai biến liên tục.Xem thêm: Dược Sĩ Tiếng Anh Là Gì ? Dược Sĩ Tên Tiếng Anh Là Pharmacist Hoặc Chemist
11.3.1 Sự tương tác giữa hai biến nhị phân
Mô hình có dạng
Giả sử:
Ta biết rằng (beta_1) đo lường sự khác biệt trong logarithm thu nhập trung bình giữa hai nhóm người có bằng cao đẳng và người không, còn (beta_2) đo lường sự khác biệt trong logarithm thu nhập trung bình giữa nam và nữ. Tuy nhiên mô hình này không cho phép ta đánh giá sự tác động của một người có đặc điểm của cả (D_1) và (D_2). Do đó ta điều chỉnh mô hình đề xuất thành:
(D_{1i} times D_{2i}) được gọi là biến tương tác. Ta thấy:
và
Theo đó ta sẽ giải thích được ý nghĩa hệ số (beta_3).
Trong R, ta khảo sát sự tương tác giữa biến STR và PctEL. Đặt:
# append HiSTR to CASchoolsCASchools$HiSTR as.numeric(CASchools$size >= 20)# append HiEL to CASchoolsCASchools$HiEL as.numeric(CASchools$english >= 10)
Ta ước lượng mô hình.
# estimate the model with a binary interaction termbi_model lm(score ~ HiSTR * HiEL, data = CASchools)# print a robust summary of the coefficientscoeftest(bi_model, vcov. = vcovHC, type = "HC1")
## ## t test of coefficients:## ## Estimate Std. Error t value Pr(>|t|) ## (Intercept) 664.1433 1.3881 478.4589
11.3.2 Sự tương tác giữa một biến liên tục và biến nhị phân
Đặt (X_i) thể hiện số năm kinh nghiệm của người thứ (i), là biến ngẫu nhiên liên tục. Ta chuyển biến (D_{1i}) thành biến (D_i). Mô hình mới đề xuất:Ta thêm vào ảnh hưởng tương tác bằng cách thêm biến ((X_i times D_i)) vào mô hình. Điều này sẽ làm độ nghiêng đường hồi quy phụ thuộc vào biến (D_i). Có ba trường hợp:
cùng độ nghiêng nhưng khác intercept: (Y_i = beta_0 + beta_1 X_i + beta_2 D_i + u_i)cùng intercept nhưng khác độ nghiêng: (Y_i = beta_0 + beta_1 X_i + beta_2 (X_itimes D_i) + u_i)khác intercept khác độ nghiêng: (Y_i = beta_0 + beta_1 X_i + beta_2 D_i + beta_3 (X_itimes D_i) u_i)# generate artificial dataset.seed(1)X runif(200,0, 15)D sample(0:1, 200, replace = T)Y 450 + 150 * X + 500 * D + 50 * (X * D) + rnorm(200, sd = 300)# divide plotting area accordinglym rbind(c(1, 2), c(3, 0))graphics::layout(m)# estimate the models and plot the regression lines# 1. (baseline model)plot(X, log(Y), pch = 20, col = "steelblue", main = "Different Intercepts, Same Slope")mod1_coef lm(log(Y) ~ X + D)$coefficientsabline(coef = c(mod1_coef, mod1_coef), col = "red", lwd = 1.5)abline(coef = c(mod1_coef + mod1_coef, mod1_coef), col = "green", lwd = 1.5) # 2. (baseline model + interaction term)plot(X, log(Y), pch = 20, col = "steelblue", main = "Different Intercepts, Different Slopes")mod2_coef lm(log(Y) ~ X + D + X:D)$coefficientsabline(coef = c(mod2_coef, mod2_coef), col = "red", lwd = 1.5)abline(coef = c(mod2_coef + mod2_coef, mod2_coef + mod2_coef), col = "green", lwd = 1.5)# 3. (omission of D as regressor + interaction term)plot(X, log(Y), pch = 20, col = "steelblue", main = "Same Intercept, Different Slopes")mod3_coef lm(log(Y) ~ X + X:D)$coefficientsabline(coef = c(mod3_coef, mod3_coef), col = "red", lwd = 1.5)abline(coef = c(mod3_coef, mod3_coef + mod3_coef), col = "green", lwd = 1.5)
Ta áp dụng trong R bằng cách đánh giá tương tác giữa size và HiEL theo dạng thứ ba.
# estimate the modelbci_model lm(score ~ size + HiEL + size * HiEL, data = CASchools)# print robust summary of coefficients to the consolecoeftest(bci_model, vcov. = vcovHC, type = "HC1")
# identify observations with PctEL >= 10id CASchools$english >= 10# plot observations with HiEL = 0 as red dotsplot(CASchools$size, CASchools$score, xlim = c(0, 27), ylim = c(600, 720), pch = 20, col = "red", main = "", xlab = "Class Size", ylab = "Test Score")# plot observations with HiEL = 1 as green dotspoints(CASchools$size, CASchools$score, pch = 20, col = "green")# read out estimated coefficients of bci_modelcoefs bci_model$coefficients# draw the estimated regression line for HiEL = 0abline(coef = c(coefs, coefs), col = "red", lwd = 1.5)# draw the estimated regression line for HiEL = 1abline(coef = c(coefs + coefs, coefs + coefs), col = "green", lwd = 1.5 )# add a legend to the plotlegend("topright", pch = c(20, 20), col = c("red", "green"), legend = c("HiEL = 0", "HiEL = 1"))
11.3.3 Sự tương tác giữa hai biến liên tục
Sự tương tác giữa hai biến liên tục (X_1) và (X_2) được đánh giá thông qua (X_1 times X_2). Khi đó, mô hình trở thành:
Đánh giá đạo hàm theo (X_1) và (X_2) ta sẽ có:
Áp dụng trong R, ta đánh giá size và english.
# estimate regression model including the interaction between 'PctEL' and 'size'cci_model lm(score ~ size + english + english * size, data = CASchools) # print a summary to the consolecoeftest(cci_model, vcov. = vcovHC, type = "HC1")
## ## t test of coefficients:## ## Estimate Std. Error t value Pr(>|t|) ## (Intercept) 686.3385268 11.7593466 58.3654
11.3.4 Phân tích dữ liệu Cầu Economic Journals
Trong phần này, ta phân tích dữ liệu Journals trong package AER, gồm các quan sát của 180 tạp chí khoa học trong năm 2000. Ta đo lường giá tiền cho mỗi citation và tính toán tuổi của journal và số lượng ký tự cho mỗi journal.data("Journals")# define and rename variablesJournals$PricePerCitation Journals$price/Journals$citationsJournals$Age 2000 - Journals$foundingyearJournals$Characters Journals$charpp * Journals$pages/10^6Journals$Subscriptions Journals$subs
Vùng giá trị của PricePerCitation khá rộng và dàn trải.
# compute summary statistics for price per citationsummary(Journals$PricePerCitation)
(ln (Subscriptions_i) = beta_0 + beta_1 ln (PricePerCitation_i) + u_i)(ln (Subscription_i) = beta_0 +beta_1 ln(PricePerCitation_i) + beta_4ln(Age_i) + beta_6 ln(Characters_i) + u_i)(ln (Subscription_i) = beta_0 +beta_1 ln(PricePerCitation_i) + beta_2 ln(PricePerCitation_i)^2+beta_3 ln(PricePerCitation_i)^3 + beta_4ln(Age_i) + beta_5 + beta_6 ln(Characters_i) + u_i)(ln (Subscription_i) = beta_0 +beta_1 ln(PricePerCitation_i) + beta_4ln(Age_i) +beta_5+ beta_6 ln(Characters_i) + u_i)
# Estimate models (I) - (IV)Journals_mod1 lm(log(Subscriptions) ~ log(PricePerCitation), data = Journals)Journals_mod2 lm(log(Subscriptions) ~ log(PricePerCitation) + log(Age) + log(Characters), data = Journals)Journals_mod3 lm(log(Subscriptions) ~ log(PricePerCitation) + I(log(PricePerCitation)^2) + I(log(PricePerCitation)^3) + log(Age) + log(Age):log(PricePerCitation) + log(Characters), data = Journals)Journals_mod4 lm(log(Subscriptions) ~ log(PricePerCitation) + log(Age) + log(Age):log(PricePerCitation) + log(Characters), data = Journals)
Sử dụng summary() ta đạt được kết quả sau.
Ta có thể dùng kiểm định (F) để kiểm tra quy cách polylog đối với biến (ln(PricePerCitation_i)).
# F-Test for significance of cubic termslinearHypothesis(Journals_mod3, c("I(log(PricePerCitation)^2)=0", "I(log(PricePerCitation)^3)=0"), vcov. = vcovHC, type = "HC1")
## Linear hypothesis test## ## Hypothesis:## I(log(PricePerCitation)^2) = 0## I(log(PricePerCitation)^3) = 0## ## Model 1: restricted model## Model 2: log(Subscriptions) ~ log(PricePerCitation) + I(log(PricePerCitation)^2) + ## I(log(PricePerCitation)^3) + log(Age) + log(Age):log(PricePerCitation) + ## log(Characters)## ## Note: Coefficient covariance matrix supplied.## ## Res.Df Df F Pr(>F)## 1 175 ## 2 173 2 0.1943 0.8236Ta không thể bác bỏ (H_0:beta_3 = beta_4 = 0) đối với mô hình (III). Kết quả mô hình được thể hiện trong bảng dưới đây.
log(Subscriptions) | ||||
(I) | (II) | (III) | (IV) | |
(1) | (2) | (3) | (4) | |
log(PricePerCitation) | -0.533*** | -0.408*** | -0.961*** | -0.899*** |
(0.034) | (0.044) | (0.160) | (0.145) | |
I(log(PricePerCitation)2) | 0.017 | |||
(0.025) | ||||
I(log(PricePerCitation)3) | 0.004 | |||
(0.006) | ||||
log(Age) | 0.424*** | 0.373*** | 0.374*** | |
(0.119) | (0.118) | (0.118) | ||
log(Characters) | 0.206** | 0.235** | 0.229** | |
(0.098) | (0.098) | (0.096) | ||
log(PricePerCitation):log(Age) | 0.156*** | 0.141*** | ||
(0.052) | (0.040) | |||
Constant | 4.766*** | 3.207*** | 3.408*** | 3.434*** |
(0.055) | (0.380) | (0.374) | (0.367) | |
Observations | 180 | 180 | 180 | 180 |
R2 | 0.557 | 0.613 | 0.635 | 0.634 |
Adjusted R2 | 0.555 | 0.607 | 0.622 | 0.626 |
Residual Std. Error | 0.750 (df = 178) | 0.705 (df = 176) | 0.691 (df = 173) | 0.688 (df = 175) |
F Statistic | 224.037*** (df = 1; 178) | 93.009*** (df = 3; 176) | 50.149*** (df = 6; 173) | 75.749*** (df = 4; 175) |
Notes: | ***Significant at the 1 percent level. | |||
**Significant at the 5 percent level. | ||||
*Significant at the 10 percent level. |
Hình hoạ các mô hình như sau.
# divide plotting aream rbind(c(1, 2), c(3, 0))graphics::layout(m)# scatterplotplot(Journals$PricePerCitation, Journals$Subscriptions, pch = 20, col = "steelblue", ylab = "Subscriptions", xlab = "ln(Price per ciation)", main = "(a)")# log-log scatterplot and estimated regression line (I)plot(log(Journals$PricePerCitation), log(Journals$Subscriptions), pch = 20, col = "steelblue", ylab = "ln(Subscriptions)", xlab = "ln(Price per ciation)", main = "(b)")abline(Journals_mod1, lwd = 1.5)# log-log scatterplot and regression lines (IV) for Age = 5 and Age = 80plot(log(Journals$PricePerCitation), log(Journals$Subscriptions), pch = 20, col = "steelblue", ylab = "ln(Subscriptions)", xlab = "ln(Price per ciation)", main = "(c)")JM4C $coefficients# Age = 80abline(coef = c(JM4C + JM4C * log(80), JM4C + JM4C * log(80)), col = "darkred", lwd = 1.5)# Age = 5abline(coef = c(JM4C + JM4C * log(5), JM4C + JM4C * log(5)), col = "darkgreen", lwd = 1.5)
Những kết luận có thể được rút ra:
Cầu của tạp chí co giãn nhiều đối với các tạp chí trẻ tuổi.Việc không bác bỏ (H_0) của kiểm định (F) đối với mô hình (III) thống nhất với quan hệ tuyến tính giữa log(subscriptions) và log(price).Cầu cao hơn đối với tạp chí nhiều ký tự, với giá và tuổi không thay đổi.Cầu tạp chí phi co giãn với giá: ta thấy mô hình (IV), kể cả tạp chí trẻ tuổi ((Age=5)) ta thấy ước lượng độ co giãn giá (-0.899+0.374times ln(5)+ 0.141times approx -0.3), nghĩa là một phần trăm tăng giá dẫn đến cầu giảm chỉ (0.3) phần trăm. Kết quả này không có gì ngạc nhiên vì nguồn tiêu thụ đầu ra của các tạp chí thường là các thư viện.
11.4 Bài tập
11.4.1 Bài 1: Hệ số tương quan và Phi tuyến 1
Xem xét mô hình đơn giản:
với (medv) là trung vị giá nhà và (lstat) là phần trăm hộ gia đình với tình trạng kinh tế thấp, trong bộ dữ liệu Boston.
Tính hệ số tương quan giữa (medv) và (lstat) và lưu vào biến corr.Đồ thị hoá medv và lstat và thêm vào đường hồi quy mod. Nhận xét.eyJsYW5ndWFnZSI6InIiLCJzYW1wbGUiOiJkYXRhKFwiQm9zdG9uXCIpXG5tb2QgPC0gbG0obWVkdiB+IGxzdGF0ICwgZGF0YSA9IEJvc3RvbilcbiMgY29tcHV0ZSB0aGUgY29ycmVsYXRpb24gYmV0d2VlbiBtZWR2IGFuZCBsc3RhdFxuXG5cbiMgcGxvdCBtZWR2IGFnYWluc3QgbHN0YXQgYW5kIGFkZCB0aGUgcmVncmVzc2lvbiBsaW5lIiwic29sdXRpb24iOiIjIGNvbXB1dGUgdGhlIGNvcnJlbGF0aW9uIGJldHdlZW4gbWVkdiBhbmQgbHN0YXRcbmNvcnIgPC0gY29yKEJvc3RvbiRtZWR2LCBCb3N0b24kbHN0YXQpXG5cbiMgcGxvdCBtZWR2IGFnYWluc3QgbHN0YXQgYW5kIGFkZCB0aGUgcmVncmVzc2lvbiBsaW5lXG5wbG90KG1lZHYgfiBsc3RhdCwgZGF0YSA9IEJvc3RvbilcbmFibGluZShyZWcgPSBtb2QsIGNvbCA9IFwicmVkXCIpIn0=
11.4.2 Bài 2: Hệ số tương quan và Phi tuyến 2
Ta xem xét mối quan hệ sau đây.
Thực hiện hồi quy và lưu trữ vào biến log_mod.Mô tả điểm rải và thêm vào đường hồi quy. So sánh với kết quả bài trước.eyJsYW5ndWFnZSI6InIiLCJzYW1wbGUiOiIjIGNvbmR1Y3QgdGhlIHJlZ3Jlc3Npb24gYW5kIGFzc2lnbiBpdCB0byBtb2RfbG9nXG5cblxuIyBkcmF3IGEgc2NhdHRlcnBsb3QgYW5kIGFkZCB0aGUgcmVncmVzc2lvbiBsaW5lIiwic29sdXRpb24iOiIjIGNvbmR1Y3QgdGhlIHJlZ3Jlc3Npb24gYW5kIGFzc2lnbiBpdCB0byBtb2RfbG9nXG5tb2RfbG9nIDwtIGxtKG1lZHYgfiBsb2cobHN0YXQpLCBkYXRhID0gQm9zdG9uKVxuXG4jIGRyYXcgYSBzY2F0dGVycGxvdCBhbmQgYWRkIHRoZSByZWdyZXNzaW9uIGxpbmVcbnBsb3QobWVkdiB+IGxvZyhsc3RhdCksIGRhdGEgPSBCb3N0b24pXG5hYmxpbmUobW9kX2xvZywgY29sID0gXCJyZWRcIikifQ==
11.4.3 Bài 3: Bậc đa thức tối ưu
Ta thấy ở bài tập trước quy cách (medv_i = beta_0 + beta_1 times log(lstat_i) + u_i) là một sự lựa chọn hợp lý. Tuy nhiên, đa thức bậc cao đối với (log(lstat_i)) có thể phù hợp hơn.
Giả sử bậc cao nhất xem xét là (r=4), sử dụng for() để chọn ra bậc tối ưu theo cách sau đây.
Ước lượng mô hình, mod, bắt đầu từ (r=4).Lưu biến (p)-value vững của các tham số liên quan và so sánh với mức ý nghĩa (0.05).Nếu không thể bác bỏ mô hình, lặp lại bước (i) và (ii) đối với bậc thấp hơn.Dừng lại cho đến khi chọn ra được bậc tối ưu.Tính (R^2) của mô hình được chọn và phân bổ vào R2.
eyJsYW5ndWFnZSI6InIiLCJzYW1wbGUiOiIjIGZpbmQgdGhlIG9wdGltYWwgcG9seW5vbWlhbCBvcmRlciBvZiB0aGUgcG9seWxvZyBtb2RlbFxuXG5cblxuXG5cblxuXG5cblxuIyBleHRyYWN0IHRoZSBSXjIgZnJvbSB0aGUgc2VsZWN0ZWQgbW9kZWwgYW5kIGFzc2lnbiBpdCB0byBSMiIsInNvbHV0aW9uIjoiIyBmaW5kIHRoZSBvcHRpbWFsIHBvbHlub21pYWwgb3JkZXIgb2YgdGhlIHBvbHlsb2cgbW9kZWxcbmZvcihpIGluIDQ6MSl7XG5tb2QgIDwtIGxtKG1lZHYgfiBwb2x5KGxvZyhsc3RhdCksIGksIHJhdyA9IFQpLCBkYXRhID0gQm9zdG9uKVxucHZhbCA8LSBjb2VmdGVzdChtb2QsIHZjb3YgPSB2Y292SEMpWyhpKzEpLCA0XVxuaWYocHZhbCA8IDAuMDUpe1xuICBwcmludChpKVxuICBicmVha1xuICB9XG59XG5cbiMgZXh0cmFjdCB0aGUgUl4yIGZyb20gdGhlIHNlbGVjdGVkIG1vZGVsIGFuZCBhc3NpZ24gaXQgdG8gUjJcblIyIDwtIHN1bW1hcnkobW9kKSRyLnNxdWFyZWQifQ==
11.4.4 Bài 4: Tương tác giữa các biến độc lập 1
Xem mô hình hồi quy
trong đó (chas_i) và (old_i) là các biến giả. Đối với biến đầu, mang giá trị (1) nếu sông Charles (một con sông lân cận Boston) đi ngang qua khu vự (i), biến sau mang giá trị (1) nếu (age ge 95).
Tạo lập biến giả old.Thực hiện hồi quy trong mod_bb.Tổng hợp hệ số hồi quy vững.eyJsYW5ndWFnZSI6InIiLCJzYW1wbGUiOiIjIGdlbmVyYXRlIHRoZSBiaW5hcnkgdmFyaWFibGUgYG9sZGAgYW5kIGFwcGVuZCBpdCB0byB0aGUgZGF0YXNldFxuXG5cbiMgY29uZHVjdCB0aGUgcmVncmVzc2lvbiBhbmQgYXNzaWduIGl0IHRvIGBtb2RfYmJgXG5cblxuIyBwcmludCBhIHJvYnVzdCBzdW1tYXJ5IHRvIHRoZSBjb25zb2xlIiwic29sdXRpb24iOiIjIGdlbmVyYXRlIHRoZSBiaW5hcnkgdmFyaWFibGUgYG9sZGAgYW5kIGFwcGVuZCBpdCB0byB0aGUgZGF0YXNldFxuQm9zdG9uJG9sZCA8LSBhcy5udW1lcmljKEJvc3RvbiRhZ2UgPj0gOTUpXG5cbiMgY29uZHVjdCB0aGUgcmVncmVzc2lvbiBhbmQgYXNzaWduIGl0IHRvIGBtb2RfYmJgXG5tb2RfYmIgPC0gbG0obWVkdiB+IGNoYXMqb2xkLCBkYXRhID0gQm9zdG9uKVxuXG4jIHByaW50IGEgcm9idXN0IHN1bW1hcnkgdG8gdGhlIGNvbnNvbGVcbmNvZWZ0ZXN0KG1vZF9iYiwgdmNvdi4gPSB2Y292SEMpIn0=
11.4.5 Bài 5: Tương tác giữa các biến độc lập 2
Bây giờ xem xét mô hình hồi quy
Dùng ?Boston để tham khảo ý nghĩa các biến trong mô hình. Biến old đã được append vào bộ dữ liệu Boston.
Ước lượng mô hình hồi quy và lưu vào biến mod_bc.Lấy các hệ số hồi quy lưu vào biến params.Vẽ đường hồi quy medv và indus cho hai trường hợp của old.eyJsYW5ndWFnZSI6InIiLCJzYW1wbGUiOiIjIGNvbmR1Y3QgdGhlIHJlZ3Jlc3Npb24gYW5kIGFzc2lnbiBpdCB0byBtb2RfYmMuXG5cblxuIyBleHRyYWN0IHRoZSBlc3RpbWF0ZWQgbW9kZWwgY29lZmZpY2llbnRzIGFuZCBhc3NpZ24gdGhlbSB0byBwYXJhbXMuXG5cblxuIyBwbG90IG1lZHYgYWdhaW5zdCBpbmR1cyBhbmQgYWRkIHRoZSByZWdyZXNzaW9uIGxpbmVzLiIsInNvbHV0aW9uIjoiIyBjb25kdWN0IHRoZSByZWdyZXNzaW9uIGFuZCBhc3NpZ24gaXQgdG8gbW9kX2JjLlxubW9kX2JjIDwtIGxtKG1lZHYgfiBpbmR1cypvbGQsIGRhdGEgPSBCb3N0b24pXG5cbiMgZXh0cmFjdCB0aGUgZXN0aW1hdGVkIG1vZGVsIGNvZWZmaWNpZW50cyBhbmQgYXNzaWduIHRoZW0gdG8gcGFyYW1zLlxucGFyYW1zIDwtIGNvZWYobW9kX2JjKVxuXG4jIHBsb3QgbWVkdiBhZ2FpbnN0IGluZHVzIGFuZCBhZGQgdGhlIHJlZ3Jlc3Npb24gbGluZXMuXG5wbG90KG1lZHYgfiBpbmR1cywgZGF0YSA9IEJvc3RvbilcbmFibGluZShhID0gcGFyYW1zWzFdLCBiID0gcGFyYW1zWzJdLCBjb2wgPSBcInJlZFwiKVxuYWJsaW5lKGEgPSBwYXJhbXNbMV0gKyBwYXJhbXNbM10sIGIgPSBwYXJhbXNbMl0gKyBwYXJhbXNbNF0sIGNvbCA9IFwiZGFya2JsdWVcIikifQ==