Proc Means:Means过程介绍

Means过程介绍

 

原文地址:http://www2.sas.com/proceedings/sugi31/252-31.pdf

转载请注明出处: http://blog.sina.com.cn/s/blog_5d3b177c0100b68m.html

原文没有提供数据,所以就在网上随便找了个数据进行测试,地址如下:http://www.sasenterpriseminer.com/data/htwt.xls

该数据包含4个变量(性别sex,年龄age,身高height,体重weight),共237个观测。

 

1 语法:

proc means <option(s)> <statistic-keyword(s)>;

  by <descending> variable(s);

  class variable(s) <option(s)>;

  freq variable;

  id variable(s);

  output <out = dataset> <output-specification(s)>;

  types request(s);

  var variable(s);

  ways list;

  weight variable;

直接运行 proc means过程时,会对所有数值型变量进行操作,得到各变量的非缺失观测数N,均值MEAN,标准差STD DEV,最大值Max和最小值Min。

proc means data =Htwt;

run;

结果:

变量  标签       均值      标准偏差    最小值      最大值

-------------------------------------------------------------------

age     age    237  16.4430380  1.8425767  13.9000000  25.0000000

height  height 237  61.3645570  3.9454019  50.5000000  72.0000000

weight  weight 237  101.3080169 19.4406980 50.5000000  171.5000000

-------------------------------------------------------------------

我们还可以增加range(极差) sum(和) var(方差) mean(均值) nmiss(缺失值个数) median(中值)等选项得到其统计量。

proc means data =Htwt range sum var mean nmiss median;

run;

结果略。

 

2 Class:对变量进行分组操作

proc means data = Htwt range sum var mean nmiss median;

var height;

class sex;

run;

结果:

分析变量:height height

 

        sex    观测的个数            极差            总和            方差            均值    缺失值个数          中位数

        ---------------------------------------------------------------------------------------------------------------

                   111      15.5000000         6718.40      11.2781294      60.5261261                 61.3000000

 

                   126      21.5000000         7825.00      18.2900698      62.1031746                 61.9000000

        ---------------------------------------------------------------------------------------------------------------

 

3 out:输出结果数据集

proc means data = Htwt range sum var mean nmiss median;

var height;

class sex;

output out=height n = cnt sum = total mean = avg;

 

run;

proc print data=height;

run;

结果:

Obs    sex    _TYPE_    _FREQ_    cnt     total       avg

 

                    237     237    14543.4    61.3646

                 111     111     6718.4    60.5261

                 126     126     7825.0    62.1032

这里的n,sum,mean选项也可以用autoname自动命名。

这里的_TYPE_,当其值为0时,表示对总体进行操作,当其值为1时,表示对各个sex子集进行操作。如果这里的class后有两个变量,例如class sex age,则_type_会有4个值:

0 整个数据集的means操作

1 对age进行子集means操作(以字母为序)

2 对sex进行子集means操作(以字母为序)

3 对sex,age进行交叉子集子集means操作,即sex*age

 

4 types :对以上所述的_type_进行选择输出。

proc means data = Htwt range sum var mean nmiss median;

var height;

class sex age;

types sex sex*age;

output out=height sum = n = /autoname;

run;

proc print data=height;

run;

只对_type_=2和3的结果进行输出到height数据集中。

如果要对_type_进行二进制层级显示,则要用到charttype选项。

proc means data = Htwt noprint chartype;

var height;

class sex age;

types sex age sex*age;

output out=height sum = n = /autoname;

run;

proc print data=height;

run;

 

结果:

Obs    sex     age    _TYPE_    _FREQ_      Sum      height_N

          13.9      01               287.3         5

          14.0      01               398.6         7

          14.1      01               289.9         5

61               10        111      6718.4       111

62               10        126      7825.0       126

63        13.9      11                171.8         3

64        14.0      11               167.3         3

65        14.1      11               179.1         3

这里age的_type_为01,sex的_type_为10,两者交叉_type_就为11。

 

5 T检验:height的均值是否为70

data Htwttt;

set Htwt;

heighttt=height-70;

run;

proc means data = Htwttt n mean stderr t prt maxdec = 1 fw = 5;

var height heighttt;

run;

 

t :t值

prt:大于t值的概率

maxdec:输出参数的数值的小数点位数

fw:fields width,宽度

结果:

变量        标签           均值    标准误差       t 值    Pr > |t|

---------------------------------------------------------------------

height      height    237     61.4         0.3     239.44      <.0001

heighttt              237     -8.6         0.3     -33.70      <.0001

这里P值都小于0.01,故拒绝原假设

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据错误信息来看,你尝试使用 `Dahua::Manager::IConfigManager::Proc()` 函数来注册一个成员函数作为回调函数。然而,编译器报告没有找到匹配的函数调用,这可能是因为参数类型不匹配导致的。 根据错误信息,你正在尝试将 `CPageDesktop::onConfigLocalSmartMotionDetect` 作为回调函数,它的类型似乎是 `void (CPageDesktop::*)()`。然而,`Dahua::Manager::IConfigManager::Proc()` 函数的参数类型是 `void (*)(const Json::Value&, int&)`,即一个普通函数指针。 为了解决这个问题,你需要使用适当的转换来将成员函数指针转换为普通函数指针。通常,可以使用一个静态的中间函数来作为转发函数。以下是一个示例: ```cpp class CPageDesktop { public: static void onConfigLocalSmartMotionDetectWrapper(const Json::Value& value, int& result) { CPageDesktop* instance = reinterpret_cast<CPageDesktop*>(value.asInt64()); instance->onConfigLocalSmartMotionDetect(); } void onConfigLocalSmartMotionDetect() { // 实现逻辑 } void registerCallback() { Dahua::Manager::IConfigManager::Proc(&CPageDesktop::onConfigLocalSmartMotionDetectWrapper, reinterpret_cast<int64_t>(this)); } }; ``` 在上述代码中,我们创建了一个名为 `onConfigLocalSmartMotionDetectWrapper` 的静态中间函数。这个函数会将 `CPageDesktop` 类的实例指针传递给成员函数 `onConfigLocalSmartMotionDetect()` 进行调用。 然后,在 `registerCallback()` 函数中,我们使用 `onConfigLocalSmartMotionDetectWrapper` 作为回调函数进行注册,同时使用 `reinterpret_cast` 将 `this` 指针转换为整数类型的参数传递给中间函数。 通过这种方式,你可以将成员函数指针转换为普通函数指针,并成功注册为回调函数。请根据你的实际情况进行调整和修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值