2015-06-16 82 views
0

我知道一些基本的MDX,但似乎無法創建計算度量,該度量使用的是另一個計算度量的日期集合,該集合也計算同一日期集合中的另一個度量。重新使用計算的度量,使用總和

背景是我試圖計算一個簡單線性迴歸係數的最小二乘估計值,截距設置爲零。我用這個公式here來做到這一點,這工作正常。然而,我現在想要計算該係數的標準誤差,其涉及估計定義爲here的平方殘差的總和。

請參閱下面我寫的代碼。這甚至可以用MDX嗎?

With 

Member [Measures].[Renewed] As 
    Sum([Customer Product Status].[Customer Product Status Rollup].&[Renewed], [Measures].[Product Count]) 

Member [Measures].[Renewed * Product Count] As 
    [Measures].[Renewed] * [Measures].[Product Count] 

Member [Measures].[Product Count * Product Count] As 
    [Measures].[Product Count] * [Measures].[Product Count] 

Member [Measures].[Product Count n] As 
    Sum([Expiry Date].[Date].Children, 1.0) 

Member [Measures].[Product Count Mean] As 
    Sum([Expiry Date].[Date].Children, [Measures].[Product Count])/[Measures].[Product Count n] 

Member [Measures].[Renewal Rate] As 
    (Sum([Expiry Date].[Date].Children, [Measures].[Renewed * Product Count]))/ 
    (Sum([Expiry Date].[Date].Children, [Measures].[Product Count * Product Count])) 

Member [Measures].[Sum of Squared Residuals] As 
    Sum([Expiry Date].[Date].Children, ([Measures].[Renewed] - [Measures].[Renewal Rate] * [Measures].[Product Count])^2.0) 

Member [Measures].[Mean of Squared Residuals] As 
    [Measures].[Sum of Squared Residuals]/([Measures].[Product Count n] - 1) 

Member [Measures].[Renewal Rate Standard Error] As 
    ([Measures].[Mean of Squared Residuals]/Sum([Expiry Date].[Date].Children, [Measures].[Product Count * Product Count]))^0.5 

Member [Measures].[Renewal Rate Upper CI] As 
    [Measures].[Renewal Rate] + 2.0 * [Measures].[Renewal Rate Standard Error] 

Member [Measures].[Renewal Rate Lower CI] As 
    [Measures].[Renewal Rate] - 2.0 * [Measures].[Renewal Rate Standard Error] 

Set [Month Name] As 
    Filter(
     [Expiry Date].[Month Name].Children, 
     StrToMember("[Expiry Date].[Month Of Year Name].&[May]", CONSTRAINED) * StrToMember("[Expiry Date].[Year Name].&[2015]", CONSTRAINED) 
    ) 

Set [Historical Months] As 
    {[Month Name].Item(0).Lag(25) : [Month Name].Item(0).Lag(1)} * 
    [Expiry Date].[Month Date].Children * 
    [Expiry Date].[Month of Year Name].Children * 
    [Expiry Date].[Year Name].Children 

Select Non Empty {[Measures].[Renewal Rate], 
    [Measures].[Renewal Rate Lower CI], 
    [Measures].[Renewal Rate Upper CI]} On 0, 
    Non Empty [Historical Months] On 1 
From [Product Renewals] 
+0

'似乎無法創建一個計算的度量值,該度量值使用另一個計算度量的日期集合的總和,該度量也計算同一日期集合中的另一個度量值。「 - 您究竟在哪裏遇到問題?我看到的唯一的「日期」集是'[月份名稱]'。 (請原諒我對統計術語的無知) – SouravA

+0

主要問題是[度量]。[平方餘數之和]計算的成員。 [度量] [更新率] * [度量]。[商品數量]的錯誤結果爲0. – jeremyh

+0

我有一種感覺總結[度量] [更新率] * [度量]。 Date]。[Date] .Children將不能作爲[Measures]使用。[Renewal Rate]本身是在[Expiry Date]之上加上度量值的結果[Date] .Children – jeremyh

回答

1

我通過改寫[度量] [方差殘差和]度量來得到這個結果。如果展開公式並將[度量值] [更新率]從求和函數中取出,那麼一切正常。擴展[措施] [殘差平方之和]度量現在看起來是這樣的:

Member [Measures].[Sum of Squared Residuals] As 
    Sum([Expiry Date].[Date].Children, [Measures].[Renewed] * [Measures].[Renewed]) + 
    [Measures].[Renewal Rate]^2.0 * Sum([Expiry Date].[Date].Children, [Measures].[Product Count * Product Count]) - 
    2.0 * [Measures].[Renewal Rate] * Sum([Expiry Date].[Date].Children, [Measures].[Renewed * Product Count]) 

Excel的迴歸結果爲4月: enter image description here

MDX迴歸結果: enter image description here

+1

很棒的是你能夠繞過它並且感謝您分享提示! – SouravA