當前位置:首頁 » 操作系統 » rd演算法分析

rd演算法分析

發布時間: 2022-04-14 14:30:55

㈠ 請說明RR、OR、AR、AR%的計算方法以及意義。

相對危險度(relative risk,RR)。指暴露於某因素發生某事件的風險,即A/(A+B),除以未暴露人群發生的該事件的風險,即C/(C+D),所得的比值,即RR=[A/(A+B)]/[C/(C+D)],RR適用於隊列研究或隨機對照試驗。回顧性研究中無法計算發病率等,故無法計算RR,此時可以用OR 代替RR.
AR又叫特異危險度、率差(ratedifference, RD)和超額危險度(excessrisk),是暴露組發病率與對照組發病率相差的絕對值,它表示危險特異地歸因於暴露因素的程度。相對危險度指暴露組發病率與非暴露組的發病率之比,它反映了暴露與疾病的關聯強度,說明暴露使個體發病的危險比不暴露高多少倍,或者說暴露組的發病危險是非暴露組的多少倍。暴露對疾病的病因學意義大。
AR%歸因危險度百分比:又稱病因分值EF;是指暴露人群中發病或死亡歸因於該暴露的部分佔全部發病或死亡的百分比。AR%=(Ie-Io)/ Ie
=(RR-1)/RR
PAR人群歸因危險度:指總人群發病率中歸因於該暴露的部分。PAR=It-Io,It為全人群發病率Io為非暴露組發病率;
PAR%人群歸因危險度百分比也稱人群病因分值,指PAR占總人群發病率的百分比。=PAR/It=【Pe(RR-1)】/【(Pe(RR-1))+1】

㈡ 常用的排序演算法特點和邏輯數據模型特點

常用的排序演算法有插入排序,希爾排序,冒泡排序,快速排序,歸並排序,堆排序還有基數排序。
排序演算法一般考慮的就是兩個方面,即時間復雜度和空間復雜度。
其中插入排序,冒泡排序是簡單排序,排序的平均時間復雜度是O(n^2), 最壞的情況是O(n^2),輔助存儲空間是O(1)。
快速排序的平均時間復雜度是O(nlogn), 最壞的情況是O(n^2), 輔助存儲空間是O(logn)
歸並排序的平均時間復雜度是O(nlogn), 最壞的情況是O(nlogn), 輔助存儲空間是O(n)
堆排序平均時間復雜度是O(nlogn), 最壞的情況是O(nlogn), 輔助存儲空間是O(1)
基數排序平均時間復雜度是O(d(n+rd)), 最壞的情況是O(d(n+rd)), 輔助存儲空間是O(rd),其中d關鍵字的個數,rd是關鍵字的取值的個數。

從平均性能上來而言,快速排序最佳,其所需的時間最省,但快排在最壞的情況下的時間性能不如堆排序和歸並排序。而後者相比的結果是,在n較大的時候,歸並排序需要的時間比堆排序省,但它需要的輔助存儲空間比較多。

從方法的穩定性來比較,基數排序是穩定的內排序,所有時間復雜度為O(n^2)的簡單排序都是穩定的。然而,快速排序,歸並排序,堆排序等時間性能較好的排序方法都是不穩定的。

具體每個排序的思想,樓主可以網路一下,網路都有相應的詞條。

㈢ 用演算法實現:單鏈表和順序表刪除。刪除順序表中值相同的多餘結點

第8章排序(演算法設計)習題練習答案
作者: 來源: http://www.csai.cn 2006年9月4日

13. 將哨兵放在R[n]中,被排序的記錄放在R[0..n-1]中,重寫直接插入排序演算法。
解:
重寫的演算法如下:
void InsertSort(SeqList R)
{//對順序表中記錄R[0..n-1]按遞增序進行插入排序
int i,j;
for(i=n-2;i>=0;i--) //在有序區中依次插入R[n-2]..R[0]
if(R[i].key>R[i+1].key) //若不是這樣則R[i]原位不動
{
R[n]=R[i];j=i+1; //R[n]是哨兵
do{ //從左向右在有序區中查找插入位置
R[j-1]=R[j]; //將關鍵字小於R[i].key的記錄向右移
j++;
}while(R[j].key<R[n].key]);
R[j-1]=R[n]; //將R[i]插入到正確位置上
}//endif
}//InsertSort.

14.以單鏈表作為存儲結構實現直接插入排序演算法。
解:
#define int KeyType //定義KeyType 為int型
typedef struct node{
KeyType key; //關鍵字域
OtherInfoType info; //其它信息域,
struct node * next; //鏈表中指針域
}RecNode; //記錄結點類型
typedef RecNode * LinkList ; //單鏈表用LinkList表示

void InsertSort(LinkList head)
{//鏈式存儲結構的直接插入排序演算法,head是帶頭結點的單鏈表
RecNode *p,*q,*s;
if ((head->next)&&(head->next->next))//當表中含有結點數大於1
{
p=head->next->next;//p指向第二個節點
head->next=NULL;
q=head;//指向插入位置的前驅節點
while(p)&&(q->next)&&(p->key<q->next->key)
q=q->next;
if (p)
{s=p;p=p->next;// 將要插入結點摘下
s->next=q->next;//插入合適位置:q結點後
q->next=s;
}
}
}

15.設計一演算法,使得在盡可能少的時間內重排數組,將所有取負值的關鍵字放在所有取非負值的關鍵字之前。請分析演算法的時間復雜度。
解:
因為只需將負數關鍵字排在前面而無需進行精確排列順序,因此本演算法採用兩端掃描的方法,就象快速排序採用的方法一樣,左邊掃描到正數時停止,開始掃描右邊,遇到負數時與左邊的當前記錄交換,如此交替進行,一趟下來就可以完成排序。

void ReSort(SeqList R)
{//重排數組,使負值關鍵字在前
int i=1,j=n; //數組存放在R[1..n]中
while (i<j) //i<j表示尚未掃描完畢
{ while(i<j&&R[i].key<0) //遇到負數則繼續掃描
i++;
R[0]=R[i]; //R[0]為輔助空間
while(i<j&&R[j].key>=0)// 遇到正數則繼續向左掃描
j--;
R[i++]=R[j];R[j--]=R[0];//交換當前兩個元素並移動指針
}//endwhile
}//ReSort

本演算法在任何情況下的比較次數均為n(每個元素和0)相比,交換次數少於n/2,總的來說,時間復雜度為O(n).

*16.寫一個雙向冒泡排序的演算法,即在排序過程中交替改變掃描方向。
解:
演算法如下:
void BubbleSort(SeqList R)
{//R[1..n]是待排序文件,雙向掃描冒泡排序
int i,j,k;
Boolean exchange; //交換標記
i=n;j=1;
exchange=TRUE;
while (i>j)&&(exchange)
{k=i-1;exchange=FALSE;
while (k>=j)//由下往上掃描
{if (r[k]>r[k+1])
{r[0]=r[k];r[k]=r[k+1];r[k+1]=r[k];exchange=TRUE;//交換
}//endif
k--;
}//endwhile
if (exchange)
{exchange=FALSE;
j++;k=j+1;
while(k<=i)//由上往下掃描
{if (r[k]<r[k-1])
{r[0]=r[k];r[k]=r[k-1];r[k-1]=r[k];exchange=TRUE;//交換
}//endif
k++;
}endwhile
i--;
}//endif
}endwhile
}//endsort

17.下面是一個自上往下掃描的冒泡排序的偽代碼演算法,它採用lastExchange 來記錄每趟掃描中進行交換的最後一個元素的位置,並以它作為下一趟排序循環終止的控制值。請仿照它寫一個自下往上掃描的冒泡排序演算法。
void BubbleSort(int A[],int n)
//不妨設A[0..n-1]是整型向量
int lastExchange,j,i=n-1;
while (i>0)
lastExchange=0;
for(j=0;j<i;j++)//從上往下掃描A[0..i]
if(A[j+1]<A[j]){
交換A[j]和A[j+1];
lastExchange=j;
}
i=lastExchange;//將i置為最後交換的位置
}//endwhile
}//BubbleSort

解:演算法如下:
void BubbleSort(int A[],int n)
//不妨設A[0..n-1]是整型向量
int lastExchange,j,i=0;
while (i<n) //這一條很重要,如不改為這樣,演算法將無限循環下去
lastExchange=n;
for(j=n-1;j>i;j--)//從下往上掃描A[0..i]
if(A[j-1]<A[j]){
交換A[j]和A[j-1];
lastExchange=j;
}
i=lastExchange;//將i置為最後交換的位置
}//endwhile
}//BubbleSort

18.改寫快速排序演算法,要求採用三者取中的方式選擇劃分的基準記錄;若當前被排序的區間長度小於等於3時,無須劃分而是直接採用直接插入方式對其排序。
解:
改寫後的演算法如下:
void QuickSort(SeqList R,int low ,int high)
{//對R[low..high]快速排序
int pivotpos;
if(high-low<=2)//若當前區內元素少於3個
{//則進行直接插入排序
InsertSort(R,low,high);
}
else
{
pivotpos=midPartion(R,low,high);
QuickSort(R,low,pivotpos-1);
QuickSort(R,pivotpos+1,high);
}
}//QuickSort

int midPartion(SeqList R,int i, int j)
{//三者取中規則定基準
if(R[(i+j)/2].key>R[i].key)
{ 交換R[(i+j)/2]和R[i];}
if(R[i].key>R[j].key)
{ 交換R[i]和R[j];}
if(R[i].key)<R[(i+j)/2].key)
{ 交換R[i]和R[(i+j)/2];}
//以上三個if語句就使區間的第一個記錄的key值為三個key的中間值
return Partion(R,i,j);//這樣我們就可以仍使用原來的劃分演算法了
}

19.對給定的j(1≤j≤n ),要求在無序的記錄區R[1..n]中找到按關鍵字自小到大排在第j個位置上的記錄(即在無序集合中找到第j個最小元),試利用快速排序的劃分思想編寫演算法實現上述的查找操作。
答:
int QuickSort(SeqList R,int j,int low,int high)
{ //對R[low..high]快速排序
int pivotpos; //劃分後的基準記錄的位置
if(low<high){//僅當區間長度大於1時才須排序
pivotpos=Partition(R,low,high); //對R[low..high]做劃分
if (pivotpos==j) return r[j];
else if (pivotpos>j) return(R,j,low,pivotpos-1);
else return quicksort(R,j,pivotpos+1,high);
}
} //QuickSort

20.以單鏈表為存儲結構,寫一個直接選擇排序演算法。
答:
#define int KeyType //定義KeyType 為int型
typedef struct node{
KeyType key; //關鍵字域
OtherInfoType info; //其它信息域,
struct node * next; //鏈表中指針域
}RecNode; //記錄結點類型

typedef RecNode * LinkList ; //單鏈表用LinkList表示

void selectsort(linklist head)
{RecNode *p,*q,*s;
if(head->next)&&(head->next->next)
{p=head->next;//p指向當前已排好序最大元素的前趨
while (p->next)
{q=p->next;s=p;
while(q)
{if (q->key<s->key) s=q;
q=q->next;
}//endwhile
交換s結點和p結點的數據;
p=p->next;
}//endwhile
}//endif
}//endsort

21.寫一個heapInsert(R,key)演算法,將關鍵字插入到堆R中去,並保證插入R後仍是堆。提示:應為堆R增加一個長度屬性描述(即改寫本章定義的SeqList類型描述,使其含有長度域);將key先插入R中已有元素的尾部(即原堆的長度加1的位置,插入後堆的長度加1),然後從下往上調整,使插入的關鍵字滿足性質。請分析演算法的時間。
答:
#define n 100//假設文件的最長可能長度
typedef int KeyType; //定義KeyType 為int型
typedef struct node{
KeyType key; //關鍵字域
OtherInfoType info; //其它信息域,
}Rectype; //記錄結點類型

typedef struct{
Rectype data[n] ; //存放記錄的空間
int length;//文件長度
}seqlist;

void heapInsert(seqlist *R,KeyType key)
{//原有堆元素在R->data[1]~R->data[R->length],
//將新的關鍵字key插入到R->data[R->length+1]位置後,
//以R->data[0]為輔助空間,調整為堆(此處設為大根堆)
int large;//large指向調整結點的左右孩子中關鍵字較大者
int low,high;//low和high分別指向待調整堆的第一個和最後一個記錄
int i;
R->length++;R->data[R->length].key=key;//插入新的記錄
for(i=R->length/2;i>0;i--)//建堆
{
low=i;high=R->length;
R->data[0].key=R->data[low].key;//R->data[low]是當前調整的結點
for(large=2*low;large<=high;large*=2){
//若large>high,則表示R->data[low]是葉子,調整結束;
//否則令large指向R->data[low]的左孩子
if(large<high&&R->data[large].key<R->data[large+1].key)
large++;//若R->data[low]的右孩子存在
//且關鍵字大於左兄弟,則令large指向它
if (R->data[0].key<R->data[large].key)
{ R->data[low].key= R->data[large].key;
low=large;//令low指向新的調整結點
}
else break;//當前調整結點不小於其孩子結點的關鍵字,結束調整
}//endfor
R->data[low].key=R->data[0].key;//將被調整結點放入最終的位置上
}//end of for
}end of heapinsert

演算法分析:
設文件長度為n,則該演算法需進行n/2趟調整,總的時間復雜度與初建堆類似,最壞時間復雜度為O(nlgn),輔助空間為O(1).

22.寫一個建堆演算法:從空堆開始,依次讀入元素調用上題中堆插入演算法將其插入堆中。
答:
void BuildHeap(seqlist *R)
{
KeyType key;
R->length=0;//建一個空堆
scanf("%d",&key);//設MAXINT為不可能的關鍵字
while(key!=MAXINT)
{
heapInsert(R,key);
scanf("%d",&key);
}
}

23.寫一個堆刪除演算法:HeapDelete(R,i),將R[i]從堆中刪去,並分析演算法時間,提示:先將R[i]和堆中最後一個元素交換,並將堆長度減1,然後從位置i開始向下調整,使其滿足堆性質。
答:
void HeapDelete(seqlist *R,int i)
{//原有堆元素在R->data[1]~R->data[R->length],
//將R->data[i]刪除,即將R->data[R->length]放入R->data[i]中後,
//將R->length減1,再進行堆的調整,
//以R->data[0]為輔助空間,調整為堆(此處設為大根堆)
int large;//large指向調整結點的左右孩子中關鍵字較大者
int low,high;//low和high分別指向待調整堆的第一個和最後一個記錄
int j;
if (i>R->length)
Error("have no such node");
R->data[i].key=R->data[R->length].key;
R->length--;R->data[R->length].key=key;//插入新的記錄
for(j=i/2;j>0;j--)//建堆
{
low=j;high=R->length;
R->data[0].key=R->data[low].key;//R->data[low]是當前調整的結點
for(large=2*low;large<=high;large*=2){
//若large>high,則表示R->data[low]是葉子,調整結束;
//否則令large指向R->data[low]的左孩子
if(large<high&&R->data[large].key<R->data[large+1].key)
large++;//若R->data[low]的右孩子存在
//且關鍵字大於左兄弟,則令large指向它
if (R->data[0].key<R->data[large].key)
{ R->data[low].key= R->data[large].key;
low=large;//令low指向新的調整結點
}
else break;//當前調整結點不小於其孩子結點的關鍵字,結束調整
}//endfor
R->data[low].key=R->data[0].key;//將被調整結點放入最終的位置上
}//end of for
}end of HeapDelete

24.已知兩個單鏈表中的元素遞增有序,試寫一演算法將這兩個有序表歸並成一個遞增有序的單鏈表。演算法應利用原有的鏈表結點空間。
答:
typedef struct node{
KeyType key; //關鍵字域
OtherInfoType info; //其它信息域,
struct node * next; //鏈表中指針域
}RecNode; //記錄結點類型

typedef RecNode * LinkList ; //單鏈表用LinkList表示

void mergesort(LinkList la,LinkList lb,LinkList lc)
{RecNode *p,*q,*s,*r;
lc=la;
p=la;//p是la表掃描指針,指向待比較結點的前一位置
q=lb->next;//q是lb表掃描指針,指向比較的結點
while(p->next)&&(q)
if (p->next->key<=q->key)
p=p->next;
else {s=q;q=q->next;
s->next=p->next;p->next=s;//將s結點插入到p結點後
p=s;}
if (!p->next) p->next=q;
free(lb);
}

25.設向量A[0..n-1]中存有n個互不相同的整數,且每個元素的值均在0到n-1之間。試寫一時間為O(n)的演算法將向量A排序,結果可輸出到另一個向量B[0..n-1]中。
答:
sort(int *A,int *B)
{//將向量A排序後送入B向量中
int i;
for(i=0;i<=n-1;i++)
B[A[i]]=A[i];
}

*26.寫一組英文單詞按字典序排列的基數排序演算法。設單詞均由大寫字母構成,最長的單詞有d個字母。提示:所有長度不足d個字母的單詞都在尾處補足空格,排序時設置27個箱子,分別與空格,A,B...Z對應。
答:
#define KeySize 10 //設關鍵字位數d=10
#define Radix 27 //基數rd為27
typedef RecType DataType;//將隊列中結點數據類型改為RecType類型
typedef struct node{
char key[KeySize]; //關鍵字域
OtherInfoType info; //其它信息域,
}RecType; //記錄結點類型
typedef RecType seqlist[n+1];

void RadixSort(seqlist R)
{
LinkQueue B[Radix];
int i;
for(i=0;i<Radix;i++)//箱子置空
InitQueue(&B[i]);
for(i=KeySize-1;i>=0;i--){//從低位到高位做d趟箱排序
Distribute(R,B,i);//第KeySize-i趟分配
Collect(R,B);//第KeySize-i趟收集
}
}

void Distribute(seqlist R,LinkQueue B[], int j)
{//按關鍵字的第j個分量進行分配,初始時箱子為空
int i;
j=KeySize-j; // 確定關鍵字從低位起的位置
for(i=0;i<n;i++) //依次掃描R[i],將其裝箱
if (R[i].key[j]-'A'>26)
EnQueue(&B[0],R[i]);//將第j位關鍵字位空格的記錄入第0個隊列
else EnQueue(&B[0],R[R[i].key[j]-'A'+1]);
}

void Collect(seqlist R,LinkQueue B[])
{
//依次將各非空箱子中的記錄收集起來,本過程結束,各箱子都變空
int i,j;
for (j=0;j<Radix;j++)
while(!QueueEmpty(&B[j]))
R[i++]=DeQueue(&B[j]);//將出隊記錄依次輸出到R[i]中
}

㈣ rd是什麼意思

rd abbr. DOS命令 : 刪除空的子目;注冊營養師(Registered Dietitian);鄉村免費郵遞。

短語片語:

1.Ginsenoside Rd 人參皂甙Rd;人參皂苷Rd;人參皂甙。

2.Side Rd 輔路;

3.Main Rd 幹道;地址;

4.Ordinary Rd 一般道路;一般門路;

5.rd millennium 第3千年。

(4)rd演算法分析擴展閱讀:

雙語例句:

1.By Colleen Hurley, RD, Certified Kids Nutrition Specialist The holidays are officially here, and many families celebrate the holiday season with food.

科爾林恩.赫爾利.RD,注冊兒童營養專家 節假日正式到來,許多家庭拿出食物慶祝這一節日。

2.They leaned against 4203-RD and worked through their rote of tender gestures: hand-holding, modest-mouthed kisses, a giddy lowering to the ground, me an awkward weight following them down.

他們倚靠在4203-RD上,一板一眼地做起那套溫柔把式:拉手、深淺有度的親吻、暈暈忽忽地往地上滑,我這個糟糕的重負則跟著他們倒地。

3.RD: We do not currently support SCA, but we definitely plan to.

RD:我們目前不會支持SCA,但是我們的確有這個計劃。

㈤ 雷達處理信號,以點目標成像為例,採用RD演算法,先用距離壓縮,然後距離校正,最後方位壓縮,各有何用

距離壓縮其實就是匹配濾波的過程,距離矯正就是距離對齊了,方位壓縮就是方位向匹配濾波,壓出目標的方位,對於點目標成像,可以不用距離矯正的

㈥ 加權平均資本成本計算方法

計算方法為每種資本的成本乘以占總資本的比重,然後將各種資本得出的數目加起來

WACC=(E/V)×Re+(D/V)×Rd×(1-Tc)

其中:

WACC=Weighted Average Cost of Capital(加權平均資本成本)

Re =股本成本

Rd =債務成本

E =公司股本的市場價值

D =公司債務的市場價值

V = E + D

E/V =股本占融資總額的百分比

D/V = 債務占融資總額的百分比

Tc = 企業稅率

(6)rd演算法分析擴展閱讀:

加權平均資本成本的評估方法

採用收益途徑評估公司價值時,評估師廣泛使用的有兩種方法——即權益法和投資資本法(有時候也叫直接法和間接法)。

權益法是通過折現公司的紅利或股權現金流來評估公司股權的價值,這個折現率應該是反映權益投資者所要求 的回報率。

而投資資本法主要是關注並評估出公司整體的價值,不像權益法只評估權益。投資資本法的評估結果就是所有權利要求者所要求的價值,包括債權人和股東。

此時要求權益的價值就只能是把公司整體價值減去債權的價值(所以被稱為間接法)。求取公司價值最普通的做法就是把公司所有投資者的現金流。

包括債權人 和股權投資者的現金流折現,而折現率則是加權平均資本成本——即權益成本和債務成本的加權平均值。

英文簡寫為WACC.所以,WACC是投資資本價值評估(間接)或公司權益價值評估(直接)的一個重要的計算參數。

加權平均資本成本法在個別項目評估中的應用

運用WACC 方法對個別項目價值進行評估時值得注意的地方就是要根據具體情況對個別項目的風險進行調整,因為資本加權平均成本是就企業總體而言的,一般用於公司整體資產價值的評估。

然而在現實當中,絕大部分企業進行的都是多角化經營,如一個生產型企業可能同時兼營商業或房地產,因而不同類型的投資項目就有著不同的風險。

如果簡單的將公司平均資本成本用於公司所有部門和所有投資項目的評估,顯然是不妥的。因此在運用WACC方法對個別風險項目進行價值評估時需要對加權平均資本成本進行調整。

對於不同風險的項目,要用不同的加權平均資本成本去衡量,為有關特定項目確定一個具體的接受標准。

根據公式rWACC= (S/B+S)×rs+(B/B+S)×rB×(1-TC)可以看出,要用加權平均資本成本法計算項目的資本成本,需要確定的因素有:

⑴權益融資比例:S/B+S;

⑵債務融資比例:B/B+S;

⑶稅後債務融資成本:rB×(1-TC);

⑷有杠桿(債務)下的權益資本成本rs。如果這四個要素分別確定了,即可用WACC法對採用混合融資的個別項目進行價值評估。

假設條件:

企業的經營風險可以用息稅前收益X的標准差來表示,並據此將企業分成不同的組。若不同企業的經營風險程度相同,則它們的風險等級也相同,因而應屬於同一組。

資本市場是完全的。其表現主要為第一,不存在交易費用;第二,對於任何投資者,無論是個人投資者還是機構投資者,其借款利率與貸款利率完全相同。

企業的負債屬於無風險型,且永久不變,其利率等於無風險的市場基準利率。企業所承擔的財務風險不隨籌資數量與結構的變動而變動,且不存在破產的可能性。

企業新的投資項目的風險與企業原有水平一致。即新項目的投入不會改變企業整體的經營風險水平。企業的息稅前收益X是個恆定的常量。

㈦ 偏最小二乘回歸

matlab裡面沒有直接調用的partial least squares(PLS).你可能要自己根據運算編啊.

不過你還有一個方法,你可以去下載一個叫chemometrics toolbox的工具裝在MATLAB的TOOLBOX.那個TOOLBOX有直接調用的PLS.
偏最小二乘法 最小二乘法是一種數學優化技術,它通過最小化誤差的平方和找到一組數據的最佳函數匹配。 用最簡的方法求得一些絕對不可知的真值,而令誤差平方之和為最小。 通常用於曲線擬合。很多其他的優化問題也可通過最小化能量或最大化熵用最小二乘形式表達。
偏最小二乘回歸≈多元線性回歸分析+典型相關分析+主成分分析
與傳統多元線性回歸模型相比,偏最小二乘回歸的特點是:(1)能夠在自變數存在嚴重多重相關性的條件下進行回歸建模;(2)允許在樣本點個數少於變數個數的條件下進行回歸建模;(3)偏最小二乘回歸在最終模型中將包含原有的所有自變數;(4)偏最小二乘回歸模型更易於辨識系統信息與雜訊(甚至一些非隨機性的雜訊);(5)在偏最小二乘回歸模型中,每一個自變數的回歸系數將更容易解釋。
在計算方差和協方差時,求和號前面的系數有兩種取法:當樣本點集合是隨機抽取得到時,應該取1/(n-1);如果不是隨機抽取的,這個系數可取1/n。
多重相關性的診斷
1 經驗式診斷方法
1、在自變數的簡單相關系數矩陣中,有某些自變數的相關系數值較大。
2、回歸系數的代數符號與專業知識或一般經驗相反;或者,它同該自變數與y的簡單相關系數符號相反。
3、對重要自變數的回歸系數進行t檢驗,其結果不顯著。
特別典型的是,當F檢驗能在高精度下通過,測定系數R2的值亦很大,但自變數的t檢驗卻全都不顯著,這時,多重相關性的可能性將很大。
4、如果增加(或刪除)一個變數,或者增加(或刪除)一個觀測值,回歸系數的估計值發生了很大的變化。
5、重要自變數的回歸系數置信區間明顯過大。
6、在自變數中,某一個自變數是另一部分自變數的完全或近似完全的線性組合。
7、對於一般的觀測數據,如果樣本點的個數過少,樣本數據中的多重相關性是經常存在的。
但是,採用經驗式方法診斷自變數系統中是否確實存在多重相關性,並不十分可靠,另一種較正規的方法是利用統計檢驗(回歸分析),檢查每一個自變數相對其它自變數是否存在線性關系。
2 方差膨脹因子
最常用的多重相關性的正規診斷方法是使用方差膨脹因子。自變數xj的方差膨脹因子記為(VIF)j,它的計算方法為
(4-5) (VIF)j =(1-R j2)-1
式中,R j2是以xj為因變數時對其它自變數回歸的復測定系數。
所有xj變數中最大的(VIF)j通常被用來作為測量多重相關性的指標。一般認為,如果最大的(VIF)j超過10,常常表示多重相關性將嚴重影響最小二乘的估計值。
(VIF)j被稱為方差膨脹因子的原因,是由於它還可以度量回歸系數的估計方差與自變數線性無關時相比,增加了多少。
不妨假設x1,x2,…,xp均是標准化變數。採用最小二乘法得到回歸系數向量B,它的精度是用它的方差來測量的。B的協方差矩陣為
Cov(B)= σ2 (X'X)-1
式中,σ2是誤差項方差。所以,對於回歸系數b j,有
Var(b j)= σ2cjj
cjj是(X'X)-1矩陣中第j個對角元素。可以證明,
cjj =(VIF)j
嶺回歸分析
1 嶺回歸估計量
嶺回歸分析是一種修正的最小二乘估計法,當自變數系統中存在多重相關性時,它可以提供一個比最小二乘法更為穩定的估計,並且回歸系數的標准差也比最小二乘估計的要小。
根據高斯——馬爾科夫定理,多重相關性並不影響最小二乘估計量的無偏性和最小方差性。但是,雖然最小二乘估計量在所有線性無偏估計量中是方差最小的,但是這個方差卻不一定小。於是可以找一個有偏估計量,這個估計量雖然有微小的偏差,但它的精度卻能夠大大高於無偏的估計量。
在應用嶺回歸分析時,它的計算大多從標准化數據出發。對於標准化變數,最小二乘的正規方程為
rXXb=ryX
式中,rXX是X的相關系數矩陣,ryX是y與所有自變數的相關系數向量。
嶺回歸估計量是通過在正規方程中引入有偏常數c(c≥0)而求得的。它的正規方程為+
(4-8) (rXX+ cI) bR=ryX
所以,在嶺回歸分析中,標准化回歸系數為
(4-9) bR =(rXX+ cI)-1 ryX
2 嶺回歸估計量的性質
(1)嶺回歸系數是一般最小二乘准則下回歸系數的線性組合,即
(4-10) bR =(I+ crXX-1)-1b
(2)記β是總體參數的理論值。當β≠0時,可以證明一定存在一個正數c0,使得當0< c< c0時,一致地有
(4-11) E|| bR -β||2≤ E|| b -β||2
(3)嶺回歸估計量的絕對值常比普通最小二乘估計量的絕對值小,即
(4-12) || bR ||<|| b ||
嶺回歸估計量的質量取決於偏倚系數c的選取。c的選取不宜過大,因為
E(bR)=(I+ crXX-1)-1 E (b)=(I+ crXX-1)-1β
關於偏倚系數c的選取尚沒有正規的決策准則,目前主要以嶺跡和方差膨脹因子為依據。嶺跡是指p-1個嶺回歸系數估計量對不同的c值所描繪的曲線(c值一般在0~1之間)。在通過檢查嶺跡和方差膨脹因子來選擇c值時,其判斷方法是選擇一個盡可能小的c值,在這個較小的c值上,嶺跡中的回歸系數已變得比較穩定,並且方差膨脹因子也變得足夠小。
從理論上,最佳的c值是存在的,它可以使估計量的偏差和方差的組合效應達到一個最佳水準。然而,困難卻在於c的最優值對不同的應用而有所不同,對其選擇還只能憑經驗判斷。
其他補救方法簡介
最常見的一種思路是設法去掉不太重要的相關性變數。由於變數間多重相關性的形式十分復雜,而且還缺乏十分可靠的檢驗方法,刪除部分多重相關變數的做法常導致增大模型的解釋誤差,將本應保留的系統信息舍棄,使得接受一個錯誤結論的可能和做出錯誤決策的風險都不斷增長。另一方面,在一些經濟模型中,從經濟理論上要求一些重要的解釋變數必須被包括在模型中,而這些變數又存在多重相關性。這時採用剔除部分相關變數的做法就不符合實際工作的要求。
另一種補救的辦法是增加樣本容量。然而,在實際工作中,由於時間、經費以及客觀條件的限制,增大樣本容量的方法常常是不可行的。
此外,還可以採用變數轉換的方式,來削弱多重相關性的嚴重性。一階差分回歸模型有可能減少多重相關性的嚴重性。然而,一階差分變換又帶來了一些其它問題。差分後的誤差項可能不滿足總體模型中關於誤差項不是序列相關的假定。事實上,在大部分情形下,在原來的誤差項是不自相關的條件下,一階差分所得到的誤差項將會是序列相關的。而且,由於差分方法損失了一個觀察值,這在小樣本的情況下是極不可取的。另外,一階差分方法在截面樣本中是不宜利用的。
1 主成分分析
主成分分析的計算結果必然受到重疊信息的影響。因此,當人為地採用一些無益的相關變數時,無論從方向上還是從數量上,都會扭曲客觀結論。在主成分分析之前,對變數系統的確定必須是慎之又慎的。
2 特異點的發現
第i個樣本點(樣本量為n)對第h主成分的貢獻率是
(5-32) CTR(i)=Fh2(i)/(nλh) (若遠超過1/n,為特異點)
3 典型相關分析
從某種意義上說,多元回歸分析、判別分析或對應分析等許多重要的數據分析方法,都可以歸結為典型相關分析的一種特例,同時它還是偏最小二乘回歸分析的理論基石。
典型相關分析,是從變數組X中提取一個典型成分F=Xa,再從變數組Y中提取一個成分G=Yb,在提取過程中,要求F與G的相關程度達到最大。
在典型相關分析中,採用下述原則尋優,即
max<F,G>=aX'Yb a'X'Xa=1, b'Y'Yb=1
其結果為,a是對應於矩陣V11-1 V12 V22-1 V21最大特徵值的特徵向量,而b是對應於矩陣V22-1 V21V11-1 V12最大特徵值的特徵向量,這兩個最大特徵值相同。其中,
V11=X'X,V12=X'Y,V22=Y'Y。
F與G之間存在著明顯的換算關系。
有時只有一個典型成分還不夠,還可以考慮第二個典型成分。
多因變數的偏最小二乘回歸模型
1 工作目標
偏最小二乘回歸分析的建模方法
設有q個因變數和p個自變數。為了研究因變數與自變數的統計關系,觀測了n個樣本點,由此構成了自變數與因變數的數據表X和Y。偏最小二乘回歸分別在X與Y中提取出t和u,要求:(1)t和u應盡可能大地攜帶它們各自數據表中的變異信息;(2)t和u的相關程度能夠達到最大。在第一個成分被提取後,偏最小二乘回歸分別實施X對t的回歸以及Y對t的回歸。如果回歸方程已經達到滿意的精度,則演算法終止;否則,將利用X被t解釋後的殘余信息以及Y被t解釋後的殘余信息進行第二輪的成分提取。如此往復,直到能達到一個較滿意的精度為止。若最終對X共提取了多個成分,偏最小二乘回歸將通過施行yk對X的這些成分的回歸,然後再表達成yk關於原自變數的回歸方程。
2 計算方法
首先將數據做標准化處理。X經標准化處理後的數據矩陣記為E0=( E01,…,E0p)n×p,Y的相應矩陣記為F0=( F01,…,F0q)n×q。
第一步 記t 1是E0的第一個成分,t 1= E0w1,w1是E0的第一個軸,它是一個單位向量,即|| w1||=1。
記u 1是F0的第一個成分,u 1= F0c1,c1是F0的第一個軸,並且|| c1||=1。
於是,要求解下列優化問題,即
(7-1)
記θ1= w1'E0'F0c1,即正是優化問題的目標函數值。
採用拉格朗日演算法,可得
(7-8) E0'F0F0'E0w1=θ12 w1
(7-9) F0'E0E0'F0c1=θ12 c1
所以,w1是對應於E0'F0F0'E0矩陣最大特徵值的單位特徵向量,而c1是對應於F0'E0E0'F0矩陣最大特徵值θ12的單位特徵向量。
求得軸w1和c1後,即可得到成分
t 1= E0w1
u 1= F0c1
然後,分別求E0和F0對t 1的回歸方程
(7-10) E0= t 1 p1'+ E1
(7-12) F0= t 1r1'+ F1
式中,回歸系數向量是
(7-13) p1= E0' t 1/|| t 1||2
(7-15) r1= F0' t 1/|| t 1||2
而E1和F1分別是兩個方程的殘差矩陣。
第二步 用殘差矩陣E1和F1取代E0和F0,然後,求第二個軸w2和c2以及第二個成分t2,u2,有
t 2= E1w2
u 2= F1c2
θ2=< t2, u2>= w2'E1'F1c2
w2是對應於E1'F1F1'E1矩陣最大特徵值的單位特徵向量,而c2是對應於F1'E1E1'F1矩陣最大特徵值θ22的單位特徵向量。計算回歸系數
p2= E1' t 2/|| t 2||2
r2= F1' t 2/|| t2||2
因此,有回歸方程
E1= t 2 p2'+ E2
F1= t 2r2'+ F2
如此計算下去,如果X的秩是A,則會有
(7-16) E0= t 1 p1'+…+t A pA'
(7-17) F0= t 1r1'+ …+t A rA'+ FA
由於t1,…,t A均可以表示成E01,…,E0p的線性組合,因此,式(7-17)還可以還原成yk*= F0k關於xj*= E0j的回歸方程形式,即
yk*=αk1 x1*+…+αkp xp*+ FAk, k=1,2,…,q
FAk是殘差矩陣FA的第k列。
3 交叉有效性
如果多一個成分而少一個樣本的預測誤差平方和(所有因變數和預測樣本相加)除以少一個成分的誤差平方和(所有的因變數和樣本相加)小於0.952,則多一個成分是值得的。
4 一種更簡潔的計算方法
用下述原則提取自變數中的成分t 1,是與原則式(7-1)的結果完全等價的,即
(7-24)
(1)求矩陣E0'F0F0'E0最大特徵值所對應的單位特徵向量w1,求成分t 1,得
t 1= E0w1
E1= E0-t 1 p1'
式中, p1= E0' t 1/|| t 1||2
(2)求矩陣E1'F0F0'E1最大特徵值所對應的單位特徵向量w2,求成分t2,得
t 2= E1w2
E2= E1-t 2 p2'
式中, p2= E1' t 2/|| t2||2
……
(m)至第m步,求成分tm= Em-1wm,wm是矩陣Em-1'F0F0'Em-1最大特徵值所對應的單位特徵向量.
如果根據交叉有效性,確定共抽取m個成分t1,…,tm可以得到一個滿意的觀測模型,則求F0在t1,…,tm上的普通最小二乘回歸方程為
F0= t 1r1'+ …+t mrm'+ Fm
偏最小二乘回歸的輔助分析技術
1 精度分析
定義自變數成分th的各種解釋能力如下
(1)th對某自變數xj的解釋能力
(8-1) Rd(xj; th)=r2(xj, th)
(2)th對X的解釋能力
(8-2) Rd(X; th)=[r2(x1, th) + …+ r2(xp, th)]/p
(3)t1,…,tm對X的累計解釋能力
(8-3) Rd(X; t1,…,tm)= Rd(X; t1) + …+ Rd(X; tm)
(4)t1,…,tm對某自變數xj的累計解釋能力
(8-4) Rd(xj; t1,…,tm)= Rd(xj; t1) + …+ Rd(xj; tm)
(5)th對某因變數yk的解釋能力
(8-5) Rd(yk; th)=r2(yk, th)
(6)th對Y的解釋能力
(8-6) Rd(Y; th)=[r2(y1, th) + …+ r2(yq, th)]/q
(7)t1,…,tm對Y的累計解釋能力
(8-7) Rd(Y; t1,…,tm)= Rd(Y; t1) + …+ Rd(Y; tm)
(8)t1,…,tm對某因變數yk的累計解釋能力
(8-8) Rd(yk; t1,…,tm)= Rd(yk; t1) + …+ Rd(yk; tm)
2 自變數x j在解釋因變數集合Y的作用
x j在解釋Y時作用的重要性,可以用變數投影重要性指標VIP j來測度
VIP j 2=p[Rd(Y; t1) w1j2+ …+ Rd(Y; tm) wmj2]/[Rd(Y; t1) + …+ Rd(Y; tm)]
式中,whj是軸wh的第j個分量。注意 VIP1 2+ …+ VIP p2=p
3 特異點的發現
定義第i個樣本點對第h成分th的貢獻率Thi2,用它來發現樣本點集合中的特異點,即
(8-10) Thi2=thi2/((n-1)s h2)
式中,s h2是成分th的方差。
由此,還可以測算樣本點i對成分t1,…,tm的累計貢獻率
(8-11) Ti2= T1i2+ …+ Tmi2

Ti2≥m(n2-1)F0.05(m,n-m)/(n2 (n-m))
時,可以認為在95%的檢驗水平上,樣本點i對成分t1,…,tm的貢獻過大。
單因變數的偏最小二乘回歸模型
1 簡化演算法
第一步 已知數據E0,F0,由於u 1= F0,可得
w1= E0'F0/|| E0'F0||
t 1= E0w1
p1= E0' t 1/|| t 1||2
E1= E0-t 1 p1'
檢驗交叉有效性。若有效,繼續計算;否則只提取一個成分t 1。
第h步(h=2,…,m) 已知數據Eh-1,F0,有
wh= Eh-1'F0/|| Eh-1'F0||
t h= Eh-1wh
ph= Eh-1' t h/|| t h||2
Eh= Eh-1-th ph'
檢驗交叉有效性。若有效,繼續計算h+1步;否則停止求成分的計算。
這時,得到m個成分t1,…,t m,實施F0在t1,…,t m上的回歸,得
F0^= r1t 1+ …+ rmt m
由於t1,…,t m均是E0的線性組合,即
t h= Eh-1wh= E0wh*
所以F0^可寫成E0的線性組合形式,即
F0^= r1 E0w1*+ …+ rm E0wm*= E0[r1 w1*+ …+ rm wm*]
最後,也可以變換成y對x1,…,x p的回歸方程
y^= α0+α1x1+ …+αp xp

㈧ 常規的排序演算法的共同點是什麼

常規的排序演算法的共同點是:
(1)比較;
(2)交換,即通過交換兩個數據之間的位置關系來達到符合要求的次序;
(3)移動,它是交換的變形,也是通過把數據從某一存儲地址換到另外的地址來達到符合要求的次序。
在計算機科學所使用的排序演算法通常被分類為:
(a)計算的復雜度(最差、平均、和最好性能),依據列表(list)的大小(n)。
一般而言,好的性能是O(nlogn),且壞的性能是O(n^2)。對於一個排序理想的性能是O(n)。
而僅使用一個抽象關鍵比較運算的排序演算法總平均上總是至少需要O(nlogn)。
(b)存儲器使用量(空間復雜度)(以及其他電腦資源的使用)
(c)穩定度:穩定的排序演算法會依照相等的關鍵(換言之就是值)維持紀錄的相對次序。
(d)一般的方法:插入、交換、選擇、合並等等。交換排序包含冒泡排序和快速排序。插入排序包含希爾排序,選擇排序包括堆排序等。

㈨ matlab中rd是什麼意思

距雷達的距離及相對於雷達的徑向速度。
rd的演算法:原始數據加上距離向fft,再加上距離向參數導入ifft,之後使用方向位fft對距離徙矯正,加上參數在導入方位ifft,然後生成圖像。

熱點內容
伺服器反查ip 發布:2024-09-29 11:18:18 瀏覽:17
連接oracle資料庫的工具 發布:2024-09-29 11:12:02 瀏覽:253
php系統變數 發布:2024-09-29 11:07:32 瀏覽:343
access資料庫是一個 發布:2024-09-29 11:06:59 瀏覽:509
exe反編譯工具下載 發布:2024-09-29 10:59:03 瀏覽:676
安卓手機開播如何設置 發布:2024-09-29 10:49:58 瀏覽:194
eclipse編譯產生的文件 發布:2024-09-29 10:49:20 瀏覽:931
配置cuda需要什麼顯卡 發布:2024-09-29 10:44:29 瀏覽:607
androidgridview載入 發布:2024-09-29 10:44:16 瀏覽:270
android用戶反饋 發布:2024-09-29 10:36:16 瀏覽:179