楼主: Rock2000
13769 13

[问答] GLM过程的lsmean结果疑问 [推广有奖]

  • 1关注
  • 24粉丝

已卖:6892份资源

学术权威

23%

还不是VIP/贵宾

-

威望
1
论坛币
104790 个
通用积分
51.9656
学术水平
55 点
热心指数
74 点
信用等级
48 点
经验
23510 点
帖子
520
精华
0
在线时间
10924 小时
注册时间
2004-5-27
最后登录
2025-11-12

楼主
Rock2000 发表于 2013-10-26 12:43:45 |AI写论文
100论坛币
有一数据集,包含以下变量,因为男女、城乡、年份等年龄组成不一样,进行TC的均数比较时需要用年龄进行调节,使用GLM过程,用年龄age作为协变量计算lsmean。

[td]
#变量类型长度输出格式标签
1sex数值81.性别1=男2=女
2age数值8 年龄(岁)
3tc数值85.2TC
4yrs字符4 年份
5district字符4$4.城乡
6id数值8 ID号



为了进行年份间、城乡间、男女间进行比较,分别运行以下3个glm过程。




  1. libname a "d:\";

  2. proc sort data=a.all;by district sex; run;

  3. proc glm data=a.all;
  4. title '表1 城乡、男女TC年龄调节均数的年份间比较';
  5. class yrs district sex;
  6. model TC=yrs district sex age;
  7. by district sex;
  8. lsmeans yrs/stderr;
  9. run;

  10. proc sort data=a.all;by yrs sex; run;

  11. proc glm data=a.all;
  12. title '表2 不同年份、男女TC年龄调节均数的城乡间比较';
  13. class yrs district sex;
  14. model TC=yrs district sex age;
  15. by yrs sex;
  16. lsmeans district/stderr;
  17. run;

  18. proc sort data=a.all;by yrs district; run;

  19. proc glm data=a.all;
  20. title '表3 不同年份、城乡TC年龄调节均数的男女间比较';
  21. class yrs district sex;
  22. model TC=yrs district sex age;
  23. by yrs district;
  24. lsmeans sex/stderr;
  25. run;
复制代码
分别得出结果,按道理,同样是用age年龄进行调节,最终结果应该是一样的,比如,2001年城市男性的调节均数(TC的lsmean)在表1、表2、表3中应该是一样的,但实际不同,为什么?


表1结果:城乡=城市 性别1=男2=女=1


[td]
yrstc LSMEAN标准误差Pr > |t|
20014.704213650.05855886<.0001




表2结果:年份=2001 性别1=男2=女=1


[td]
districttc LSMEAN标准误差Pr > |t|
城市4.635279570.03999276<.0001

表3结果:年份=2001 城乡=城市


[td]
sextc LSMEAN标准误差Pr > |t|
14.637513810.04075315<.0001




程序及数据集请下载附件,谢谢。



GLM_test.rar (27.93 KB) 本附件包括:

  • ddd.sas
  • all.sas7bdat














关键词:mean LSM SME LSmeans libname title 标签 男女

沙发
webgu 发表于 2013-10-26 19:14:20
1. 你的by语句起了分割数据集的作用,by里的变量每次只有一个取值,相当于分层分析了。起不到类似于多元校正的作用。

2. 3个LSMEANS分别估计的是各年,城乡,男女的 最小二乘均值。也不可能相同。
SAS资源
1. SAS 微信:StatsThinking
2. SAS QQ群:348941365

藤椅
Rock2000 发表于 2013-10-26 22:31:17
webgu 发表于 2013-10-26 19:14
1. 你的by语句起了分割数据集的作用,by里的变量每次只有一个取值,相当于分层分析了。起不到类似于多元校正 ...
我明白by语句起了分割数据集的作用,但如果输出如下的表,并且要男女比较、城乡比较、年份间比较,要做成以下的lsmean,怎么计算?怎样校正?谢谢。

  
  

男性



女性






TC



TC



城市









2001









2003









2004









2012









农村









2001









2003









2004









2012








要较:男女、城乡、年份


板凳
Rock2000 发表于 2013-10-27 09:06:46
其实1楼的3个程序都可以输出以上结果就是比较不同而已,但是问题出现结果不一样。

报纸
webgu 发表于 2013-10-27 10:36:34
我的建议是:

lsmeans  district*yrs*sex;

SAS资源
1. SAS 微信:StatsThinking
2. SAS QQ群:348941365

地板
Rock2000 发表于 2013-10-27 11:45:55
webgu 发表于 2013-10-27 10:36
我的建议是:

lsmeans  district*yrs*sex;
但是不能输出3楼的表格啊,这才是问题。

7
webgu 发表于 2013-10-27 12:26:42
当然不可能是一模一样的表格。稍稍整理一下即可。
  1. proc glm data=a.all;
  2. title 'Adjusted TC';
  3. class district yrs  sex;
  4. model TC=yrs district sex age  district *yrs*sex;
  5. lsmeans district *yrs*sex/stderr;
  6. run;
复制代码
飞信截图20131027122620.jpg
SAS资源
1. SAS 微信:StatsThinking
2. SAS QQ群:348941365

8
Rock2000 发表于 2013-10-27 21:50:39
webgu 发表于 2013-10-27 12:26
当然不可能是一模一样的表格。稍稍整理一下即可。
谢谢你的回复,你这个程序是可以输出我在3楼提出的表的,但是,我在1楼的程序3个过程分别都可以输出3楼的表的结果,问题是,我要比较lsmean的差别,具体是:
相同性别(比如男性)及农村或城市内个年份的TC的lsmean的差别,1楼表1就是为了达到此目的;
相同年份(比如2001年)及相同性别(比如男性)的城乡的TC的lsmean的差别,1楼表2就是为了达到此目的;
相同年份(比如2011年)及城乡(比如农村)的不同性别的TC的lsmean的差别,1楼表3就是为了达到此目的。

所有以上的表格均可以单独输出3楼的表格结果,同样是用年龄调整,问题是输出的结果不一样,为什么?

9
webgu 发表于 2013-10-28 08:56:22
你需要自己明确的是:
1.你是要分层做还是要做多元校正?意议和方法都是不一样的。我的建议是多元校正。
2.你需要弄清楚一下LSMEANS的意义,你就知道为什么三个应该是不同的结果。
  1. proc glm data=a.all;
  2. title 'Adjusted TC';
  3. class district yrs  sex;
  4. model TC=yrs district sex age  district *yrs*sex;
  5. /*分别实现三个LSMEANS*/
  6. lsmeans district/stderr;
  7. lsmeans yrs/stderr;
  8. lsmeans sex/stderr;
  9. run;
复制代码
SAS资源
1. SAS 微信:StatsThinking
2. SAS QQ群:348941365

10
Rock2000 发表于 2013-10-28 09:45:19
webgu 发表于 2013-10-28 08:56
你需要自己明确的是:
1.你是要分层做还是要做多元校正?意议和方法都是不一样的。我的建议是多元校正。
...
我要的分层校正,因为我想分层比较。
相同性别(比如男性)及农村或城市内个年份的TC的lsmean的差别,1楼表1就是为了达到此目的;
相同年份(比如2001年)及相同性别(比如男性)的城乡的TC的lsmean的差别,1楼表2就是为了达到此目的;
相同年份(比如2011年)及城乡(比如农村)的不同性别的TC的lsmean的差别,1楼表3就是为了达到此目的。

如果不分层,校正就变得很简单了。

问题是我用不同分层方法(by sex district, by yrs sex等)时,虽然都能输出3楼表格结果,但是结果不一样。如果是多元校正,用 sex*district*yrs就可以。

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-5 17:51