2015/05/02 Fu Jen Univ. Talk

PPT for Fu Jen Univ. Talk:  20150502.FJU
Screen Shot 2015-05-02 at 12.52.04

Related materials:

 

Abstract

In his seminal book Flow, Csikszentmihalyi described the experience of close interaction with some Other. Its Chinese translator interpreted it as Big Self, which is a Buddhist term too.  This early concept finally developed into cosmic self / quantum self in Csikszentmihalyi’s following volume The Evolving Self. Inspired by it, Flow can be understood as the lasting self beyond the short-term memory period. Daniel Dennett’s Multiple Drafts Model regarded self as the derivative on the gravity center of parallel narrative contents. This talk tried to extend the model to deliberate the stable and lasting gravity center of lengthy narratives and the conscious contents themselves exceeding body limits. Furthermore, the three selves defined on current / flow / eternity are found isomorphic to Seligman’s triple happy lives of pleasure / engagement / meaningfulness in positive psychology.

張定綺之 Flow 中譯本「當下的幸福」以佛教詞匯「大我」意譯原文之  (close interaction with)  some Other,註意到原著此概念雖未明文而呼之欲出,終以 cosmic self / quantum self 二詞見於原作者後出之著作 The Evolving Self。此概念啟發將 Flow 體驗主體解讀為跨越短時記憶時間限度穩定延續之意識自我。如依據 Daniel Dennett 之 Multiple Drafts Model,意識自我派生于多重並行第一人稱敘述內容重心。筆者嘗試將該模型之短時記憶時間限度擴展,以延續時間多重並行敘述內容之高度一致性解讀心流。推而廣之,以敘述內容重心超越日常生活身體限度解讀「大我」。進而,以短時記憶時間限度、持續時間、超越時間限度之三種意識自我解讀Seligman積極心理學之愉悅、沈浸 (engagement) 、意義三重幸福框架。

 

泰坦尼克号的社会阶层分析

R预装数据集Titanic提供了当年这艘巨轮上男女、长幼、头等二等三等乘客及船员的生死计数。



感兴趣头等舱、二等舱、与三等经济舱的成年男客是否在生死比率上有阶层之分,采用简单粗暴的Bonferroni多重比较校正法,alpha_adjust = 0.05/3。



点击运行R代码可看到三个双尾检验都显著(Odds Ratio 置信区间都不含1)。
生/死比率,头等舱 > 三等舱 > 二等舱。
二等舱的哥们既没能先走又没有三等舱的体格。

来自头等舱的女主角与三等舱的男主角,生死Odds之Ratio:



乐观的总统候选人 (Zullow & Seligman, 1990)

从麦金莱(1900)到老布什(1998),23次大选中,给选民感受更为乐观的候选人有18次赢得大选。

如未预设乐观候选人是否更易赢得大选。双尾检验,问:乐观的候选人赢得大选的总体概率95%置信区间



解答:0.56~0.93。

如只关心乐观候选人获胜率的保守估计,更适用单边的置信区间。



解答:保守估计不低于0.60 。

关于双尾与单尾,对比这三种情形——

是否能认为「乐观」对胜败有正面或负面的预测意义(:.5, :≠.5,普通双边置信区间);
研究者关心乐观候选人的胜面,但不希望过高估计( ='less'的单尾置信区间);
研究者关心乐观候选人的胜面,但不希望过低估计( ='greater'的单尾置信区间)。

教科书的常见说法比如——「已知乐观候选人的胜面不低于50%,检验是否高于50%,用( ='greater'的)单尾检验」。如果研究者想表述「95%的置信度下乐观候选人总体胜面不超过91%」,即使研究者已经知道乐观候选人胜面不低于50%,仍然应该用反方向的单尾置信区间( ='less')。注意到 的取值不影响置信区间的结果,只影响报告的值。 的方向即置信区间的开口方向。

可改进翻译的统计术语歧义

a sample: 一个样本(a case?) > 一组抽样
two sample t test: 两样本t检验(two cases ...?) > 两组样本t检验
sample size: 样本大小(case scale?) > 样本组容量
central tendency: 集中趋势(non-dispersion?) > 中心趋势
dispersion: 离散(discrete?)趋势 > 分散趋势
SD=standard deviation: 标准方差(..variance?) > 标准离差
df=degrees of freedom: 自由度(size of freedom?) > 自由维度(dimensions of freedom)

《结构方程模型及其应用》(侯, 温, & 成,2004)部分章节R代码

John FOX教授的sem包试写了这本教材的几个例子,结果都与LISREL8报告的Minimum Fit Function Chi-Square吻合。不过LISREL其它拟合指标用的是Normal Theory Weighted Least Squares Chi-Square?,所以看上去比Minimum Fit Function Chi-Square报告的结果要好那么一些些。LISREL历史上推的GFI/AGFI曾因为经常将差报好被批评,圈内朋友私下嘲笑这样LISREL就更好卖了,买软件的用户也高兴将差报好,只有读Paper的人上当。

目前只写了chap3_1..到Chap3_2_...,一共5(或6)个例子。尺有所短,寸有所长--sem包不会自动报告所有修正指数,不能做样本量不一样多的多组模型,对复杂的模型要写的代码太多。不过,在已经尝试的几个例子里,有一个是LISREL跑不出来但sem包能跑出结果的。目前sem包还没有达到结构方程众多商业软件的成熟水准,但R庞大的义工武器库已经使sem包至少已经在Missing Data Multiple Imputation、Bootstrapping等等应用上胜出一筹。所以例子中还附带了缺失数据一讲Multiple Impuation的R示范代码。

欢迎各位有兴趣作类似尝试的同学将结果email我, 可以陆续更新到下面的GPL版权代码集合中。

代码下载:lixiaoxu.googlepages.com (中大镜像)

[update] AMos, Mplus 与 SAS/STAT CALIS 缺省报告与使用的都是 Minimum Fit Function Chi-Square,可通过各种软件(Albright & Park, 2009)的结果对比查验。Normal Theory Weighted Least Squares Chi-Square并非总是比Minimum Fit Function Chi-Square报告更“好”的拟合结果(虽然常常如此)。Olsson, Foss, 和 Breivik (2004) 用模拟数据对比了二者,确证Minimum Fit Function Chi-Square计算得到的拟合指标在小样本之外的情形都比Normal Theory Weighted Least Squares Chi-Square的指标更适用。

R的sem包目前在迭代初值的计算上还做得不够好。我遇到的几个缺省初值下迭代不收敛案例,将参数设定合理范围的任意初值(比如TX,TY都设成0-1之间的正实数)之后都收敛了。

--

Albright, J. J., & Park., H. M. (2009). Confirmatory factor analysis using Amos, LISREL, Mplus, and SAS/STAT CALIS. The University Information Technology Services Center for Statistical and Mathematical Computing, Indiana University. Retrieved July 7, 2009, from http://www.indiana.edu/~statmath/stat/all/cfa/cfa.pdf.

Olsson, U. H., Foss, T., & Breivik, E. (2004). Two equivalent discrepancy functions for maximum likelihood estimation: Do their test statistics follow a non-central chi-square distribution under model misspecification? Sociological Methods Research, 32(4), 453-500.

[update]R中的sem包妙处之一是可在线实现结构方程应用界面。下面这个最粗陋的例子对应原书Chap3_1_4_CFA_MB.LS8的结果。
--荣耀属于sem package的作者Rweb的作者、以及服务器运算资源的提供者。

##Input Correlation Matrix
R.DHP<-matrix(0,ncol=17,nrow=17);
R.DHP[col(R.DHP) >= row(R.DHP)] <- c(
1,
.34,1,
.38,.35,1,
.02,.03,.04,1,
.15,.19,.14,.02,1,
.17,.15,.20,.01,.42,1,
.20,.13,.12,.00,.40,.21,1,
.32,.32,.21,.03,.10,.10,.07,1,
.10,.17,.12,.02,.15,.18,.23,.13,1,
.14,.16,.15,.03,.14,.19,.18,.18,.37,1,
.14,.15,.19,.01,.18,.30,.13,.08,.38,.38,1,
.18,.16,.24,.02,.14,.21,.21,.22,.06,.23,.18,1,
.19,.20,.15,.01,.14,.24,.09,.24,.15,.21,.21,.45,1,
.18,.21,.18,.03,.25,.18,.18,.18,.22,.12,.24,.28,.35,1,
.08,.18,.16,.01,.22,.20,.22,.12,.12,.16,.21,.25,.20,.26,1,
.12,.16,.25,.02,.15,.12,.20,.14,.17,.20,.14,.20,.15,.20,.50,1,
.20,.16,.18,.04,.25,.14,.21,.17,.21,.21,.23,.15,.21,.22,.29,.41,1
);
R.DHP<-t(R.DHP);
colnames(R.DHP)<-rownames(R.DHP)<-paste('X',1:17,sep='');
print('Inputted Correlation Matrix');
print(R.DHP);
##
##
##Input Model Specification of Chap3_1_4_CFA_MB.LS8
require(sem);
model.B <- matrix(ncol=3,byrow=TRUE,data=c(
'X1 <-> X1' , 'TD1_1'  , NA  ,
'X2 <-> X2' , 'TD2_2'  , NA  ,
'X3 <-> X3' , 'TD3_3'  , NA  ,
'X5 <-> X5' , 'TD5_5'  , NA  ,
'X6 <-> X6' , 'TD6_6'  , NA  ,
'X7 <-> X7' , 'TD7_7'  , NA  ,
'X8 <-> X8' , 'TD8_8'  , NA  ,
'X9 <-> X9' , 'TD9_9'  , NA  ,
'X10<-> X10', 'TD10_10', NA  ,
'X11<-> X11', 'TD11_11', NA  ,
'X12<-> X12', 'TD12_12', NA  ,
'X13<-> X13', 'TD13_13', NA  ,
'X14<-> X14', 'TD14_14', NA  ,
'X15<-> X15', 'TD15_15', NA  ,
'X16<-> X16', 'TD16_16', NA  ,
'X17<-> X17', 'TD17_17', NA  ,
'xi1<-> xi1', NA       , '1' ,
'xi2<-> xi2', NA       , '1' ,
'xi3<-> xi3', NA       , '1' ,
'xi4<-> xi4', NA       , '1' ,
'xi5<-> xi5', NA       , '1' ,
'xi1<-> xi2', 'PH12'   , NA  ,
'xi1<-> xi3', 'PH13'   , NA  ,
'xi1<-> xi4', 'PH14'   , NA  ,
'xi1<-> xi5', 'PH15'   , NA  ,
'xi2<-> xi3', 'PH23'   , NA  ,
'xi2<-> xi4', 'PH24'   , NA  ,
'xi2<-> xi5', 'PH25'   , NA  ,
'xi3<-> xi4', 'PH34'   , NA  ,
'xi3<-> xi5', 'PH35'   , NA  ,
'xi4<-> xi5', 'PH45'   , NA  ,
'X1 <- xi1' , 'LX1_1'  , NA  ,
'X2 <- xi1' , 'LX2_1'  , NA  ,
'X3 <- xi1' , 'LX3_1'  , NA  ,
'X5 <- xi2' , 'LX5_2'  , NA  ,
'X6 <- xi2' , 'LX6_2'  , NA  ,
'X7 <- xi2' , 'LX7_2'  , NA  ,
'X8 <- xi1' , 'LX8_1'  , NA  ,
'X9 <- xi3' , 'LX9_3'  , NA  ,
'X10<- xi3' , 'LX10_3' , NA  ,
'X11<- xi3' , 'LX11_3' , NA  ,
'X12<- xi4' , 'LX12_4' , NA  ,
'X13<- xi4' , 'LX13_4' , NA  ,
'X14<- xi4' , 'LX14_4' , NA  ,
'X15<- xi5' , 'LX15_5' , NA  ,
'X16<- xi5' , 'LX16_5' , NA  ,
'X17<- xi5' , 'LX17_5' , NA  )
);
class(model.B)<-'mod';
##
##
N=350;##sample size;
##R.DHP[-4,-4] excludes X4
## Result
(summary(sem.B<-sem(model.B, R.DHP[-4,-4], N)));
## Residuals
(round(residuals(sem.B),3));
#####################
boxplot.matrix = function(M,ylim=c(-1,1)) {
  M = as.matrix(M);
  boxplot(c(M[row(M)>col(M)]),at=1,xlab='',ylab='',ylim=ylim);
  points(rep(1,length(c(M[row(M)>col(M)]))),c(M[row(M)>col(M)]),pch='-',col='red');
  stem(c(M[row(M)>col(M)]));
  boxplot.stats(c(M[row(M)>col(M)]));
}
####################
boxplot(residuals(sem.B));

Paper for 1st Chinese useR! Conference: Web Powered by R, or R Powered by Web

欢迎在本部的同学明天上午到现场看李崇亮同学演示,地点见会议主页

论文下载(Googlepages, 中文大学镜像)
RWebFriend for WordPress 在线示例(yo2.cn上的示例,  奇想录上的临时示例)

Google Presentation 在线演示

[update2009.07.11]文中MediaWiki与R集成的实验平台已不再开放编辑权限,原例转到另一个平台上(界面是西班牙语,找不到英语界面的平台)。希望能有帮手提供linux服务器自建一个平台。

R: str(…) 与 getS3method(…,…)

感谢R专家XIE Yihui同学在线答疑

me: 请教两个R的技术:1.R中有没有对象浏览器之类的工具?一举看完一个对象的子子孙孙 2.怎么看深入的源代码> prcomp
function (x, ...)
UseMethod("prcomp")
<environment: namespace:stats>

Yihui: 1. str()是很常用的一个函数,它可以充分查看对象的子子孙孙 2. 很多函数要么是S3 method,要么是调用C code,所以一般不能直接看源代码

S3 method可以用getS3method()去查看,比如prcomp就是S3方法,那么可以看它的default方法是什么:

> getS3method('prcomp','default')
function (x, retx = TRUE, center = TRUE, scale. = FALSE, tol = NULL,
...)
{
x <- as.matrix(x)
x <- scale(x, center = center, scale = scale.)
cen <- attr(x, "scaled:center")
sc <- attr(x, "scaled:scale")
if (any(sc == 0))
stop("cannot rescale a constant/zero column to unit variance")
s <- svd(x, nu = 0)
s$d <- s$d/sqrt(max(1, nrow(x) - 1))
if (!is.null(tol)) {
rank <- sum(s$d > (s$d[1L] * tol))
if (rank < ncol(x)) {
s$v <- s$v[, 1L:rank, drop = FALSE]
s$d <- s$d[1L:rank]
}
}
dimnames(s$v) <- list(colnames(x), paste("PC", seq_len(ncol(s$v)),
sep = ""))
r <- list(sdev = s$d, rotation = s$v, center = if (is.null(cen)) FALSE else cen,
scale = if (is.null(sc)) FALSE else sc)
if (retx)
r$x <- x %*% s$v
class(r) <- "prcomp"
r
}
<environment: namespace:stats>

但所有的源代码都可以从R的源代码包中看到,Windows下经过编译了,可能有一些看不到了

me: 多谢,节约俺好多搜索时间

Yihui: 嗯,我也是花了很长时间才明白S3 method的意思,呵呵

me: 如果要看biplot.prcomp呢?

有help没有源代码的提示

Yihui: help会告诉你biplot也是generic function,可以应用在prcomp这种class上,所以:

> getS3method('biplot','prcomp')
function (x, choices = 1:2, scale = 1, pc.biplot = FALSE, ...)
{
if (length(choices) != 2)
stop("length of choices must be 2")
if (!length(scores <- x$x))
stop(gettextf("object '%s' has no scores", deparse(substitute(x))),
domain = NA)
if (is.complex(scores))
stop("biplots are not defined for complex PCA")
lam <- x$sdev[choices]
n <- NROW(scores)
lam <- lam * sqrt(n)
if (scale < 0 || scale > 1)
warning("'scale' is outside [0, 1]")
if (scale != 0)
lam <- lam^scale
else lam <- 1
if (pc.biplot)
lam <- lam/sqrt(n)
biplot.default(t(t(scores[, choices])/lam), t(t(x$rotation[,
choices]) * lam), ...)
invisible()
}
<environment: namespace:stats>

这个代码里面你会看到其实是用biplot.default,所以你要继续看default的是什么代码


[二度更新并推荐]愉快地发现SciTE和LyX在WinXP下都支持中文

愉快地发现我在WinXP上最常用的编辑工具SciTE(当前版本1.75) 和 LyX(当前版本1.5.3) 都支持unicode(也就是说,支持中文)。之前不了解,只因为缺省设置不支持中文。需要手工操作修改设置。

SciTE的设置是Options->Open Global Options File,编辑SciTEGlobal.properties,找到如下段落

# Unicode
#code.page=65001
code.page=0
#character.set=204
# Required for Unicode to work on GTK+:
#LC_CTYPE=en_US.UTF-8
#output.code.page=65001

修改为

# Unicode
code.page=65001
#code.page=0
character.set=204
# Required for Unicode to work on GTK+:
LC_CTYPE=en_US.UTF-8
output.code.page=65001

保存。然后关闭再打开SciTE,就会发现不再出现中文被切一半的现象。如果编辑的文档格式不是utf-8而是ucs-2 ,还可以在File->Encoding 里临时选。

[update] 除了utf-8, SciTE 还支持国内更常用的GBK码,设置如下:

code.page=936
output.code.page=936
character.set=134

此外,我还推荐把SciTEGlobal.properties文件中的line.margin.visible=1 和 wrap=1 两处的注释#号去掉,效果是缺省显示行号,并使超长的行折行显示。SciTE的优点太多了--开源免费;轻巧,启动快;支持Ctrl+鼠标中轮滚动无级缩放;支持Ctrl+回车 前文已出现过的拼写自动补齐选项;支持Alt键方形选段;...

LyX(版本>=1.5.1)在winXP已经可以在.lyx文件正文和公式框中录入中文。麻烦的是输出中文的pdf。[UPDATED update]LyX的最新版本(1.6.2)捆绑MikTeX的安装包已经对中文(unicode)支持得很好了。感谢楼下joomlagate先生email给我的情报:http://cohomo.blogbus.com/logs/31361739.html 的后半篇介绍了通过XeTeX输出pdf的简单设置。我今天试了一下,效果非常理想。

[update]公式框中的中文只需要再ctrl-M一次即可。例如,\frac{\mbox{分子}}{\mbox{分母}}可以输出,而\frac{分子}{分母}不行。

新版本LyX已经引入了文档版本控制,相当于word中的revision功能,有待深入试用。目前LyX仍不[update]已经支持Ctrl+鼠标中轮滚动无级缩放,如果公式显得太小,需要在菜单设置中修改显示缩放比例:Tools->Preferences->Look and feel->Screen fonts->Zoom %。这可能是比较容易在后续版本中实现的功能

相关网址:

SciTE主页 http://www.scintilla.org/SciTE.html

LyX主页 http://lyx.org/

南开MiKTeX中文插件 http://miktex.math.nankai.edu.cn/

LyX中设置XeTeX中文支持的介绍: http://cohomo.blogbus.com/logs/31361739.html

我为Wordpress / WordPress MU 系列平台制作的支持暗背景LaTeX小插件 http://lixiaoxu.lxxm.com/latex_math_cgi

自由度的几何:对截距项投影残差向量的长度平方

这是《相关系数的几何:对截距投影的残差向量之间交角余弦》示意图,恰好可以用于解释为什么满足的分布dfn-1而不是n

其中n维空间中的标准正态随机向量。那么,容易知道有。这个表达式就是向量长度的平方。我们已经知道,就是在截距向量(日晷指针)上的投影。自然,就是对截距项投影残差向量,也就是在日晷盘上的投影。

日晷所处空间的n是3。如果我们对抽样许多次,就会看到三维空间中各个方向对称的标准正态分布散点图。这些散点图在日晷盘上的投影就是二维空间标准正态分布散点图。日晷盘中这些点对应向量的长度平方自然是的抽样。