SOC712 Homework Assignment #3

Sungji Peter Shin
2019-02-24

While the probability function looks for data given parameters, likelihood function estimates the parameters given data. In this assignment, I used ‘turnout’ dataset and Maximum Likelihood Estimation (MLE) method to explore relationship between, initially, income and educate variables and lastly, with second independent varaible, age, added to the initial one.

Does education influence mean income? (Slide 4.15)

Below lines of code treat standard deviation as it is constant and find maximum likelihood estimates of y-intercept for mean (beta1) and slope for the mean (beta2). Beta1 or -0.65 represents the y-intecept and means that individuals with no education (x=0) have mean income of -0.65. Beta2 or 0.38 represents the slope and means that increasing value of x (education) by 1 (year, in this case) will result an increased mean income by 0.38. Also, a positive relationship between educate and income is statistically significant, in respect to mean.

library(Zelig)
data(turnout)
ols.lf <- function(param) {
  beta <- param[-1]
  sigma <- param[1]
  y <- as.vector(turnout$income)
  x <- cbind(1, turnout$educate)
  mu <- x%*%beta
  sum(dnorm(y, mu, sigma, log = TRUE))}
library(maxLik)
mle_ols <- maxLik(logLik = ols.lf, start = c(sigma = 1, beta1 = 1, beta2 = 1))
summary(mle_ols)
--------------------------------------------
Maximum Likelihood estimation
Newton-Raphson maximisation, 12 iterations
Return code 2: successive function values within tolerance limit
Log-Likelihood: -4691.256 
3  free parameters
Estimates:
      Estimate Std. error t value Pr(> t)    
sigma  2.52613    0.03989  63.326 < 2e-16 ***
beta1 -0.65207    0.20827  -3.131 0.00174 ** 
beta2  0.37613    0.01663  22.612 < 2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
--------------------------------------------

Does education influence income inequality? (Slide 4.19)

Below lines of code treat mean as it is constant and find maximum likelihood estimates of y-intercept for standard deviation (theta1) and slope for the standard deviation (theta2). Theta1 or 1.46 represents the y-intercept and means that individuals with no education (x=0) have standard deviation of income of 1.46. Theta2 or 0.11 represents the slope and means that increasing value of x by 1 will result an increased standard deviation of income by 0.11. Statistically significant positive relationship between independent and dependent variables was also observed in respect to the standard deviation.

ols.lf2 <- function(param) {
  mu <- param[1]
  theta <- param[-1]
  y <- as.vector(turnout$income)
  x <- cbind(1, turnout$educate)
  sigma <- x%*%theta
  sum(dnorm(y, mu, sigma, log = TRUE))}
library(maxLik)
mle_ols2 <- maxLik(logLik = ols.lf2, start = c(mu = 1, theta1 = 1, theta2 = 1))
summary(mle_ols2)
--------------------------------------------
Maximum Likelihood estimation
Newton-Raphson maximisation, 9 iterations
Return code 2: successive function values within tolerance limit
Log-Likelihood: -4861.964 
3  free parameters
Estimates:
       Estimate Std. error t value Pr(> t)    
mu     3.516764   0.070320   50.01  <2e-16 ***
theta1 1.461011   0.106745   13.69  <2e-16 ***
theta2 0.109081   0.009185   11.88  <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
--------------------------------------------

Adding a second independent variable, age

Above, we have observed that the more educated individuals are, the higher income they will earn. We also have noticed that the more education they have, the more variation in their income.
If we add a second independent variable, age, the outcomes may lead us to different conclusions. I hypothesize that age will not have much impact on mean income but have great impact on income inequality or variation in income. The reason behind my argument is that individuals with higher education will have more opportunities to get offered a better job or to get promoted as they get older; while, it will less likely to happen to those with lower or no education as they get older.

#adding a second independent variable, AGE
ols.lf3 <- function(param) {
  beta <- param[-1]
  sigma <- param[1]
  y <- as.vector(turnout$income)
  x <- cbind(1, turnout$educate, turnout$age)
  mu <- x%*%beta
  sum(dnorm(y, mu, sigma, log = TRUE))}
library(maxLik)
mle_ols3 <- maxLik(logLik = ols.lf3, start = c(sigma = 1, beta1 = 1, beta2 = 1, beta3 = 1))
summary(mle_ols3)
--------------------------------------------
Maximum Likelihood estimation
Newton-Raphson maximisation, 16 iterations
Return code 2: successive function values within tolerance limit
Log-Likelihood: -4690.815 
4  free parameters
Estimates:
       Estimate Std. error t value Pr(> t)    
sigma  2.525576   0.039919  63.268  <2e-16 ***
beta1 -0.446047   0.300583  -1.484   0.138    
beta2  0.371011   0.017493  21.209  <2e-16 ***
beta3 -0.003184   0.003373  -0.944   0.345    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
--------------------------------------------

The outcome shows the y-intercept of -0.446, beta2 of 0.37, and beta3 of -0.003. The numbers represent the mean income of -0.446 when educate and age are 0; the mean income increases by 0.37 when educate is increased by 1; and the mean income decreases by 0.003 when age is increased by 1. It seems like my hypothesis is right, but the relationship between age and income is not statistically significant. The positive relationship betwwen educate and income is still statistically significant.

#adding a second independent varaible, AGE
ols.lf4 <- function(param) {
  mu <- param[1]
  theta <- param[-1]
  y <- as.vector(turnout$income)
  x <- cbind(1, turnout$educate, turnout$age)
  sigma <- x%*%theta
  sum(dnorm(y, mu, sigma, log = TRUE))}
library(maxLik)
mle_ols4 <- maxLik(logLik = ols.lf4, start = c(mu = 1, theta1 = 1, theta2 = 1, theta3 = 1), method="bfgs")
summary(mle_ols4)
--------------------------------------------
Maximum Likelihood estimation
BFGS maximization, 150 iterations
Return code 0: successful convergence 
Log-Likelihood: -4843.15 
4  free parameters
Estimates:
       Estimate Std. error t value  Pr(> t)    
mu     3.555011   0.069193  51.378  < 2e-16 ***
theta1 0.362114   0.204550   1.770   0.0767 .  
theta2 0.133349   0.010756  12.398  < 2e-16 ***
theta3 0.017507   0.002852   6.139 8.32e-10 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
--------------------------------------------

The outcome shows the y-intercept of 0.36, theta2 of 0.13, and theta3 of 0.018. The numbers represent the standard deviation of income is 0.36 when two independent variables are 0; its standard deviation increases by 0.13 when educate is increased by 1; and its standard deviation increases by 0.18 when age is increased by 1. Both positive relationships are statistically significant. However, the age does not seem to have a great impact on income inequality as I expected.

Visualization

library(ggplot2)
ggplot(turnout)+
  geom_point(aes(x = age, y = income)) + geom_smooth(aes(x = age, y = income)) +
  labs(title = "Income Variation by Age")

ggplot(turnout)+
  geom_point(aes(x = educate, y = income)) + geom_smooth(aes(x = educate, y = income)) +
  labs(title = "Income Variation by Education")

LS0tDQp0aXRsZTogIlNPQzcxMiBIb21ld29yayAjMzogTWF4aW11bSBMaWtlbGlob29kIEVzdGltYXRpb24iDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KIyBTT0M3MTIgSG9tZXdvcmsgQXNzaWdubWVudCAjMyANCipTdW5namkgUGV0ZXIgU2hpbiogICANCioyMDE5LTAyLTI0KiAgDQoNCg0KV2hpbGUgdGhlIHByb2JhYmlsaXR5IGZ1bmN0aW9uIGxvb2tzIGZvciBkYXRhIGdpdmVuIHBhcmFtZXRlcnMsIGxpa2VsaWhvb2QgZnVuY3Rpb24gZXN0aW1hdGVzIHRoZSBwYXJhbWV0ZXJzIGdpdmVuIGRhdGEuIEluIHRoaXMgYXNzaWdubWVudCwgSSB1c2VkICd0dXJub3V0JyBkYXRhc2V0IGFuZCAqKk1heGltdW0gTGlrZWxpaG9vZCBFc3RpbWF0aW9uIChNTEUpKiogbWV0aG9kIHRvIGV4cGxvcmUgcmVsYXRpb25zaGlwIGJldHdlZW4sIGluaXRpYWxseSwgKmluY29tZSogYW5kICplZHVjYXRlKiB2YXJpYWJsZXMgYW5kIGxhc3RseSwgd2l0aCBzZWNvbmQgaW5kZXBlbmRlbnQgdmFyYWlibGUsICphZ2UqLCBhZGRlZCB0byB0aGUgaW5pdGlhbCBvbmUuIA0KDQojIyBEb2VzIGVkdWNhdGlvbiBpbmZsdWVuY2UgbWVhbiBpbmNvbWU/IChTbGlkZSA0LjE1KSANCkJlbG93IGxpbmVzIG9mIGNvZGUgdHJlYXQgc3RhbmRhcmQgZGV2aWF0aW9uIGFzIGl0IGlzIGNvbnN0YW50IGFuZCBmaW5kIG1heGltdW0gbGlrZWxpaG9vZCBlc3RpbWF0ZXMgb2YgeS1pbnRlcmNlcHQgZm9yIG1lYW4gKGJldGExKSBhbmQgc2xvcGUgZm9yIHRoZSBtZWFuIChiZXRhMikuIEJldGExIG9yIC0wLjY1IHJlcHJlc2VudHMgdGhlIHktaW50ZWNlcHQgYW5kIG1lYW5zIHRoYXQgaW5kaXZpZHVhbHMgd2l0aCBubyBlZHVjYXRpb24gKHg9MCkgaGF2ZSBtZWFuIGluY29tZSBvZiAtMC42NS4gQmV0YTIgb3IgMC4zOCByZXByZXNlbnRzIHRoZSBzbG9wZSBhbmQgbWVhbnMgdGhhdCBpbmNyZWFzaW5nIHZhbHVlIG9mIHggKGVkdWNhdGlvbikgYnkgMSAoeWVhciwgaW4gdGhpcyBjYXNlKSB3aWxsIHJlc3VsdCBhbiBpbmNyZWFzZWQgbWVhbiBpbmNvbWUgYnkgMC4zOC4gQWxzbywgYSBwb3NpdGl2ZSByZWxhdGlvbnNoaXAgYmV0d2VlbiAqZWR1Y2F0ZSogYW5kICppbmNvbWUqIGlzIHN0YXRpc3RpY2FsbHkgc2lnbmlmaWNhbnQsIGluIHJlc3BlY3QgdG8gbWVhbi4NCg0KYGBge3IgZWNobz1UUlVFLCB3YXJuaW5nPUZBTFNFfQ0KbGlicmFyeShaZWxpZykNCmRhdGEodHVybm91dCkNCm9scy5sZiA8LSBmdW5jdGlvbihwYXJhbSkgew0KICBiZXRhIDwtIHBhcmFtWy0xXQ0KICBzaWdtYSA8LSBwYXJhbVsxXQ0KICB5IDwtIGFzLnZlY3Rvcih0dXJub3V0JGluY29tZSkNCiAgeCA8LSBjYmluZCgxLCB0dXJub3V0JGVkdWNhdGUpDQogIG11IDwtIHglKiViZXRhDQogIHN1bShkbm9ybSh5LCBtdSwgc2lnbWEsIGxvZyA9IFRSVUUpKX0NCg0KbGlicmFyeShtYXhMaWspDQptbGVfb2xzIDwtIG1heExpayhsb2dMaWsgPSBvbHMubGYsIHN0YXJ0ID0gYyhzaWdtYSA9IDEsIGJldGExID0gMSwgYmV0YTIgPSAxKSkNCnN1bW1hcnkobWxlX29scykNCmBgYA0KDQoNCiMjIERvZXMgZWR1Y2F0aW9uIGluZmx1ZW5jZSBpbmNvbWUgaW5lcXVhbGl0eT8gKFNsaWRlIDQuMTkpIA0KQmVsb3cgbGluZXMgb2YgY29kZSB0cmVhdCBtZWFuIGFzIGl0IGlzIGNvbnN0YW50IGFuZCBmaW5kIG1heGltdW0gbGlrZWxpaG9vZCBlc3RpbWF0ZXMgb2YgeS1pbnRlcmNlcHQgZm9yIHN0YW5kYXJkIGRldmlhdGlvbiAodGhldGExKSBhbmQgc2xvcGUgZm9yIHRoZSBzdGFuZGFyZCBkZXZpYXRpb24gKHRoZXRhMikuIFRoZXRhMSBvciAxLjQ2IHJlcHJlc2VudHMgdGhlIHktaW50ZXJjZXB0IGFuZCBtZWFucyB0aGF0IGluZGl2aWR1YWxzIHdpdGggbm8gZWR1Y2F0aW9uICh4PTApIGhhdmUgc3RhbmRhcmQgZGV2aWF0aW9uIG9mIGluY29tZSBvZiAxLjQ2LiBUaGV0YTIgb3IgMC4xMSByZXByZXNlbnRzIHRoZSBzbG9wZSBhbmQgbWVhbnMgdGhhdCBpbmNyZWFzaW5nIHZhbHVlIG9mIHggYnkgMSB3aWxsIHJlc3VsdCBhbiBpbmNyZWFzZWQgc3RhbmRhcmQgZGV2aWF0aW9uIG9mIGluY29tZSBieSAwLjExLiBTdGF0aXN0aWNhbGx5IHNpZ25pZmljYW50IHBvc2l0aXZlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGluZGVwZW5kZW50IGFuZCBkZXBlbmRlbnQgdmFyaWFibGVzIHdhcyBhbHNvIG9ic2VydmVkIGluIHJlc3BlY3QgdG8gdGhlIHN0YW5kYXJkIGRldmlhdGlvbi4gIA0KDQpgYGB7ciBlY2hvPVRSVUUsIHdhcm5pbmc9RkFMU0V9DQpvbHMubGYyIDwtIGZ1bmN0aW9uKHBhcmFtKSB7DQogIG11IDwtIHBhcmFtWzFdDQogIHRoZXRhIDwtIHBhcmFtWy0xXQ0KICB5IDwtIGFzLnZlY3Rvcih0dXJub3V0JGluY29tZSkNCiAgeCA8LSBjYmluZCgxLCB0dXJub3V0JGVkdWNhdGUpDQogIHNpZ21hIDwtIHglKiV0aGV0YQ0KICBzdW0oZG5vcm0oeSwgbXUsIHNpZ21hLCBsb2cgPSBUUlVFKSl9DQoNCmxpYnJhcnkobWF4TGlrKQ0KbWxlX29sczIgPC0gbWF4TGlrKGxvZ0xpayA9IG9scy5sZjIsIHN0YXJ0ID0gYyhtdSA9IDEsIHRoZXRhMSA9IDEsIHRoZXRhMiA9IDEpKQ0Kc3VtbWFyeShtbGVfb2xzMikNCmBgYA0KDQojIyBBZGRpbmcgYSBzZWNvbmQgaW5kZXBlbmRlbnQgdmFyaWFibGUsICphZ2UqICANCkFib3ZlLCB3ZSBoYXZlIG9ic2VydmVkIHRoYXQgdGhlIG1vcmUgZWR1Y2F0ZWQgaW5kaXZpZHVhbHMgYXJlLCB0aGUgaGlnaGVyIGluY29tZSB0aGV5IHdpbGwgZWFybi4gV2UgYWxzbyBoYXZlIG5vdGljZWQgdGhhdCB0aGUgbW9yZSBlZHVjYXRpb24gdGhleSBoYXZlLCB0aGUgbW9yZSB2YXJpYXRpb24gaW4gdGhlaXIgaW5jb21lLiAgDQpJZiB3ZSBhZGQgYSBzZWNvbmQgaW5kZXBlbmRlbnQgdmFyaWFibGUsICphZ2UqLCB0aGUgb3V0Y29tZXMgbWF5IGxlYWQgdXMgdG8gZGlmZmVyZW50IGNvbmNsdXNpb25zLiBJIGh5cG90aGVzaXplIHRoYXQgKmFnZSogd2lsbCBub3QgaGF2ZSBtdWNoIGltcGFjdCBvbiBtZWFuIGluY29tZSBidXQgaGF2ZSBncmVhdCBpbXBhY3Qgb24gaW5jb21lIGluZXF1YWxpdHkgb3IgdmFyaWF0aW9uIGluIGluY29tZS4gVGhlIHJlYXNvbiBiZWhpbmQgbXkgYXJndW1lbnQgaXMgdGhhdCBpbmRpdmlkdWFscyB3aXRoIGhpZ2hlciBlZHVjYXRpb24gd2lsbCBoYXZlIG1vcmUgb3Bwb3J0dW5pdGllcyB0byBnZXQgb2ZmZXJlZCBhIGJldHRlciBqb2Igb3IgdG8gZ2V0IHByb21vdGVkIGFzIHRoZXkgZ2V0IG9sZGVyOyB3aGlsZSwgaXQgd2lsbCBsZXNzIGxpa2VseSB0byBoYXBwZW4gdG8gdGhvc2Ugd2l0aCBsb3dlciBvciBubyBlZHVjYXRpb24gYXMgdGhleSBnZXQgb2xkZXIuIA0KDQpgYGB7ciBlY2hvPVRSVUUsIHdhcm5pbmc9RkFMU0V9DQojYWRkaW5nIGEgc2Vjb25kIGluZGVwZW5kZW50IHZhcmlhYmxlLCBBR0UNCm9scy5sZjMgPC0gZnVuY3Rpb24ocGFyYW0pIHsNCiAgYmV0YSA8LSBwYXJhbVstMV0NCiAgc2lnbWEgPC0gcGFyYW1bMV0NCiAgeSA8LSBhcy52ZWN0b3IodHVybm91dCRpbmNvbWUpDQogIHggPC0gY2JpbmQoMSwgdHVybm91dCRlZHVjYXRlLCB0dXJub3V0JGFnZSkNCiAgbXUgPC0geCUqJWJldGENCiAgc3VtKGRub3JtKHksIG11LCBzaWdtYSwgbG9nID0gVFJVRSkpfQ0KDQpsaWJyYXJ5KG1heExpaykNCm1sZV9vbHMzIDwtIG1heExpayhsb2dMaWsgPSBvbHMubGYzLCBzdGFydCA9IGMoc2lnbWEgPSAxLCBiZXRhMSA9IDEsIGJldGEyID0gMSwgYmV0YTMgPSAxKSkNCnN1bW1hcnkobWxlX29sczMpDQpgYGANCg0KVGhlIG91dGNvbWUgc2hvd3MgdGhlIHktaW50ZXJjZXB0IG9mIC0wLjQ0NiwgYmV0YTIgb2YgMC4zNywgYW5kIGJldGEzIG9mIC0wLjAwMy4gVGhlIG51bWJlcnMgcmVwcmVzZW50IHRoZSBtZWFuIGluY29tZSBvZiAtMC40NDYgd2hlbiAqZWR1Y2F0ZSogYW5kICphZ2UqIGFyZSAwOyB0aGUgbWVhbiBpbmNvbWUgaW5jcmVhc2VzIGJ5IDAuMzcgd2hlbiAqZWR1Y2F0ZSogaXMgaW5jcmVhc2VkIGJ5IDE7IGFuZCB0aGUgbWVhbiBpbmNvbWUgZGVjcmVhc2VzIGJ5IDAuMDAzIHdoZW4gKmFnZSogaXMgaW5jcmVhc2VkIGJ5IDEuIEl0IHNlZW1zIGxpa2UgbXkgaHlwb3RoZXNpcyBpcyByaWdodCwgYnV0IHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiAqYWdlKiBhbmQgKmluY29tZSogaXMgbm90IHN0YXRpc3RpY2FsbHkgc2lnbmlmaWNhbnQuIFRoZSBwb3NpdGl2ZSByZWxhdGlvbnNoaXAgYmV0d3dlbiAqZWR1Y2F0ZSogYW5kICppbmNvbWUqIGlzIHN0aWxsIHN0YXRpc3RpY2FsbHkgc2lnbmlmaWNhbnQuDQoNCmBgYHtyIGVjaG89VFJVRSwgd2FybmluZz1GQUxTRX0NCiNhZGRpbmcgYSBzZWNvbmQgaW5kZXBlbmRlbnQgdmFyYWlibGUsIEFHRQ0Kb2xzLmxmNCA8LSBmdW5jdGlvbihwYXJhbSkgew0KICBtdSA8LSBwYXJhbVsxXQ0KICB0aGV0YSA8LSBwYXJhbVstMV0NCiAgeSA8LSBhcy52ZWN0b3IodHVybm91dCRpbmNvbWUpDQogIHggPC0gY2JpbmQoMSwgdHVybm91dCRlZHVjYXRlLCB0dXJub3V0JGFnZSkNCiAgc2lnbWEgPC0geCUqJXRoZXRhDQogIHN1bShkbm9ybSh5LCBtdSwgc2lnbWEsIGxvZyA9IFRSVUUpKX0NCg0KbGlicmFyeShtYXhMaWspDQptbGVfb2xzNCA8LSBtYXhMaWsobG9nTGlrID0gb2xzLmxmNCwgc3RhcnQgPSBjKG11ID0gMSwgdGhldGExID0gMSwgdGhldGEyID0gMSwgdGhldGEzID0gMSksIG1ldGhvZD0iYmZncyIpDQpzdW1tYXJ5KG1sZV9vbHM0KQ0KYGBgDQoNClRoZSBvdXRjb21lIHNob3dzIHRoZSB5LWludGVyY2VwdCBvZiAwLjM2LCB0aGV0YTIgb2YgMC4xMywgYW5kIHRoZXRhMyBvZiAwLjAxOC4gVGhlIG51bWJlcnMgcmVwcmVzZW50IHRoZSBzdGFuZGFyZCBkZXZpYXRpb24gb2YgaW5jb21lIGlzIDAuMzYgd2hlbiB0d28gaW5kZXBlbmRlbnQgdmFyaWFibGVzIGFyZSAwOyBpdHMgc3RhbmRhcmQgZGV2aWF0aW9uIGluY3JlYXNlcyBieSAwLjEzIHdoZW4gKmVkdWNhdGUqIGlzIGluY3JlYXNlZCBieSAxOyBhbmQgaXRzIHN0YW5kYXJkIGRldmlhdGlvbiBpbmNyZWFzZXMgYnkgMC4xOCB3aGVuICphZ2UqIGlzIGluY3JlYXNlZCBieSAxLiBCb3RoIHBvc2l0aXZlIHJlbGF0aW9uc2hpcHMgYXJlIHN0YXRpc3RpY2FsbHkgc2lnbmlmaWNhbnQuIEhvd2V2ZXIsIHRoZSAqYWdlKiBkb2VzIG5vdCBzZWVtIHRvIGhhdmUgYSBncmVhdCBpbXBhY3Qgb24gaW5jb21lIGluZXF1YWxpdHkgYXMgSSBleHBlY3RlZC4gDQoNCiMjIFZpc3VhbGl6YXRpb24gIA0KDQpgYGB7ciBlY2hvPVRSVUUsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9DQpsaWJyYXJ5KGdncGxvdDIpDQpnZ3Bsb3QodHVybm91dCkrDQogIGdlb21fcG9pbnQoYWVzKHggPSBhZ2UsIHkgPSBpbmNvbWUpKSArIGdlb21fc21vb3RoKGFlcyh4ID0gYWdlLCB5ID0gaW5jb21lKSkgKw0KICBsYWJzKHRpdGxlID0gIkluY29tZSBWYXJpYXRpb24gYnkgQWdlIikNCmdncGxvdCh0dXJub3V0KSsNCiAgZ2VvbV9wb2ludChhZXMoeCA9IGVkdWNhdGUsIHkgPSBpbmNvbWUpKSArIGdlb21fc21vb3RoKGFlcyh4ID0gZWR1Y2F0ZSwgeSA9IGluY29tZSkpICsNCiAgbGFicyh0aXRsZSA9ICJJbmNvbWUgVmFyaWF0aW9uIGJ5IEVkdWNhdGlvbiIpDQpgYGANCg0K