UA MATH571A R语言回归分析实践 一元回归1 NBA球员的工资
UA MATH571A R語言回歸分析實踐 一元回歸1 NBA球員的工資
- 基礎回歸分析
571A另一個系列的文章介紹了回歸分析的理論,這個系列的文章介紹R語言做回歸分析的實踐,但不會涉及R語言編程,只是介紹回歸分析需要的命令、怎么輸入以及怎么解釋輸出。
NBA球員的draft number與他們的工資之間是有一定的關系的。NBA Draft簡單理解就是球隊pick心儀的新球員,players selected number 1 overall相當于就是C位,比如2002年的C位就是姚明,他的draft number就是1。所以我們的一個直覺就是新球員的draft number越小(名次越高),他的工資就應該越高。在這個系列的博文中,我們用2017-2018 NBA draft的數據為例,來驗證一下我們的直覺,這個數據我上傳了的,需要的話可以找來下載。
基礎回歸分析
首先讀取數據,先簡單看一下數據在excel里面的樣子
自己嘗試的時候記得用setwd修改工作目錄,讀取數據的時候如果數據存在工作目錄下read.csv第一個輸入的位置可以直接寫filename不用寫文件的路徑,如果數據沒有存在工作目錄下的,就要把文件的路徑寫完整。這個文件讀進來以后可能是變量類型是char,要做回歸的話用as.numeric轉成num就可以了。
接下來用lm命令做線性回歸就可以了,lm是R語言估計線性模型的函數。第一條命令做工資關于名次的回歸,把結果存在ureg01.lm中,第二行輸出結果的一些總結信息。
> ureg01.lm <- lm(Y~X) > summary(ureg01.lm)Call: lm(formula = Y ~ X)Residuals:Min 1Q Median 3Q Max -9901919 -4761884 -1586787 2215989 27551106 Coefficients:Estimate Std. Error t value Pr(>|t|) (Intercept) 10285438 440112 23.37 <2e-16 *** X -139730 11404 -12.25 <2e-16 *** --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1Residual standard error: 6365000 on 649 degrees of freedom Multiple R-squared: 0.1879, Adjusted R-squared: 0.1866 F-statistic: 150.1 on 1 and 649 DF, p-value: < 2.2e-16第二行以下的內容就是回歸結果的總結。call后面這個是回歸命令,公式是Y~X,意思就是我們執行了Y關于X的回歸。residual后面的是殘差的描述性統計,從左到右分別是殘差的最小值、25%分位點,中位數,75%分位點以及最大值。Coefficients后面是系數的估計,一元回歸只有截距項和解釋變量X的系數。第一列是系數的估計值,10285438在這個問題下面的解釋是如果有第0名存在,那么工資估計就是這么多,-139730表示名次每降一名,工資平均會降139730,也就是說我們之前的直覺是對的,名次越低工資越低。第二列是系數的估計量的方差,第三列是系數估計量的t統計量,第四列是系數估計量的t檢驗的p值,這里的t檢驗原假設是系數為0,因為這兩個p值都非常小,所以我們可以很自信地拒絕原假設,認同名次越低工資也會越低的假設。倒數第三行是殘差的標準誤(標準差)以及相應的自由度,這里一共有651個樣本,所以總自由度是650,回歸模型占一個自由度,所以誤差自由度是649。倒數第二行是R方的結果,第一個R方是多元回歸的R方,就是根據殘差平方和、回歸平方和以及自由度調整計算出來的,一般看這個R方就可以了,這個0.1879表示這個一元線性回歸模型可以解釋18.79%的工資的變化(也就是說這個模型解釋力其實很低,名次對于球員工資沒有主要的解釋力);第二個R方是考慮到只要我們不斷增加解釋變量,第一個R方根據定義的話它就會不斷變大,但這種變大沒有意義,因為模型可能是過擬合的狀態,所以第二個R方相對于第一個會把模型的復雜度考慮進去,在第一個R方的基礎上,模型越復雜,第二個R方就會越小。最后一行是對模型整體的檢驗,它的原假設是截距與X的系數都為0,這里F統計量是150.1,自由度是1和649,p值非常小,說明我們可以拒絕原假設,認為并非截距和X的系數都是0,也就是說這個模型還是有意義的。
現在我們有了第一個解釋球員工資的模型,它可以用回歸方程表示出來:
Y^=10285438?139730X\hat{Y} = 10285438-139730XY^=10285438?139730X
用這個模型我們可以做一些簡單的擬合與預測。如果某位球員名次是43名,根據這個模型我們可以估計他的工資應該是
用來做擬合和預測的都是predict函數,輸入第一項是模型對象,我們這個問題的模型對象就是之前估計得到的ureg01.lm,輸入第二項newdata = 后面要接的類型數據框,需要用data.frame做一個轉換,第三項是選擇區間估計的類型,在做predict的時候,區間估計類型有兩種,擬合和預測,擬合用conf表示,預測用predict表示,同樣的置信水平下擬合的置信區間更短,因為預測會把新樣本也看成是隨機變量,會讓Y的估計值方差更大。第四項是置信水平。輸出第一列是fit,也就是擬合值,如果某球員名次是43,那么根據模型估計的工資就是4277046,置信區間是[3726681,4827410],也就是說我們有95%的把握他的工資會在這個區間內。
再多提一下這個數據框,因為不用數據框或者用的數據框和模型對象的不一致就會報錯,如果是多個待擬合對象,我們也要用data.frame把它變成數據框,
> predict(ureg01.lm,newdata = data.frame(X=c(43,44)),interval = "conf",level = 0.95)fit lwr upr 1 4277046 3726681 4827410 2 4137316 3576386 4698245現在討論預測,假設有一個球員名次是43名,想要預測他的工資大概是多少,我們也用predict,只是區間估計命令換成pred
> predict(ureg01.lm,newdata = data.frame(X=43),interval = "pred",level = 0.95)fit lwr upr 1 4277046 -8232809 16786901可以發現第一列的結果和擬合是一樣的,只是區間估計的結果不一樣了,相同的置信水平下,預測的置信區間會比擬合的更大,但如果這名球員是沒有被估計模型的樣本包括在內的,一般我們還是需要用預測的。
總結
以上是生活随笔為你收集整理的UA MATH571A R语言回归分析实践 一元回归1 NBA球员的工资的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: UA MATH564 概率论III 期望
- 下一篇: UA MATH571A R语言回归分析实