楼主: zcyijia
2742 17

如何对以下数据进行SAS操作 [推广有奖]

  • 1关注
  • 0粉丝

本科生

1%

还不是VIP/贵宾

-

威望
0
论坛币
31 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
473 点
帖子
49
精华
0
在线时间
44 小时
注册时间
2013-1-16
最后登录
2013-3-1

30论坛币
各位大侠! 本题悬赏30个币,首先问检验O2 或者 O3 或者两者 都 significantly related to the O1 ?
如何检验本数据是不是有outliers、方差不等、非线性、非正态性等问题并解决
最终的prediction equation是什么样子的?
数据如下,各位大侠帮助!
New        O1        O2        O3
1        28        14        9.3
2        14        7        12.4
3        37        12        6.7
4        84        40        9.1
5        28        11        11
6        38        16        11.7
7        98        54        19.7
8        21        9        7.7
9        44        22        12
10        118        74        7.2
11        42        18        16.6
12        60        31        14
13        106        48        7.2
14        62        42        6.5
15        49        22        11.5
16        38        18        10.9
17        26        9        8.8
18        46        23        12.4
19        26        9        8.1
20        36        17        10.3
21        48        20        13.2
22        54        30        12.7
23        56        31        14
24        135        74        9.7
25        40        16        8.7
26        21        8        8.7
27        48        19        10
28        30        10        5.1
29        22        11        1.1
30        50        30        7.7
31        18        8        3.3
32        35        16        11.6
33        241        124        12.5
34        73        29        14.9
35        40        11        9.6
36        42        20        11.1



最佳答案

ziyenano 查看完整内容

名字可以自己取~ 这里为了简单用sql写的; 也可以用transpose过程,不需要自己取名字
关键词:significant Prediction equation Outliers predict 如何

本帖被以下文库推荐

沙发
ziyenano 发表于 2013-2-1 10:06:24 |只看作者 |坛友微信交流群
zcyijia 发表于 2013-2-1 11:28
那也就是说 ,对于这个名字有要求 比如本题中都是O开头的 如果不是O1 ,O2 ,O3的话 比如是AB ,CD, EF这仨, ...
名字可以自己取~
这里为了简单用sql写的;
也可以用transpose过程,不需要自己取名字

使用道具

藤椅
ziyenano 发表于 2013-2-1 11:05:14 |只看作者 |坛友微信交流群
/*correlation test*/
proc corr data=ex pearson nosimple;
var o1;
with o2 o3;
run;
/*使用pearson相关检验 得到O1 O2显著线性相关  O1 O2线性相关不显著*/
proc corr data=ex spearman nosimple;
var o1;
with o2 o3;
run;
/*使用spearman相关系数 得到O1 O2显著正相关  O1 O2显著正相关*/

/*结论:O1与O2显著线性正相关  O1与O3显著正相关 但线性相关不显著*/

/*homogeneity test of variance*/
proc sql;
create table ex1 as
select 'O1' as group,O1 as O from ex
union all
select 'O2' as group,O2 as O from ex
union all
select 'O3' as group,O3 as O from ex;
quit;

proc glm data=ex1;
class group;
model O=group;
means group/hovtest;
run;

/*Levene's HoV Test结果显示 方差齐性*/

/*normality test */

proc univariate data=ex noprint;
var O1-O3;
histogram /normal;
run;

/*goodness of fit结果显示 O1 O2正态性检验不通过
O3通过*/

/*liner regression*/

proc reg data=ex;
model O1=O2 O3;
run;

/*O1=4.61+1.75*O2+0.33*O3
而截距项,O3的回归系数不显著*/
/*拟合中心化的线性回归 去除截距项*/
proc reg data=ex;
model O1=O2 O3/noint r;
run;

/*O1=1.76*O2+0.70*O3   
  此次回归系数均显著
通过cook距离 通常认为大于1为异常值,
第33条观测可认为异常,可以剔除该记录,重新建立回归方程*/

注:线性回归是建立在正态性假设的基础上的,
   此前O1 O2正态性检验未通过,但实际运用
   中并非需要这么严格;
   不过也可以对数据进行变化,使其符合正态分布

已有 2 人评分学术水平 热心指数 信用等级 收起 理由
webgu + 1 + 1 + 1 辛苦了。
zhangzachary + 1 + 1 + 1 分析的有道理

总评分: 学术水平 + 2  热心指数 + 2  信用等级 + 2   查看全部评分

使用道具

板凳
zcyijia 发表于 2013-2-1 11:22:12 |只看作者 |坛友微信交流群
ziyenano 发表于 2013-2-1 11:05
/*correlation test*/
proc corr data=ex pearson nosimple;
var o1;
谢谢,但是检验方差齐性那儿我没看懂。
select 'O1' as group,O1 as O from ex
union all
这个口令的意思是检验另外两组和O1的方差是不是均等? 那剩下两组口令
select 'O2' as group,O2 as O from ex
union all
select 'O3' as group,O3 as O from ex;
quit;
又是怎么个比较呢?
proc glm data=ex1;这一步做GLM? 线性回归?
class group;
model O=group;
means group/hovtest;检验均值吗?
run;

使用道具

报纸
ziyenano 发表于 2013-2-1 11:24:24 |只看作者 |坛友微信交流群
proc sql;
是把数据整合成方差齐性检验需要的格式

proc glm data=ex1;
class group;
model O=group;
means group/hovtest;/*hovrtest是方差齐性检验*/
run;

使用道具

地板
zcyijia 发表于 2013-2-1 11:28:02 |只看作者 |坛友微信交流群
ziyenano 发表于 2013-2-1 11:24
proc sql;
是把数据整合成方差齐性检验需要的格式
那也就是说 ,对于这个名字有要求 比如本题中都是O开头的 如果不是O1 ,O2 ,O3的话 比如是AB ,CD, EF这仨,那是不是就不能做这种整合了呢?

使用道具

7
zcyijia 发表于 2013-2-5 08:47:33 |只看作者 |坛友微信交流群
ziyenano 发表于 2013-2-1 11:05
/*correlation test*/
proc corr data=ex pearson nosimple;
var o1;
您好 请问您一下 如果用log 以10为底 的来refine一下回归 我用LOG10()这个口令做不出来,请问您能帮我看一下 如何做吗?
谢谢

使用道具

8
ziyenano 发表于 2013-2-5 09:40:08 |只看作者 |坛友微信交流群
zcyijia 发表于 2013-2-5 08:47
您好 请问您一下 如果用log 以10为底 的来refine一下回归 我用LOG10()这个口令做不出来,请问您能帮我看一 ...
SAS提供的log是以e为底,
用对数换底公式可以得到底为10的对数
log10(a)=log(a)/log(10)

使用道具

9
zcyijia 发表于 2013-2-5 10:03:09 |只看作者 |坛友微信交流群
ziyenano 发表于 2013-2-5 09:40
SAS提供的log是以e为底,
用对数换底公式可以得到底为10的对数
log10(a)=log(a)/log(10)
data e3;
set e3;
logo1=log10(O1);
log02=log10(O2);
log03=log10(O3);
run;

proc glm data=e3;
model logo1=log02 log03/solution clparm;
output out=check r=res p=pred;
run;

proc reg data=e3;
model logo1=log02 log03;
output out=check r=res p=pred;
run;
您看,这样做出来的不是以10为底的吗?
我是这么做的,倒是能做出来但是按照您说的要除以log10,那我是不是做错了?
还有想问您,这个是只有因变量取对数吗?还是包括自变量都取对数?
谢谢

使用道具

10
ziyenano 发表于 2013-2-5 11:06:37 |只看作者 |坛友微信交流群
log10函数是以10为底的对数,这样就不需要换底了;
两者是相等的,
多数情况只要对因变量取对数,目的是为了使数据正态化

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-21 17:25