jimi9876
这是一个经常碰到的问题,我查了网上以及参考书似乎都没有相似的例子或权威的回答,还请您不吝赐教,将十分感谢!
本数据是一种昆虫经三种处理后测定了3天的产卵情况(每个处理3个重复),如果用每个处理每一天产卵数的均值相对于天数作图,将是三条下降的曲线,请问如何检测三条曲线(三个处理三天内产卵下降趋势)差异显著性(并作成对比较),原始数据如下
Treat Day Response
T1 1 15.58
T1 1 14.69
T1 1 14.01
T1 2 13.01
T1 2 12.12
T1 2 11.43
T1 3 10.8
T1 3 10.2
T1 3 9.825
T2 1 15.313
T2 1 13.22
T2 1 12.04
T2 2 10.833
T2 2 9.753
T2 2 8.973
T2 3 8.277
T2 3 7.167
T2 3 6.669
T3 1 11.313
T3 1 9.22
T3 1 8.04
T3 2 6.833
T3 2 5.753
T3 2 4.973
T3 3 4.277
T3 3 3.167
T3 3 2.669
hexm26
信息不全!你的第一行的15.58和第四行的13.01来自同一个昆虫吗?
王笑权
不喝完8两老白干儿解决不了这个问题。 干杯!
jimi9876
[quote]引用第1楼hexm26于2008-03-11 11:16发表的“”:
信息不全!你的第一行的15.58和第四行的13.01来自同一个昆虫吗?[/quote]
这回前了,Insect一列是昆虫编号,谢谢,还请多多指教!
Treat Day Insect Response
T1 1 1 15.58
T1 1 2 14.69
T1 1 3 14.01
T1 2 1 13.01
T1 2 2 12.12
T1 2 3 11.43
T1 3 1 10.8
T1 3 2 10.2
T1 3 3 9.825
T2 1 4 15.313
T2 1 5 13.22
T2 1 6 12.04
T2 2 4 10.833
T2 2 5 9.753
T2 2 6 8.973
T2 3 4 8.277
T2 3 5 7.167
T2 3 6 6.669
T3 1 7 11.313
T3 1 8 9.22
T3 1 9 8.04
T3 2 7 6.833
T3 2 8 5.753
T3 2 9 4.973
T3 3 7 4.277
T3 3 8 3.167
T3 3 9 2.669
hexm26
用随机系数模型(Random Coefficients Model)吧:
data insect;
input Treat $ Day Insect Response;
datalines;
T1 1 1 15.58
T1 1 2 14.69
T1 1 3 14.01
T1 2 1 13.01
T1 2 2 12.12
T1 2 3 11.43
T1 3 1 10.8
T1 3 2 10.2
T1 3 3 9.825
T2 1 4 15.313
T2 1 5 13.22
T2 1 6 12.04
T2 2 4 10.833
T2 2 5 9.753
T2 2 6 8.973
T2 3 4 8.277
T2 3 5 7.167
T2 3 6 6.669
T3 1 7 11.313
T3 1 8 9.22
T3 1 9 8.04
T3 2 7 6.833
T3 2 8 5.753
T3 2 9 4.973
T3 3 7 4.277
T3 3 8 3.167
T3 3 9 2.669
;;;;
proc mixed data=insect;
class treat insect;
model Response = treat day treat*day;
random intercept day / type=un sub=insect;
lsmeans treat / adjust = TUKEY ;
run;
结论:三条曲线之间差异显著(P=0.0200),其中T3显著差异于T1(P=0.0001)和T2(P=0.0023),T1和T2之间也存在差异但显著性在10%程度内(P=0.0658)。
上面的分析并不唯一,用重复测量(Repeated Measures)或其他的模型(type=ar(1))等也可以做,但结论应该差不多。另外,我用的的Tukey调整多元比较,具体情况楼主自己根据试验目的调整吧。
jimi9876
[quote]引用第4楼hexm26于2008-03-12 09:12发表的“”:
用随机系数模型(Random Coefficients Model)吧:
data insect;
input Treat $ Day Insect Response;
datalines;
T1 1 1 15.58
.......[/quote]
非常感谢!虽然我不懂sas,但用mixed 或repeat模型应该是对的,但用lsmeans treat / adjust = TUKEY做成对比较似乎有问题,比如我对数据做了调整,让T1与T3相同,即随时间下降,而T2则随时间上升:
Treat Day Insect Response
T1 1 1 15.58
T1 1 2 14.69
T1 1 3 14.01
T1 2 1 13.01
T1 2 2 12.12
T1 2 3 11.43
T1 3 1 10.8
T1 3 2 10.2
T1 3 3 9.825
T2 1 4 9.825
T2 1 5 10.2
T2 1 6 10.8
T2 2 4 11.43
T2 2 5 12.12
T2 2 6 13.01
T2 3 4 14.01
T2 3 5 14.69
T2 3 6 15.58
T3 1 7 15.58
T3 1 8 14.69
T3 1 9 14.01
T3 2 7 13.01
T3 2 8 12.12
T3 2 9 11.43
T3 3 7 10.8
T3 3 8 10.2
T3 3 9 9.825
则结果为
Null Model Likelihood Ratio Test
DF Chi-Square Pr > ChiSq
2 22.47 <.0001
Type 3 Tests of Fixed Effects
Num Den
Effect DF DF F Value Pr > F
Treat 2 9 94.84 <.0001
Day 1 6 148.35 <.0001
Day*Treat 2 9 593.40 <.0001
Least Squares Means
Standard
Effect Treat Estimate Error DF t Value Pr > |t|
Treat T1 12.4072 0.4100 9 30.26 <.0001
Treat T2 12.4072 0.4100 9 30.26 <.0001
Treat T3 12.4072 0.4100 9 30.26 <.0001
Effect Treat _Treat Estimate Error DF t Value Pr > |t| Adjustment Adj P
Treat T1 T2 6.52E-15 0.5798 9 0.00 1.0000 Tukey 1.0000
Treat T1 T3 -947E-17 0.5798 9 -0.00 1.0000 Tukey 1.0000
Treat T2 T3 -16E-15 0.5798 9 -0.00 1.0000 Tukey 1.0000
此成对比较显然与上述结果矛盾,还请您多多指教,十分感谢!
hexm26
原因很简单,你的问题开始说的是3条曲线都是下降的,所以我给你的模型中Day是个连续变量,用lsmeans treat / adjust = TUKEY其实比较的是一个平均值。你刻意更改的数据明显是3条曲线的平均值完全想同。
既然你改了题目,分析也要相应的改动,设置一个新的变量Dayc=Day,但Dayc是离散变量,将它放在Class和Model命令行里。然后用Contrast或Estimate分析每天的曲线差异。记得SAS的Help文件里面有个类似的例子。我现在手边没有SAS,你自己改改把结果贴上来,我们一起来分析。如果我的估计没错的话,3天T2和T1(T3)的差别有,但都不显著。
jimi9876
[quote]引用第6楼hexm26于2008-03-13 09:13发表的“”:
原因很简单,你的问题开始说的是3条曲线都是下降的,所以我给你的模型中Day是个连续变量,用lsmeans treat / adjust = TUKEY其实比较的是一个平均值。你刻意更改的数据明显是3条曲线的平均值完全想同。
既然你改了题目,分析也要相应的改动,设置一个新的变量Dayc=Day,但Dayc是离散变量,将它放在Class和Model命令行里。然后用Contrast或Estimate分析每天的曲线差异。记得SAS的Help文件里面有个类似的例子。我现在手边没有SAS,你自己改改把结果贴上来,我们一起来分析。如果我的估计没错的话,3天T2和T1(T3)的差别有,但都不显著。[/quote]
非常感谢,实在非常感谢!看了不少书,确实是用contrast两两比较,编了个程序,还请指正
data insect;
input Treat $ Day Insect Response;
datalines;
T1 1 1 15.58
T1 1 2 14.69
T1 1 3 14.01
T1 2 1 13.01
T1 2 2 12.12
T1 2 3 11.43
T1 3 1 10.8
T1 3 2 10.2
T1 3 3 9.825
T2 1 4 15.313
T2 1 5 13.22
T2 1 6 12.04
T2 2 4 10.833
T2 2 5 9.753
T2 2 6 8.973
T2 3 4 8.277
T2 3 5 7.167
T2 3 6 6.669
T3 1 7 11.313
T3 1 8 9.22
T3 1 9 8.04
T3 2 7 6.833
T3 2 8 5.753
T3 2 9 4.973
T3 3 7 4.277
T3 3 8 3.167
T3 3 9 2.669
;;;;
proc mixed data=insect;
class treat day insect;
model Response = treat day treat*day;
repeated day / sub=insect type=un r rcorr;
contrast 'treat T1 vs T2 intercept' treat 1 -1 0;
contrast 'treat T1 vs T2 slope' day 1 -1 0;
run;
hexm26
嗯,不错,你用Repeated Measures Model来做也可以.另外,treat*day这个交叉如果是有显著作用的话,你在分析treat的主成分效果时应该把交叉项也带上,也就是说每天的曲线效果是不同的.在曲线有明显不同斜率的情况下,笼统的说treat的总效果是没有意义的.具体如何实现,你可以通过Contrast来做,比如说treat 1 -1 0 treat*day 1 0 0 -1 0 0 0 0 0.不一定准确,大概是这个样子的,你自己去试吧.
jimi9876
[quote]引用第8楼hexm26于2008-03-15 11:06发表的“”:
嗯,不错,你用Repeated Measures Model来做也可以.另外,treat*day这个交叉如果是有显著作用的话,你在分析treat的主成分效果时应该把交叉项也带上,也就是说每天的曲线效果是不同的.在曲线有明显不同斜率的情况下,笼统的说treat的总效果是没有意义的.具体如何实现,你可以通过Contrast来做,比如说treat 1 -1 0 treat*day 1 0 0 -1 0 0 0 0 0.不一定准确,大概是这个样子的,你自己去试吧.[/quote]
真是学无止境,非常感谢您的决定性指导!