一位讀者問到怎么計算幾何均值的置信區(qū)間草冈。
我第一想到的就是proc means,但是這只能計算均值的置信區(qū)間乃摹。所以應該需要進行一些變換术奖。
一:基本定義
首先幾何均數(shù)的計算方法有以下兩種(觀測沒有重復值现柠,有重復值需要用到加權法)
注意第二個計算公式裆赵,因為我們在SAS一般是用log計算,但是SAS中直接用log是以e底之剧,然后后面我們需要用到exp函數(shù)郭卫,這個也是以e為底;但是上面的公式是lg猪狈,這個是以10為底。
所以一開始這讓我有些困惑辩恼,log10和loge算出來的結果肯定是不一樣的雇庙。通過搜索相關資料,如下面的圖片說到灶伊,運用下面的公式疆前,只要保證對數(shù)和反對數(shù)用的底保持一致就行了(注意下面公式左邊還是log的形式,所以看起來和上面的公式不太一樣)
困惑解開了聘萨,接下來直接根據(jù)公式計算就好了竹椒。
二:SAS實現(xiàn)
以SASHELP里的class數(shù)據(jù)集為例,假設我們要對height求幾何均值及其對應的置信區(qū)間米辐。
先對height求log胸完,然后求出均值,最后對平均的對數(shù)值取指數(shù)翘贮,就得到幾何均值赊窥,然后proc mean的clm選項能求統(tǒng)計量對應的置信上下限(注意也要取指數(shù))
三:R語言的實現(xiàn)
一開始chatgpt給我的代碼如下:
但是R算出的結果和SAS不一致
回到程序,注意紅框中的qnorm,解釋看的我有些不明白狸页,我們查看SAS的proc means計算置信區(qū)間背后的統(tǒng)計公式锨能,應用了t分布。所以問題應該就出在這個qnorm芍耘。
知道了SAS的proc means計算CI采用的是t分布址遇,那就簡單了,class數(shù)據(jù)集sex="F"有9個人斋竞,那么n-1就是8坝初,我們?nèi)ゲ閠分布界值表(雙側)
我們將2.306帶到R里面的程序中,z_score <- 2.306
bingo乒省,看到算出來的置信區(qū)間跟SAS一樣(分組為F)巧颈,但是SEX=M的不一樣,因為這組的觀測是n=10袖扛,所以界值2.306并不適用于這組砸泛。所以平時了解點統(tǒng)計知識還是有用的。
其實R程序里面的那些代碼蛆封,就是根據(jù)SASHELP里面的公式來的唇礁,現(xiàn)在知道問題在哪了,但是怎么解決我還不清楚,有時間研究一下這個norm,可能需要換成其他函數(shù)砸讳。
TA還問我是在哪學到這些東西
1)通過我的文章琢融,可以看到我的思路,需要了解什么簿寂,首選SASHELP漾抬,最權威最詳細,但是太枯燥難懂克胳,而且有些選項不是都有對應的例子
2)第二就是sas community平绩,平時有什么問題,搜索關鍵字漠另,看下別人是不是有相同的問題馒过,這個也解決了我不少問題
3)現(xiàn)在類似chatgpt的應用和軟件太多了,有什么問題酗钞,直接把問題拋給它們腹忽,大多數(shù)都能給出正確的答案,但是不能太依賴砚作,有些給的看似是正確答案窘奏,但是卻是錯的或者有誤,還是需要自己認真推敲葫录。