NBA = read.csv("NBA_train.csv")
str(NBA)
A. How many observations do we have in the training dataset? 835
table(NBA$W, NBA$Playoffs)
B. Is there any chance that a team winning 38 games can make it to
the playoffs? Why? 7 have made it but 8 have not, so it is close to
being a 50/50 scenario.
C. What is the number of wins that can guarantee for any team a
presence in the playoffs based on historical data? 49
# Compute Points Difference
NBA$PTSdiff = NBA$PTS - NBA$oppPTS
# Check for linear relationship
plot(NBA$PTSdiff, NBA$W)
D. Can you determine (visually) if there is any relationship between
the points difference (PTSdiff) and the number of wins (W)?Explain.
There is very visible linear relationship between the point difference
and the number of wins.
# Linear regression model for wins
WinsReg = lm(W ~ PTSdiff, data=NBA)
summary(WinsReg)
PointsReg = lm(PTS ~ X2PA + X3PA + FTA + AST + ORB + DRB + TOV + STL + BLK, data=NBA)
summary(PointsReg)
E. Here we want to determine what aspects of the game affect the
number of wins of a team(WingsReg model). Is the predictor variable
points difference (PTSdiff) significant at a 5% significance level?
Points diff is a predictor variable at a 5% sign lvl.
F. We also built a linear model to predict the number of points as a
function of some aspects of the game. Is the number of blocks (BLK)
significant at a 5% significance level?
BLK is not a predictor variable at 5% sig lvl since it is 0.5256,
which is less than the 0.05 sig lvl.
# Average number of points in a season
max(NBA$PTS)
G. What has been the maximum number of points in a season? 10371
# Sum of Squared Errors
PointsReg$residuals
SSE = sum(PointsReg$residuals^2)
SSE
# Root mean squared error
RMSE = sqrt(SSE/nrow(NBA))
RMSE
# Average number of points in a season
mean(NBA$PTS)
H. What is the meaning of the RMSE(Root mean squared error) in the
PointsReg model? Are you satisfied with this value? It is the mean
difference of points, it is a somewhat satisfying amount since the
average number of points in a season is 8370.24. Making our number very
small in comparison.
I. How well did your predictions work on the testing dataset? Report
the new R2 and RMSE. It performed well, giving a 81.27% result.
NBA_test = read.csv("NBA_test.csv")
# Make predictions on test set
PointsPredictions = predict(PointsReg4, newdata=NBA_test)
# Compute out-of-sample R^2
SSE = sum((PointsPredictions - NBA_test$PTS)^2)
SST = sum((mean(NBA$PTS) - NBA_test$PTS)^2)
R2 = 1 - SSE/SST
R2
# Compute the RMSE
RMSE = sqrt(SSE/nrow(NBA_test))
RMSE
LS0tDQp0aXRsZTogIk1hcmNvIENhbGRlcm9uIEluLWNsYXNzIGFjdGl2aXR5ICMxMihIVyk6IEFuYWx5emluZyB0aGUgTGVjdHVyZSBTb2x1dGlvbiBGaWxlIg0Kb3V0cHV0OiBodG1sX25vdGVib29rDQotLS0NCg0KYGBge3J9DQpOQkEgPSByZWFkLmNzdigiTkJBX3RyYWluLmNzdiIpDQpzdHIoTkJBKQ0KYGBgDQoNCg0KQS4gSG93IG1hbnkgb2JzZXJ2YXRpb25zIGRvIHdlIGhhdmUgaW4gdGhlIHRyYWluaW5nIGRhdGFzZXQ/IDgzNQ0KDQpgYGB7cn0NCnRhYmxlKE5CQSRXLCBOQkEkUGxheW9mZnMpDQpgYGANCg0KQi4gSXMgdGhlcmUgYW55IGNoYW5jZSB0aGF0IGEgdGVhbSB3aW5uaW5nIDM4IGdhbWVzIGNhbiBtYWtlIGl0IHRvIHRoZSBwbGF5b2Zmcz8gV2h5PyA3IGhhdmUgbWFkZSBpdCBidXQgOCBoYXZlIG5vdCwgc28gaXQgaXMgY2xvc2UgdG8gYmVpbmcgYSA1MC81MCBzY2VuYXJpby4NCg0KQy4gV2hhdCBpcyB0aGUgbnVtYmVyIG9mIHdpbnMgdGhhdCBjYW4gZ3VhcmFudGVlIGZvciBhbnkgdGVhbSBhIHByZXNlbmNlIGluIHRoZSBwbGF5b2ZmcyBiYXNlZCBvbiBoaXN0b3JpY2FsIGRhdGE/IDQ5DQoNCmBgYHtyfQ0KIyBDb21wdXRlIFBvaW50cyBEaWZmZXJlbmNlDQpOQkEkUFRTZGlmZiA9IE5CQSRQVFMgLSBOQkEkb3BwUFRTDQojIENoZWNrIGZvciBsaW5lYXIgcmVsYXRpb25zaGlwDQpwbG90KE5CQSRQVFNkaWZmLCBOQkEkVykNCmBgYA0KDQpELiBDYW4geW91IGRldGVybWluZSAodmlzdWFsbHkpIGlmIHRoZXJlIGlzIGFueSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUgcG9pbnRzIGRpZmZlcmVuY2UgKFBUU2RpZmYpIGFuZCB0aGUgbnVtYmVyIG9mIHdpbnMgKFcpP0V4cGxhaW4uDQpUaGVyZSBpcyB2ZXJ5IHZpc2libGUgbGluZWFyIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZSBwb2ludCBkaWZmZXJlbmNlIGFuZCB0aGUgbnVtYmVyIG9mIHdpbnMuIA0KDQpgYGB7cn0NCiMgTGluZWFyIHJlZ3Jlc3Npb24gbW9kZWwgZm9yIHdpbnMNCldpbnNSZWcgPSBsbShXIH4gUFRTZGlmZiwgZGF0YT1OQkEpDQpzdW1tYXJ5KFdpbnNSZWcpDQpgYGANCmBgYHtyfQ0KUG9pbnRzUmVnID0gbG0oUFRTIH4gWDJQQSArIFgzUEEgKyBGVEEgKyBBU1QgKyBPUkIgKyBEUkIgKyBUT1YgKyBTVEwgKyBCTEssIGRhdGE9TkJBKQ0Kc3VtbWFyeShQb2ludHNSZWcpDQpgYGANCg0KDQpFLiBIZXJlIHdlIHdhbnQgdG8gZGV0ZXJtaW5lIHdoYXQgYXNwZWN0cyBvZiB0aGUgZ2FtZSBhZmZlY3QgdGhlIG51bWJlciBvZiB3aW5zIG9mIGEgdGVhbShXaW5nc1JlZyBtb2RlbCkuIElzIHRoZSBwcmVkaWN0b3IgdmFyaWFibGUgcG9pbnRzIGRpZmZlcmVuY2UgKFBUU2RpZmYpIHNpZ25pZmljYW50IGF0IGEgNSUgc2lnbmlmaWNhbmNlIGxldmVsPw0KDQpQb2ludHMgZGlmZiBpcyBhIHByZWRpY3RvciB2YXJpYWJsZSBhdCBhIDUlIHNpZ24gbHZsLiANCg0KRi4gV2UgYWxzbyBidWlsdCBhIGxpbmVhciBtb2RlbCB0byBwcmVkaWN0IHRoZSBudW1iZXIgb2YgcG9pbnRzIGFzIGEgZnVuY3Rpb24gb2Ygc29tZSBhc3BlY3RzIG9mIHRoZSBnYW1lLiBJcyB0aGUgbnVtYmVyIG9mIGJsb2NrcyAoQkxLKSBzaWduaWZpY2FudCBhdCBhIDUlIHNpZ25pZmljYW5jZSBsZXZlbD8NCg0KQkxLIGlzIG5vdCBhIHByZWRpY3RvciB2YXJpYWJsZSBhdCA1JSBzaWcgbHZsIHNpbmNlIGl0IGlzIDAuNTI1Niwgd2hpY2ggaXMgbGVzcyB0aGFuIHRoZSAwLjA1IHNpZyBsdmwuIA0KDQpgYGB7cn0NCiMgQXZlcmFnZSBudW1iZXIgb2YgcG9pbnRzIGluIGEgc2Vhc29uDQptYXgoTkJBJFBUUykNCmBgYA0KDQpHLiBXaGF0IGhhcyBiZWVuIHRoZSBtYXhpbXVtIG51bWJlciBvZiBwb2ludHMgaW4gYSBzZWFzb24/IDEwMzcxDQoNCmBgYHtyfQ0KIyBTdW0gb2YgU3F1YXJlZCBFcnJvcnMNClBvaW50c1JlZyRyZXNpZHVhbHMNCmBgYA0KYGBge3J9DQpTU0UgPSBzdW0oUG9pbnRzUmVnJHJlc2lkdWFsc14yKQ0KU1NFDQpgYGANCmBgYHtyfQ0KIyBSb290IG1lYW4gc3F1YXJlZCBlcnJvcg0KUk1TRSA9IHNxcnQoU1NFL25yb3coTkJBKSkNClJNU0UNCmBgYA0KYGBge3J9DQojIEF2ZXJhZ2UgbnVtYmVyIG9mIHBvaW50cyBpbiBhIHNlYXNvbg0KbWVhbihOQkEkUFRTKQ0KYGBgDQoNCkguIFdoYXQgaXMgdGhlIG1lYW5pbmcgb2YgdGhlIFJNU0UoUm9vdCBtZWFuIHNxdWFyZWQgZXJyb3IpIGluIHRoZSBQb2ludHNSZWcgbW9kZWw/IEFyZSB5b3Ugc2F0aXNmaWVkIHdpdGggdGhpcyB2YWx1ZT8gDQpJdCBpcyB0aGUgbWVhbiBkaWZmZXJlbmNlIG9mIHBvaW50cywgaXQgaXMgYSBzb21ld2hhdCBzYXRpc2Z5aW5nIGFtb3VudCBzaW5jZSB0aGUgYXZlcmFnZSBudW1iZXIgb2YgcG9pbnRzIGluIGEgc2Vhc29uIGlzIDgzNzAuMjQuIE1ha2luZyBvdXIgbnVtYmVyIHZlcnkgc21hbGwgaW4gY29tcGFyaXNvbi4gDQoNCkkuIEhvdyB3ZWxsIGRpZCB5b3VyIHByZWRpY3Rpb25zIHdvcmsgb24gdGhlIHRlc3RpbmcgZGF0YXNldD8gUmVwb3J0IHRoZSBuZXcgUjIgYW5kIFJNU0UuIA0KSXQgcGVyZm9ybWVkIHdlbGwsIGdpdmluZyBhIDgxLjI3JSByZXN1bHQuDQoNCmBgYHtyfQ0KTkJBX3Rlc3QgPSByZWFkLmNzdigiTkJBX3Rlc3QuY3N2IikNCmBgYA0KYGBge3J9DQojIE1ha2UgcHJlZGljdGlvbnMgb24gdGVzdCBzZXQNClBvaW50c1ByZWRpY3Rpb25zID0gcHJlZGljdChQb2ludHNSZWc0LCBuZXdkYXRhPU5CQV90ZXN0KQ0KYGBgDQpgYGB7cn0NCiMgQ29tcHV0ZSBvdXQtb2Ytc2FtcGxlIFJeMg0KU1NFID0gc3VtKChQb2ludHNQcmVkaWN0aW9ucyAtIE5CQV90ZXN0JFBUUyleMikNClNTVCA9IHN1bSgobWVhbihOQkEkUFRTKSAtIE5CQV90ZXN0JFBUUyleMikNClIyID0gMSAtIFNTRS9TU1QNClIyDQpgYGANCg0KYGBge3J9DQojIENvbXB1dGUgdGhlIFJNU0UNClJNU0UgPSBzcXJ0KFNTRS9ucm93KE5CQV90ZXN0KSkNClJNU0UgDQpgYGANCg0K