如何推导SAS中密度分布的方程?

时间:2017-12-05 14:38:49

标签: sas

我使用以下程序获取交易计数的密度图:

PROC SGPLOT DATA = Tran_Restaurant ;
  density Transaction_Count/ scale=density ;
  "Restaurant Transaction Count";
  XAXIS LABEL = 'Transaction_Count' GRID VALUES = (0 TO 100 BY 10);
RUN; 

示例数据:

Customer_ID   Transaction_Count
1213x         23
2131x         14

Customer_ID在数据集中是不同的。 因此,从每个transaction_count的图中我们可以得到客户数量。

我想得到密度曲线的等式?是否有可能在SAS中做到这一点?

3 个答案:

答案 0 :(得分:2)

如果您知道自己的数据正常,可以使用PROC UNIVARIATE

估算分布
proc univariate data=Tran_Restaurant;
    var Transaction_Count;
    histogram Transaction_Count / normal;
run;

向下滚动到标有Fitted Normal Distribution的部分,了解mu和theta的估算值。

如果您有SAS / ETS且数据未正常分发,则可以尝试使用PROC SEVERITY进行估算。如果您的计算机具有大量内核,请改用PROC HPSEVERITY(它运行得更快)。开箱即用,此proc可以将各种预定义的分布拟合到一组数据并估计它们的参数。您可以选择包含自己的自定义分布,这使其非常强大。

我个人喜欢使用KS统计数据估算分布的拟合程度,但是根据目标,还有其他多种方法可以选择分布。

ods graphics on;

proc severity data=Tran_Restaurant
              outest=myests
              criteria=KS
              ;
    dist _ALL_;
    loss transaction_count;
run;

它将返回一组可能的预定义分布及其最接近的拟合。 默认情况下,PROC SEVERITY适合:

  • 伯尔
  • 指数
  • 伽玛
  • 广义帕累托分布
  • 逆高斯
  • 对数正态
  • 帕累托
  • Scaled Tweedie
  • 特威迪
  • 威布尔

答案 1 :(得分:1)

该陈述正在估算离散数据的正常密度曲线。正常密度有2个参数,平均值和标准偏差。你可以从PROC MEANS获得。

proc means data=Tran_Restaurant mean std;
var Transaction_Count;
run;

现在您有离散计数值和连续分布的问题。这样做的多种方式,没有一种是完美的。

一种方法是获得在给定数量范围内的概率。因为你的数字是整数,你可以使用+/- 0.5。换句话说

P(x | V-0.5 <= x <= V+0.5)

使用SAS CDF功能进行正常分发:

P = CDF('normal',V+.5,mean,std) - CDF('normal',V-.5,mean,std)

因此,如果您的数据有100个观察值,那么您会期望

E_count = P*100;

答案 2 :(得分:0)

您可以使用ODS OUTPUT将特定数据点转换为数据集;像这样:

ods output sgplot=datapoints;
proc sgplot ... ;
run;
ods output close;
但是,它不会给你这个等式。等式在documentation中给出;我想你只需要在PROC MEANS或其他地方计算参数。我不知道如何让SGPLOT直接给你。