yencheng
我在使用lm的時候遇到一個問題無法解決, 想請問大家~
有兩個timeSeries object: a, b. 兩者的column數相等(=5435), 但是row數不相等.
我需要作以下類似的迴歸:
> lm(a@data[5,]~b@data[16,], na.action=na.exclude)
但是S-plus不斷給我error message如下:
Problem: Length of a@data[5,] (variable 1) is 5435 !
= length of others (1)
Use traceback() to see the call stack
既然我的兩個object的column數相等, 實在是不懂怎麼會有這個問題?
敢問問題是出在哪裡呢?
cran
traceback() 说什么
yencheng
traceback()內容如下~
> traceback()
8: eval(action, sys.parent())
7: doErrorAction("Problem: Length of a@data[5, ] (
variable 1) is 5435 != length of others (1)",
6: model.frame.default(formula = a@data[5, ] ~ b@
5: model.frame(formula = a@data[5, ] ~ b@data[16,
4: eval(m, sys.parent())
3: lm(a@data[5, ] ~ b@data[16, ], na.action =
2: eval(expression(lm(a@data[5, ] ~ b@data[16, ],
1:
Message: Problem: Length of a@data[5, ] (variable
1) is 5435 != length of others (1)
看不太懂~
> dim(a)
[1] 312 5435
> dim(b)
[1] 104 5435
兩個timeSeries的object的column數是相同的, 如上~
drewlee
row数相等才行,每一个row对应一个观测。
yencheng
我用align()函數 把兩個timeSeries object的row數調整成相同 (兩個object的差別就是data frequency的差異 一個是月資料 一個是季資料)
但是S-plus還是給我同樣的error message如下:
> class(season.temp)
[1] "timeSeries"
> class(month.temp)
[1] "timeSeries"
> dim(season.temp)
[1] 312 5435
> dim(month.temp)
[1] 312 5435
> lm(month.temp@data[16,]~season.temp[15,],na.action=na.exclude)
Problem: Length of month.temp@data[16, ] (variable 1) is 5435 != length of othe
rs (1)
Use traceback() to see the call stack
>
row數已經調整成相同但是還是有同樣的error message~~
不知這樣的問題是出在哪裡~~
drewlee
Sorry, 没注意是timeSeries object, 以前我都不知道有这玩意儿。之前的回答没道理。
你dim(season.temp[15,])以及length(season.temp[15,])试试看长度是多少。
yencheng
dim(season.temp[15,])是1 5435
length(season.temp[15,])是5435
dim(month.temp[15,])是1 5435
length(month.temp[15,])是5435
看起來似乎長度都是很一致的, 不了解哪裡出錯~~
yihui
你的season.temp[15,]不是一个向量(或列向量),month.temp[15,]一样,所以会出错。
要么你把它们都转置一下lm(t(month.temp[15,])~t(season.temp[15,])),要么把它们处理一下然后赋值给新的变量,比如x1=unlist(month.temp[15,]); x2=unlist(season.temp[15,]); lm(x1~x2)
还是一句话,对于程序语言要遵守语言的规范,不要想当然。矩阵的列是一个变量,行是一个观测,这是最基本的规范。你若拿一行数据和另一行数据作回归,意思就是用一系列变量和另一系列变量(都只有一个观测)作回归,你想想这是单因变量回归么?
drewlee
[quote]引用第6楼yencheng于2007-05-30 00:47发表的“”:
dim(season.temp[15,])是1 5435
length(season.temp[15,])是5435
dim(month.temp[15,])是1 5435
length(month.temp[15,])是5435
.......[/quote]
这样的话,你试试
lm(month.temp@data[16,]~t(season.temp[15,]),na.action=na.exclude)
Kammy
1.即F test(分析方差,不是检验是否方差齐性),
检验统计量为F=MS组间/MS组内,欲一次检验多个处理组的均数之间有无差异.
以及SNK-q test
就是用于两两均数比较,查出到底哪两组之间有差异.
查阅了help,<R语言笔记(数据分析与绘图的编程环境)>,<R for beginners>,R_tutorial
都没有找到这方面的做法,介绍的皆为aov函数在与模型拟合有关的方差分析的用法.没有这个多样本均数比较.是说需要自己编么?
2.我需要从文件里读出一个数组,对它做可以用scan.那么怎样从read.table的结果里调出一个数组?
多谢!