SEM简单介绍,以下资料来源
因果关系:SEM一般用于建立因果关系模型,但是本身却并不能阐明模型的因果关系。
一般应用于:测量错误、错漏的数据、中介模型(mediation model)、差异分析。
历史:SEM 包括了 回归分析,路径分析(wright, 1921),验证性因子分析(confirmatory factor analysis)(Joreskog, 1969).
SEM也被称为 协方差结构模型(covariance structure modelling),协方差结构分析和因果模型。
因果关系:
究竟哪一个是“真的”? 在被假设的因果变量中其实有一个完整的因果链。
举一个简单的例子: 吃糖果导致蛀牙。这里涉及2个变量,“吃糖果”和“蛀牙”,前者是因,后者是果。 如果上一个因果关系成立,那将会形成一个因果机制,也许会出现这样的结构:
3. 这时还有可能出现更多的潜在变量:
这里我又举另外一个例子,回归模型
在这里,回归模型并不能很好的描述出因果次序,而且也不能轻易的识别因果次序或者未测量的因子。这也是为什么在国外学术界SEM如此流行的原因。
我们在举另外一个例子“路径分析”
路径分析能让我们用于条件模型(conditional relationships),上图中的模型是一种调解型模型或者中介模型,在这里Z 是作为一个中介调节者同时调节X和Y这两个变量的关系。
在这里我们总结一下:
回归分析简单的说就是:X真的影响Y 吗?
路径分析:为什么/如何 X 会影响Y? 是通过其他潜在变量Z 来达到的吗?例子:刷牙(X)减少蛀牙(Y)通过减少细菌的方法(Z)。------测量和测试中介变量(例如上图中的Z变量)可以帮助评估因果假设。
在这里要提一下因素模型(factor model)
在这个模型当中,各个变量有可能由于受到未被观察到的变量所影响,变得相互有内在的联系,一般来说那些变量都很复杂、混乱,而且很多变量是不能直接被观察到的。
举个例子:“保龄球俱乐部的会员卡”和“本地报纸阅读”,是被观察到的变量,而“社会资产”则是未被观察到的变量。另一个例子:“房屋立法”和“异族通婚”是被观察到的变量,而“种族偏见”是未被观察到的变量。
相互关系并不完全由被观察到的变量的因果关系所导致,而是由于那些潜在的变量而导致。
这些被观察到变量(y1--y4)也有可能由一个潜在的变量(F)所影响。
(1)Posix标准中有有名信号灯和无名信号灯之分,对于有名信号灯,可以用sem_open来创建,其prototype是:sem_t *sem_open(const char *name, int oflag)//打开已有的信号灯
sem_t *sem_open(const char *name, int oflag, mode_t mode, unsigned value)//一般是创建信号灯。
期中name是信号灯的名字, oflag是0, O_CREAT 或者 O_CREAT | O_EXCL, 如果指定O_CREAT, 那么mode和value对应创建该信号的模式和初始值。 如果指定了O_EXCL, 而且该信号灯已经在系统中存在,那调用会出错返回SEM_FAILED常量。 对于Linux内核来说,有名信号灯是很晚才加入内核中的,创建或是打开有名信号时候,应该指定”/semname“名字,对应的信号灯创建在/dev/shm目录下,名字是/dev/shm/sem.semname. BTW, 用gcc/g++编译实用信号灯功能的程序时候,应该引用librt库,(e.g., g++ -lrt sem.cpp). 关闭已打开的信号灯,用sem_close(sem_t *sem). 关闭信号灯并不意味着系统会删除它,要删除一个信号灯,需要调用sem_unlink(sem_t *sem)。 有名信号灯一般是为了进程之间同步实用的。 无名信号灯,一般是为一个进程内的不同线程之间同步使用的。 创建无名信号灯的方法如下:
sem_t sem
sem_init(&sem, int shared, unsigned int value)//初始化信号灯。
......
sem_destroy(&sem)//清除信号灯。
(2)信号灯的使用和状态。
信号灯一般用来描述不同线程所共享的公共资源的数量,每一个信号灯都有一个叫做信号量的非负整数与之相连;信号量一般代表公共资源的数目,比如空闲列表中的缓冲区数目,视频中读入帧的数目,等等。对于一个线程可以用sem_wait, sem_post函数来改变一个信号灯的信号量。
sem_wait(sem_t &sem)
sem_wait的语义如下:
{
while(信号量==0)
等待; //此处线程被挂起,等待其他线程调用sem_post唤醒之。
信号量减1;
}
注意:测试信号量是否为零,和减一的操作是原子的,也就是说期间不会发生线程切换。
与sem_wait对应的调用是sem_post,语义如下:
{
信号量加1;
唤醒等待该信号量的线程;//调用sem_wait并等待的线程。
}
该操作也是原子的。
信号灯的状态可以用sem_getvalue来查看。一般来说sem_wait和sem_post的调用不必在同一个线程内成对出现(象mutex那样,lock/unlock要配对出现)。 一般的情形是这样的,一个线程等待资源可用,调用sem_wait, 另外一个线程生成资源,然后调用sem_post,唤醒等待该资源的线程。因为信号灯所描述的是线程间公共资源,使用的时候一般和mutex一起使用,mutex保证访问公共资源的线程排他性,信号灯表示资源的可用性。
怎样做SEM?做sem首先第一点,也是最基础的一点,网页设计要符合营销,至少要有营销的意识包含在里面。这样设计出来的网页才能为网站添砖加瓦,设计出来的网站才能为企业带来更多的流量,带来更多的转化率。
【1】作为SEMer,应注重搜索引擎营销策略和方法,要有营销意识。有个很有意思的现象,东边COPY一下,西边再来一下,可能北边的也不错,将“拿来主义”进行到底,也就叫作网站运营了。更有甚者,前面抄袭完毕,又看着新鲜的了,还是整个再换掉好了。折腾来折腾去的,没个方向,真正受罪的还是网页设计师。我想,可能这样的“SEMer”自己也搞不懂到底想要什么吧?
【2】网页设计人员自身能力必须国强。如果一个网页设计人员的能力不足,这样就比较麻烦了,毕竟水平有限,真想要TA设计出一个“有盼头”的网站,可谓是比登天还难了。当然,如果有足够的耐心,也是可以慢慢培养的,只是时间上是否允许呢?从长远来看,还是建议SEM团队吸收优秀的网页设计师进来,从本质上改变这种现象,这对团队的促进和成长都是大有益处的。
【3】SEMer和网页设计师的沟通问题。假设一个很优秀的网站策划方案,同样是交给最出色的网页设计师来制作,理论上来说效果应该不会太差。事实上,如果设计师闷头苦干,SEMer也分身乏术,那么是很难达到理想设计效果的。只有SEMer时时跟踪设计师进度,发现问题,解决问题,才是明智之举。切忌不要等设计完工,再挑毛病,可能会浪费更多的时间。
【4】用户体验设计欠佳。举个例子,苹果的产品,不论是Mac、iPhone还是iPad,其销量都是一个惊人的数字。这和苹果一贯注重细节,倾力打造用户体验是分不开的。小拼在“Apple中国——用户体验设计苹果风暴”一文中也对苹果官网的用户体验设计给予了高度的评价和肯定。相较之,现在很多SEMer忽视了这一点,只注重网站的美观性,对用户体验方面做的工作几乎为0。
【5】设计效果缺乏创新意识。创新永远是颇具争议的关键词。对于新生的、不可预见的遐想事物,人们总是保持缄默态度。究竟什么是创新?小拼认为,一切有利于用户体验,可以提高网站转化率的营销思路,都可谓是创新,创新往往体现在细节上。拿网易新闻阅读来说,当你任意选中一段文字时,会出现一个“我来挑错”功能,小拼认为就很有新意,这是同类门户网站中所没有的。小小的细节,可能正在悄悄改变着一切,网页设计也是如此。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)