我使用以下程序获取交易计数的密度图:
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中做到这一点?
答案 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
适合:
答案 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直接给你。